jonpitch/danger-brewing

View on GitHub
tests/integration/components/login-form-test.js

Summary

Maintainability
A
50 mins
Test Coverage
import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
import page from 'danger-brewing/tests/pages/login';

moduleForComponent('hub-status', 'Integration | Component | login form', {
  integration: true,
  beforeEach() {
    page.setContext(this);
  },
  afterEach() {
    page.removeContext();
  }
});

test('it renders', function(assert) {
  page.render(hbs`{{login-form}}`);
  assert.ok(page.form.isVisible, 'see login form');
  assert.ok(page.form.email.input.isVisible, 'can enter email');
  assert.ok(page.form.password.input.isVisible, 'can enter password');
  assert.ok(page.form.submit.isVisible, 'see submit button');
  assert.notOk(page.form.isLoading, 'form not "loading"');
});

test('validation - all', function(assert) {
  page.render(hbs`{{login-form}}`);
  page.form.submit.click();
  assert.ok(page.form.email.input.hasError, 'email has error state');
  assert.equal(page.form.email.errors, 2, 'email correct # of errors');
  assert.ok(page.form.password.input.hasError, 'password has error state');
  assert.equal(page.form.password.errors, 2, 'password correct # of errors');
});

test('validation - email', function(assert) {
  page.render(hbs`{{login-form}}`);
  page.form.password.input.fillIn('somevalidpassword');
  page.form.submit.click();
  assert.ok(page.form.email.input.hasError, 'email has error state');
  assert.equal(page.form.email.errors, 2, 'email correct # of errors');
  assert.notOk(page.form.password.input.hasError, 'password does not have error state');
  assert.equal(page.form.password.errors, 0, 'password correct # of errors');

  page.form.email.input.fillIn('bad@email');
  page.form.submit.click();
  assert.ok(page.form.email.input.hasError, 'email has error state');
  assert.equal(page.form.email.errors, 1, 'email correct # of errors');
  assert.notOk(page.form.password.input.hasError, 'password does not have error state');
  assert.equal(page.form.password.errors, 0, 'password correct # of errors');
});

test('validation - password', function(assert) {
  page.render(hbs`{{login-form}}`);
  page.form.email.input.fillIn('hugh.mann@internet.com');
  page.form.submit.click();
  assert.notOk(page.form.email.input.hasError, 'email has error state');
  assert.equal(page.form.email.errors, 0, 'email correct # of errors');
  assert.ok(page.form.password.input.hasError, 'password has error state');
  assert.equal(page.form.password.errors, 2, 'password correct # of errors');
});