TwoToc code
[YouAndWeb_TwoToc] / e2e / account / signup / signup.spec.js
diff --git a/e2e/account/signup/signup.spec.js b/e2e/account/signup/signup.spec.js
new file mode 100755 (executable)
index 0000000..54beb0f
--- /dev/null
@@ -0,0 +1,62 @@
+'use strict';
+
+var config = browser.params;
+var UserModel = require(config.serverConfig.root + '/server/api/user/user.model');
+
+describe('Signup View', function() {
+  var page;
+
+  var loadPage = function() {
+    browser.manage().deleteAllCookies();
+    browser.get(config.baseUrl + '/signup');
+    page = require('./signup.po');
+  };
+
+  var testUser = {
+    name: 'Test',
+    email: 'test@example.com',
+    password: 'test'
+  };
+
+  beforeEach(function() {
+    loadPage();
+  });
+
+  it('should include signup form with correct inputs and submit button', function() {
+    expect(page.form.name.getAttribute('type')).toBe('text');
+    expect(page.form.name.getAttribute('name')).toBe('name');
+    expect(page.form.email.getAttribute('type')).toBe('email');
+    expect(page.form.email.getAttribute('name')).toBe('email');
+    expect(page.form.password.getAttribute('type')).toBe('password');
+    expect(page.form.password.getAttribute('name')).toBe('password');
+    expect(page.form.submit.getAttribute('type')).toBe('submit');
+    expect(page.form.submit.getText()).toBe('Sign up');
+  });
+
+  describe('with local auth', function() {
+
+    beforeAll(function(done) {
+      UserModel.removeAsync().then(done);
+    });
+
+    it('should signup a new user, log them in, and redirecting to "/"', function() {
+      page.signup(testUser);
+
+      var navbar = require('../../components/navbar/navbar.po');
+
+      expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/');
+      expect(navbar.navbarAccountGreeting.getText()).toBe('Hello ' + testUser.name);
+    });
+
+    it('should indicate signup failures', function() {
+      page.signup(testUser);
+
+      expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/signup');
+      expect(page.form.email.getAttribute('class')).toContain('ng-invalid-mongoose');
+
+      var helpBlock = page.form.element(by.css('.form-group.has-error .help-block.ng-binding'));
+      expect(helpBlock.getText()).toBe('The specified email address is already in use.');
+    });
+
+  });
+});