Fixed tests partially for updated member counts

no issue

Also moves some reused test methods to the test helpers folder (wasn't able to move it to the fixtures because too many tests were failing):
- enableNewsletters helper
- enableStripe helper
- enableMailgun helper
This commit is contained in:
Simon Backx 2022-04-21 15:48:25 +02:00 committed by Matt Hanley
parent 4fbeb6bd06
commit eb5d82c0ef
8 changed files with 58 additions and 47 deletions

View File

@ -1,5 +1,5 @@
<div class="gh-publishmenu-send-to-option">
<p>Free members <span class="gh-publishmenu-emailcount">{{this.freeMemberCountLabel}}</span></p>
<p>Free members <span class="gh-publishmenu-emailcount" data-test-email-count="free-members">{{this.freeMemberCountLabel}}</span></p>
<div class="for-switch x-small {{if @disabled "disabled"}}">
<label class="switch" for="send-email-to-free">
<input
@ -18,7 +18,7 @@
</div>
{{#if this.isPaidAvailable}}
<div class="gh-publishmenu-send-to-option">
<p>Paid members <span class="gh-publishmenu-emailcount">{{this.paidMemberCountLabel}}</span></p>
<p>Paid members <span class="gh-publishmenu-emailcount" data-test-email-count="paid-members">{{this.paidMemberCountLabel}}</span></p>
<div class="for-switch x-small {{if @disabled "disabled"}}">
<label class="switch" for="send-email-to-paid">
<input

View File

@ -97,7 +97,7 @@ export default function mockMembers(server) {
});
// similar deal for associated models
['labels', 'products', 'subscriptions'].forEach((association) => {
['labels', 'products', 'subscriptions', 'newsletters'].forEach((association) => {
serializedMember[association] = [];
member[association].models.forEach((associatedModel) => {

View File

@ -6,11 +6,14 @@ import {authenticateSession, invalidateSession} from 'ember-simple-auth/test-sup
import {beforeEach, describe, it} from 'mocha';
import {blur, click, currentRouteName, currentURL, fillIn, find, findAll, triggerEvent} from '@ember/test-helpers';
import {datepickerSelect} from 'ember-power-datepicker/test-support';
import {enableMailgun} from '../helpers/mailgun';
import {enableNewsletters} from '../helpers/newsletters';
import {expect} from 'chai';
import {selectChoose} from 'ember-power-select/test-support';
import {setupApplicationTest} from 'ember-mocha';
import {setupMirage} from 'ember-cli-mirage/test-support';
import {visit} from '../helpers/visit';
import { enableStripe } from '../helpers/stripe';
// TODO: update ember-power-datepicker to expose modern test helpers
// https://github.com/cibernox/ember-power-datepicker/issues/30
@ -841,7 +844,7 @@ describe('Acceptance: Editor', function () {
beforeEach(async function () {
const role = this.server.create('role', {name: 'Administrator'});
user = this.server.create('user', {roles: [role]});
this.server.loadFixtures('settings');
return await authenticateSession();
});
@ -866,24 +869,16 @@ describe('Acceptance: Editor', function () {
// BUG: re-scheduling a send-only post unexpectedly switched to publish+send
// https://github.com/TryGhost/Ghost/issues/14354
it('can re-schedule an email-only post', async function () {
// enable email functionality
this.server.db.settings.find({key: 'mailgun_api_key'})
? this.server.db.settings.update({key: 'mailgun_api_key'}, {value: 'MAILGUN_API_KEY'})
: this.server.create('setting', {key: 'mailgun_api_key', value: 'MAILGUN_API_KEY', group: 'email'});
// Enable newsletters (extra confirmation step)
enableMailgun(this.server);
enableNewsletters(this.server, true);
this.server.db.settings.find({key: 'mailgun_domain'})
? this.server.db.settings.update({key: 'mailgun_domain'}, {value: 'MAILGUN_DOMAIN'})
: this.server.create('setting', {key: 'mailgun_domain', value: 'MAILGUN_DOMAIN', group: 'email'});
// Enable stripe to also show paid members breakdown
enableStripe(this.server);
this.server.db.settings.find({key: 'mailgun_base_url'})
? this.server.db.settings.update({key: 'mailgun_base_url'}, {value: 'MAILGUN_BASE_URL'})
: this.server.create('setting', {key: 'mailgun_base_url', value: 'MAILGUN_BASE_URL', group: 'email'});
this.server.db.settings.find({key: 'editor_default_email_recipients'})
? this.server.db.settings.update({key: 'editor_default_email_recipients'}, {value: 'visibility'})
: this.server.create('setting', {key: 'editor_default_email_recipients', value: 'visibility', group: 'editor'});
this.server.createList('member', 4);
const newsletter = this.server.create('newsletter', {status: 'active'});
this.server.createList('member', 4, {status: 'free', newsletters: [newsletter]});
this.server.createList('member', 2, {status: 'paid', newsletters: [newsletter]});
const post = this.server.create('post', {status: 'draft', authors: [user]});
@ -894,6 +889,11 @@ describe('Acceptance: Editor', function () {
await selectChoose('[data-test-distribution-action-select]', 'send');
await click('[data-test-publishmenu-scheduled-option]');
await datepickerSelect('[data-test-publishmenu-draft] [data-test-date-time-picker-datepicker]', new Date(scheduledTime.format().replace(/\+.*$/, '')));
// Expect 4 free and 2 paid recipients here
expect(find('[data-test-email-count="free-members"]')).to.contain.text('4');
expect(find('[data-test-email-count="paid-members"]')).to.contain.text('2');
await click('[data-test-publishmenu-save]');
await click('[data-test-button="confirm-schedule"]');

View File

@ -1,6 +1,8 @@
import {authenticateSession} from 'ember-simple-auth/test-support';
import {click, currentURL, find, findAll} from '@ember/test-helpers';
import {enableLabsFlag} from '../../helpers/labs-flag';
import {enableNewsletters} from '../../helpers/newsletters';
import {enableStripe} from '../../helpers/stripe';
import {expect} from 'chai';
import {setupApplicationTest} from 'ember-mocha';
import {setupMirage} from 'ember-cli-mirage/test-support';
@ -20,22 +22,8 @@ describe('Acceptance: Member details', function () {
enableLabsFlag(this.server, 'membersTimeFilters');
enableLabsFlag(this.server, 'multipleProducts');
// test with stripe connected and email turned on
// TODO: add these settings to default fixtures
this.server.db.settings.find({key: 'stripe_connect_account_id'})
? this.server.db.settings.update({key: 'stripe_connect_account_id'}, {value: 'stripe_account_id'})
: this.server.create('setting', {key: 'stripe_connect_account_id', value: 'stripe_account_id', group: 'members'});
// needed for membersUtils.isStripeEnabled
this.server.db.settings.find({key: 'stripe_connect_secret_key'})
? this.server.db.settings.update({key: 'stripe_connect_secret_key'}, {value: 'stripe_secret_key'})
: this.server.create('setting', {key: 'stripe_connect_secret_key', value: 'stripe_secret_key', group: 'members'});
this.server.db.settings.find({key: 'stripe_connect_publishable_key'})
? this.server.db.settings.update({key: 'stripe_connect_publishable_key'}, {value: 'stripe_secret_key'})
: this.server.create('setting', {key: 'stripe_connect_publishable_key', value: 'stripe_secret_key', group: 'members'});
this.server.db.settings.find({key: 'editor_default_email_recipients'})
? this.server.db.settings.update({key: 'editor_default_email_recipients'}, {value: 'visibility'})
: this.server.create('setting', {key: 'editor_default_email_recipients', value: 'visibility', group: 'editor'});
enableStripe(this.server);
enableNewsletters(this.server, true);
// add a default product that complimentary plans can be assigned to
product = this.server.create('product', {

View File

@ -3,7 +3,8 @@ import sinon from 'sinon';
import {authenticateSession} from 'ember-simple-auth/test-support';
import {blur, click, currentURL, fillIn, find, findAll, focus} from '@ember/test-helpers';
import {datepickerSelect} from 'ember-power-datepicker/test-support';
import {enableLabsFlag} from '../../helpers/labs-flag';
import {enableNewsletters} from '../../helpers/newsletters';
import {enableStripe} from '../../helpers/stripe';
import {expect} from 'chai';
import {selectChoose} from 'ember-power-select/test-support/helpers';
import {setupApplicationTest} from 'ember-mocha';
@ -19,17 +20,9 @@ describe('Acceptance: Members filtering', function () {
beforeEach(async function () {
this.server.loadFixtures('configs');
this.server.loadFixtures('settings');
enableLabsFlag(this.server, 'multipleProducts');
enableStripe(this.server);
enableNewsletters(this.server, true);
// test with stripe connected and email turned on
// TODO: add these settings to default fixtures
this.server.db.settings.find({key: 'stripe_connect_account_id'})
? this.server.db.settings.update({key: 'stripe_connect_account_id'}, {value: 'stripe_connected'})
: this.server.create('setting', {key: 'stripe_connect_account_id', value: 'stripe_connected', group: 'members'});
this.server.db.settings.find({key: 'editor_default_email_recipients'})
? this.server.db.settings.update({key: 'editor_default_email_recipients'}, {value: 'visibility'})
: this.server.create('setting', {key: 'editor_default_email_recipients', value: 'visibility', group: 'editor'});
let role = this.server.create('role', {name: 'Owner'});
this.server.create('user', {roles: [role]});

13
tests/helpers/mailgun.js Normal file
View File

@ -0,0 +1,13 @@
export function enableMailgun(server) {
server.db.settings.find({key: 'mailgun_api_key'})
? server.db.settings.update({key: 'mailgun_api_key'}, {value: 'MAILGUN_API_KEY'})
: server.create('setting', {key: 'mailgun_api_key', value: 'MAILGUN_API_KEY', group: 'email'});
server.db.settings.find({key: 'mailgun_domain'})
? server.db.settings.update({key: 'mailgun_domain'}, {value: 'MAILGUN_DOMAIN'})
: server.create('setting', {key: 'mailgun_domain', value: 'MAILGUN_DOMAIN', group: 'email'});
server.db.settings.find({key: 'mailgun_base_url'})
? server.db.settings.update({key: 'mailgun_base_url'}, {value: 'MAILGUN_BASE_URL'})
: server.create('setting', {key: 'mailgun_base_url', value: 'MAILGUN_BASE_URL', group: 'email'});
}

View File

@ -0,0 +1,5 @@
export function enableNewsletters(server, enabled) {
server.db.settings.find({key: 'editor_default_email_recipients'})
? server.db.settings.update({key: 'editor_default_email_recipients'}, {value: enabled ? 'visibility' : 'disabled'})
: server.create('setting', {key: 'editor_default_email_recipients', value: enabled ? 'visibility' : 'disabled', group: 'editor'});
}

12
tests/helpers/stripe.js Normal file
View File

@ -0,0 +1,12 @@
export function enableStripe(server) {
server.db.settings.find({key: 'stripe_connect_account_id'})
? server.db.settings.update({key: 'stripe_connect_account_id'}, {value: 'stripe_account_id'})
: server.create('setting', {key: 'stripe_connect_account_id', value: 'stripe_account_id', group: 'members'});
// needed for membersUtils.isStripeEnabled
server.db.settings.find({key: 'stripe_connect_secret_key'})
? server.db.settings.update({key: 'stripe_connect_secret_key'}, {value: 'stripe_secret_key'})
: server.create('setting', {key: 'stripe_connect_secret_key', value: 'stripe_secret_key', group: 'members'});
server.db.settings.find({key: 'stripe_connect_publishable_key'})
? server.db.settings.update({key: 'stripe_connect_publishable_key'}, {value: 'stripe_secret_key'})
: server.create('setting', {key: 'stripe_connect_publishable_key', value: 'stripe_secret_key', group: 'members'});
}