update tests for HTML changes

This commit is contained in:
Kevin Ansfield 2017-02-17 09:59:57 +00:00
parent 51cdd60b3e
commit d12a9901fb
9 changed files with 51 additions and 48 deletions

View File

@ -1,5 +1,5 @@
<div class="apps-grid-cell">
{{#link-to 'team.user' user.slug}}
{{#link-to 'team.user' user.slug data-test-user-id=user.id}}
<article class="apps-card-app">
<div class="apps-card-left">
<span class="user-list-item-figure" style={{component.userImageBackground}}>
@ -14,7 +14,7 @@
<div class="apps-configured">
{{#unless session.user.isAuthor}}
{{#each user.roles as |role|}}
<span class="gh-badge {{role.lowerCaseName}}">{{role.name}}</span>
<span class="gh-badge {{role.lowerCaseName}}" data-test-role-name>{{role.name}}</span>
{{/each}}
{{/unless}}
<i class="icon-arrow-right"></i>

View File

@ -2,7 +2,7 @@
<header class="gh-canvas-header">
<h2 class="gh-canvas-title">Code injection</h2>
<section class="view-actions">
{{#gh-spin-button class="gh-btn gh-btn-blue" action="save" submitting=submitting}}<span>Save</span>{{/gh-spin-button}}
{{#gh-spin-button class="gh-btn gh-btn-blue" action="save" submitting=submitting data-test-save-button=true}}<span>Save</span>{{/gh-spin-button}}
</section>
</header>

View File

@ -2,7 +2,7 @@
<header class="gh-canvas-header">
<h2 class="gh-canvas-title">General</h2>
<section class="view-actions">
{{#gh-spin-button class="gh-btn gh-btn-blue" action="save" submitting=submitting}}<span>Save</span>{{/gh-spin-button}}
{{#gh-spin-button class="gh-btn gh-btn-blue" action="save" submitting=submitting data-test-save-button=true}}<span>Save</span>{{/gh-spin-button}}
</section>
</header>

View File

@ -1,6 +1,6 @@
<section class="gh-canvas">
<header class="gh-canvas-header">
<h2 class="gh-canvas-title">Subscribers <span style="font-weight:200;margin-left:10px;display:inline-block;"> ({{total}})</span></h2>
<h2 class="gh-canvas-title">Subscribers <span style="font-weight:200;margin-left:10px;display:inline-block;" data-test-total-subscribers> ({{total}})</span></h2>
<div class="view-actions">
{{#link-to "subscribers.import" class="gh-btn gh-btn-hover-green"}}<span>Import CSV</span>{{/link-to}}
<a {{action 'exportData'}} class="gh-btn"><span>Export CSV</span></a>

View File

@ -31,12 +31,12 @@
{{#each sortedInvites as |invite|}}
{{#gh-user-invited invite=invite reload="reload" as |component|}}
<div class="apps-grid-cell">
<div class="apps-grid-cell" data-test-invite-id="{{invite.id}}">
<article class="apps-card-app">
<div class="apps-card-left">
<span class="user-list-item-icon icon-mail">ic</span>
<div class="apps-card-meta">
<h3 class="apps-card-app-title">{{invite.email}}</h3>
<h3 class="apps-card-app-title" data-test-email>{{invite.email}}</h3>
<p class="apps-card-app-desc">
{{#if invite.pending}}
<span class="description-error">
@ -56,14 +56,14 @@
{{#if component.isSending}}
<span>Sending Invite...</span>
{{else}}
<a class="user-list-action" href="#revoke" {{action "revoke" target=component}}>
<a class="user-list-action" href="#revoke" {{action "revoke" target=component}} data-test-revoke-button>
Revoke
</a>
<a class="user-list-action" href="#resend" {{action "resend" target=component}}>
<a class="user-list-action" href="#resend" {{action "resend" target=component}} data-test-resend-button>
Resend
</a>
<span class="gh-badge {{invite.role.lowerCaseName}}">{{invite.role.name}}</span>
<span class="gh-badge {{invite.role.lowerCaseName}}" data-test-role-name>{{invite.role.name}}</span>
{{/if}}
</div>
</div>

View File

@ -10,6 +10,7 @@ import $ from 'jquery';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import testSelector from 'ember-test-selectors';
describe('Acceptance: Settings - Code-Injection', function() {
let application;
@ -77,7 +78,7 @@ describe('Acceptance: Settings - Code-Injection', function() {
expect($('.gh-nav-settings-code-injection').hasClass('active'), 'highlights nav menu item')
.to.be.true;
expect(find('.view-header .view-actions .gh-btn-blue').text().trim(), 'save button text').to.equal('Save');
expect(find(testSelector('save-button')).text().trim(), 'save button text').to.equal('Save');
expect(find('#ghost-head .CodeMirror').length, 'ghost head codemirror element').to.equal(1);
expect($('#ghost-head .CodeMirror').hasClass('cm-s-xq-light'), 'ghost head editor theme').to.be.true;

View File

@ -80,7 +80,7 @@ describe('Acceptance: Settings - General', function () {
expect($('.gh-nav-settings-general').hasClass('active'), 'highlights nav menu item')
.to.be.true;
expect(find('.view-header .view-actions .gh-btn-blue').text().trim(), 'save button text').to.equal('Save');
expect(find(testSelector('save-button')).text().trim(), 'save button text').to.equal('Save');
// initial postsPerPage should be 5
expect(find('input#postsPerPage').val(), 'post per page value').to.equal('5');
@ -89,7 +89,7 @@ describe('Acceptance: Settings - General', function () {
});
fillIn('#settings-general input[name="general[title]"]', 'New Blog Title');
click('.view-header .gh-btn.gh-btn-blue');
click(testSelector('save-button'));
andThen(() => {
expect(document.title, 'page title').to.equal('Settings - General - New Blog Title');
@ -160,7 +160,7 @@ describe('Acceptance: Settings - General', function () {
});
triggerEvent('#activeTimezone', 'change');
click('.view-header .gh-btn.gh-btn-blue');
click(testSelector('save-button'));
andThen(() => {
expect(find('#activeTimezone option:selected').text().trim()).to.equal('(GMT +2:00) Cairo, Egypt');

View File

@ -9,6 +9,7 @@ import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import testSelector from 'ember-test-selectors';
describe('Acceptance: Subscribers', function() {
let application;
@ -86,8 +87,8 @@ describe('Acceptance: Subscribers', function() {
.to.equal(30);
// it shows the total number of subscribers
expect(find('#total-subscribers').text().trim(), 'displayed subscribers total')
.to.equal('40');
expect(find(testSelector('total-subscribers')).text().trim(), 'displayed subscribers total')
.to.equal('(40)');
// it defaults to sorting by created_at desc
let [lastRequest] = server.pretender.handledRequests.slice(-1);
@ -169,8 +170,8 @@ describe('Acceptance: Subscribers', function() {
// .to.equal(0);
// the subscriber total is updated
expect(find('#total-subscribers').text().trim(), 'subscribers total after addition')
.to.equal('41');
expect(find(testSelector('total-subscribers')).text().trim(), 'subscribers total after addition')
.to.equal('(41)');
});
// saving a duplicate subscriber
@ -188,8 +189,8 @@ describe('Acceptance: Subscribers', function() {
.to.equal(1);
// the subscriber total is unchanged
expect(find('#total-subscribers').text().trim(), 'subscribers total after failed add')
.to.equal('41');
expect(find(testSelector('total-subscribers')).text().trim(), 'subscribers total after failed add')
.to.equal('(41)');
});
// deleting a subscriber
@ -224,8 +225,8 @@ describe('Acceptance: Subscribers', function() {
.to.not.equal('test@example.com');
// the subscriber total is updated
expect(find('#total-subscribers').text().trim(), 'subscribers total after addition')
.to.equal('40');
expect(find(testSelector('total-subscribers')).text().trim(), 'subscribers total after addition')
.to.equal('(40)');
});
// click the import subscribers button
@ -261,8 +262,8 @@ describe('Acceptance: Subscribers', function() {
.to.equal('Close');
// subscriber total is updated
expect(find('#total-subscribers').text().trim(), 'subscribers total after import')
.to.equal('90');
expect(find(testSelector('total-subscribers')).text().trim(), 'subscribers total after import')
.to.equal('(90)');
// table is reset
let [lastRequest] = server.pretender.handledRequests.slice(-1);

View File

@ -12,6 +12,7 @@ import {invalidateSession, authenticateSession} from '../helpers/ember-simple-au
import {errorOverride, errorReset} from '../helpers/adapter-error';
import {enableGhostOAuth} from '../helpers/configuration';
import {Response} from 'ember-cli-mirage';
import testSelector from 'ember-test-selectors';
describe('Acceptance: Team', function () {
let application;
@ -87,10 +88,10 @@ describe('Acceptance: Team', function () {
expect(document.title, 'page title').to.equal('Team - Test Blog');
// it shows 3 users in list (includes currently logged in user)
expect(find('.user-list .user-list-item').length, 'user list count')
expect(find(testSelector('user-id')).length, 'user list count')
.to.equal(3);
click('.user-list-item:last');
click(testSelector('user-id', user2.id));
andThen(() => {
// url is correct
@ -125,18 +126,18 @@ describe('Acceptance: Team', function () {
// existing users are listed
expect(
find('.user-list.active-users .user-list-item').length,
find(testSelector('user-id')).length,
'initial number of active users'
).to.equal(1);
expect(
find('.user-list.active-users .user-list-item:first-of-type .role-label').text().trim(),
find(testSelector('user-id', '1')).find(testSelector('role-name')).text().trim(),
'active user\'s role label'
).to.equal('Administrator');
// no invites are shown
expect(
find('.user-list.invited-users .user-list-item').length,
find(testSelector('invite-id')).length,
'initial number of invited users'
).to.equal(0);
});
@ -194,23 +195,23 @@ describe('Acceptance: Team', function () {
// invite is displayed, has correct e-mail + role
expect(
find('.invited-users .user-list-item').length,
find(testSelector('invite-id')).length,
'number of invites after first invite'
).to.equal(1);
expect(
find('.invited-users span.name').first().text().trim(),
find(testSelector('invite-id', '1')).find(testSelector('email')).text().trim(),
'displayed email of first invite'
).to.equal('invite1@example.com');
expect(
find('.invited-users span.role-label').first().text().trim(),
find(testSelector('invite-id', '1')).find(testSelector('role-name')).text().trim(),
'displayed role of first invite'
).to.equal('Author');
// number of users is unchanged
expect(
find('.active-users .user-list-item').length,
find(testSelector('user-id')).length,
'number of active users after first invite'
).to.equal(1);
});
@ -224,18 +225,18 @@ describe('Acceptance: Team', function () {
andThen(() => {
// number of invites increases
expect(
find('.invited-users .user-list-item').length,
find(testSelector('invite-id')).length,
'number of invites after second invite'
).to.equal(2);
// invite has correct e-mail + role
expect(
find('.invited-users span.name').last().text().trim(),
find(testSelector('invite-id', '2')).find(testSelector('email')).text().trim(),
'displayed email of second invite'
).to.equal('invite2@example.com');
expect(
find('.invited-users span.role-label').last().text().trim(),
find(testSelector('invite-id', '2')).find(testSelector('role-name')).text().trim(),
'displayed role of second invite'
).to.equal('Editor');
});
@ -279,12 +280,12 @@ describe('Acceptance: Team', function () {
click('.fullscreen-modal a.close');
// revoke latest invite
click('.invited-users .user-list-item:last-of-type a[href="#revoke"]');
click(`${testSelector('invite-id', '2')} ${testSelector('revoke-button')}`);
andThen(() => {
// number of invites decreases
expect(
find('.invited-users .user-list-item').length,
find(testSelector('invite-id')).length,
'number of invites after revoke'
).to.equal(1);
@ -296,7 +297,7 @@ describe('Acceptance: Team', function () {
// correct invite is removed
expect(
find('.invited-users span.name').text().trim(),
find(testSelector('invite-id')).find(testSelector('email')).text().trim(),
'displayed email of remaining invite'
).to.equal('invite1@example.com');
});
@ -309,13 +310,13 @@ describe('Acceptance: Team', function () {
andThen(() => {
// new invite should be last in the list
expect(
find('.invited-users span.name').last().text().trim(),
find(`${testSelector('invite-id')}:last`).find(testSelector('email')).text().trim(),
'last invite email in list'
).to.equal('invite3@example.com');
});
// resend first invite
click('.invited-users .user-list-item:first-of-type a[href="#resend"]');
click(`${testSelector('invite-id', '1')} ${testSelector('resend-button')}`);
andThen(() => {
// notification is displayed
@ -326,19 +327,19 @@ describe('Acceptance: Team', function () {
// first invite is still at the top
expect(
find('.invited-users span.name').first().text().trim(),
find(`${testSelector('invite-id')}:first-of-type`).find(testSelector('email')).text().trim(),
'first invite email in list'
).to.equal('invite1@example.com');
});
// regression test: can revoke a resent invite
click('.invited-users .user-list-item:first-of-type a[href="#resend"]');
click('.invited-users .user-list-item:first-of-type a[href="#revoke"]');
click(`${testSelector('invite-id')}:first-of-type ${testSelector('resend-button')}`);
click(`${testSelector('invite-id')}:first-of-type ${testSelector('revoke-button')}`);
andThen(() => {
// number of invites decreases
expect(
find('.invited-users .user-list-item').length,
find(testSelector('invite-id')).length,
'number of invites after resend/revoke'
).to.equal(1);
@ -358,7 +359,7 @@ describe('Acceptance: Team', function () {
user2.posts = [post];
visit('/team');
click(`a.user-list-item:contains("${user1.name}")`);
click(testSelector('user-id', user1.id));
// user deletion displays modal
click('button.delete');
@ -386,7 +387,7 @@ describe('Acceptance: Team', function () {
// deleting a user with posts
visit('/team');
click(`a.user-list-item:contains("${user2.name}")`);
click(testSelector('user-id', user2.id));
click('button.delete');
andThen(() => {
@ -404,7 +405,7 @@ describe('Acceptance: Team', function () {
// deleted user is not in list
expect(
find(`.user-list-item .name:contains("${user2.name}")`).length,
find(testSelector('user-id', user2.id)).length,
'deleted user is not in user list after deletion'
).to.equal(0);
});