import { componentTest } from 'wizard/test/helpers/component-test'; moduleForComponent('invite-list', { integration: true }); componentTest('can add users', { template: `{{invite-list field=field}}`, setup() { this.set('field', {}); }, test(assert) { assert.ok(this.$('.users-list .invite-list-user').length === 0, 'no users at first'); assert.ok(this.$('.new-user .invalid').length === 0, 'not invalid at first'); const firstVal = JSON.parse(this.get('field.value')); assert.equal(firstVal.length, 0, 'empty JSON at first'); assert.ok(this.get('field.warning'), 'it has a warning since no users were added'); click('.add-user'); andThen(() => { assert.ok(this.$('.users-list .invite-list-user').length === 0, "doesn't add a blank user"); assert.ok(this.$('.new-user .invalid').length === 1); }); fillIn('.invite-email', 'eviltrout@example.com'); click('.add-user'); andThen(() => { assert.ok(this.$('.users-list .invite-list-user').length === 1, 'adds the user'); assert.ok(this.$('.new-user .invalid').length === 0); const val = JSON.parse(this.get('field.value')); assert.equal(val.length, 1); assert.equal(val[0].email, 'eviltrout@example.com', 'adds the email to the JSON'); assert.ok(val[0].role.length, 'adds the role to the JSON'); assert.ok(!this.get('field.warning'), 'no warning once the user is added'); }); fillIn('.invite-email', 'eviltrout@example.com'); click('.add-user'); andThen(() => { assert.ok(this.$('.users-list .invite-list-user').length === 1, "can't add the same user twice"); assert.ok(this.$('.new-user .invalid').length === 1); }); fillIn('.invite-email', 'not-an-email'); click('.add-user'); andThen(() => { assert.ok(this.$('.users-list .invite-list-user').length === 1, "won't add an invalid email"); assert.ok(this.$('.new-user .invalid').length === 1); }); click('.invite-list .invite-list-user:eq(0) .remove-user'); andThen(() => { assert.ok(this.$('.users-list .invite-list-user').length === 0, 'removed the user'); }); } });