Fixed post.published event test suite

refs https://github.com/TryGhost/Toolbox/issues/320

- Updated the test suite to use updated webhookMockReceiver.mock method and corrected previously incorrect snapshot
This commit is contained in:
Naz 2022-05-30 15:53:43 +08:00 committed by naz
parent c30a8b82d1
commit 3c7271ab76
2 changed files with 57 additions and 23 deletions

View File

@ -7,8 +7,8 @@ Object {
"canonical_url": null, "canonical_url": null,
"codeinjection_foot": null, "codeinjection_foot": null,
"codeinjection_head": null, "codeinjection_head": null,
"comment_id": "62905373e751ff5d4a98db0f", "comment_id": StringMatching /\\[a-f0-9\\]\\{24\\}/,
"created_at": "2022-05-27T04:28:35.000Z", "created_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"custom_excerpt": null, "custom_excerpt": null,
"custom_template": null, "custom_template": null,
"email_only": false, "email_only": false,
@ -21,7 +21,7 @@ Object {
"featured": false, "featured": false,
"frontmatter": null, "frontmatter": null,
"html": null, "html": null,
"id": "62905373e751ff5d4a98db0f", "id": StringMatching /\\[a-f0-9\\]\\{24\\}/,
"meta_description": null, "meta_description": null,
"meta_title": null, "meta_title": null,
"mobiledoc": "{\\"version\\":\\"0.3.1\\",\\"ghostVersion\\":\\"4.0\\",\\"markups\\":[],\\"atoms\\":[],\\"cards\\":[],\\"sections\\":[[1,\\"p\\",[[0,[],0,\\"\\"]]]]}", "mobiledoc": "{\\"version\\":\\"0.3.1\\",\\"ghostVersion\\":\\"4.0\\",\\"markups\\":[],\\"atoms\\":[],\\"cards\\":[],\\"sections\\":[[1,\\"p\\",[[0,[],0,\\"\\"]]]]}",
@ -30,35 +30,35 @@ Object {
"og_title": null, "og_title": null,
"plaintext": null, "plaintext": null,
"primary_tag": null, "primary_tag": null,
"published_at": "2022-05-27T04:28:40.000Z", "published_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"slug": "webhookz", "slug": "webhookz",
"status": "published", "status": "published",
"tags": Array [], "tags": Array [],
"tiers": Array [ "tiers": Array [
Object { Object {
"active": true, "active": true,
"created_at": "2022-05-27T04:28:30.000Z", "created_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"description": null, "description": null,
"id": "6290536ee751ff5d4a98d92a", "id": StringMatching /\\[a-f0-9\\]\\{24\\}/,
"monthly_price_id": null, "monthly_price_id": null,
"name": "Default Product", "name": "Default Product",
"slug": "default-product", "slug": "default-product",
"type": "paid", "type": "paid",
"updated_at": "2022-05-27T04:28:30.000Z", "updated_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"visibility": "public", "visibility": "public",
"welcome_page_url": null, "welcome_page_url": null,
"yearly_price_id": null, "yearly_price_id": null,
}, },
Object { Object {
"active": true, "active": true,
"created_at": "2022-05-27T04:28:30.000Z", "created_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"description": null, "description": null,
"id": "6290536ee751ff5d4a98d92b", "id": StringMatching /\\[a-f0-9\\]\\{24\\}/,
"monthly_price_id": null, "monthly_price_id": null,
"name": "Free", "name": "Free",
"slug": "free", "slug": "free",
"type": "free", "type": "free",
"updated_at": "2022-05-27T04:28:30.000Z", "updated_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"visibility": "public", "visibility": "public",
"welcome_page_url": null, "welcome_page_url": null,
"yearly_price_id": null, "yearly_price_id": null,
@ -68,9 +68,9 @@ Object {
"twitter_description": null, "twitter_description": null,
"twitter_image": null, "twitter_image": null,
"twitter_title": null, "twitter_title": null,
"updated_at": "2022-05-27T04:28:40.000Z", "updated_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"url": "http://127.0.0.1:2369/404/", "url": "http://127.0.0.1:2369/404/",
"uuid": "e3e0900e-2d00-463f-b83f-c8fa44bea3ae", "uuid": StringMatching /\\[a-f0-9\\]\\{8\\}-\\[a-f0-9\\]\\{4\\}-\\[a-f0-9\\]\\{4\\}-\\[a-f0-9\\]\\{4\\}-\\[a-f0-9\\]\\{12\\}/,
"visibility": "public", "visibility": "public",
}, },
"previous": Object { "previous": Object {
@ -79,34 +79,34 @@ Object {
"tiers": Array [ "tiers": Array [
Object { Object {
"active": true, "active": true,
"created_at": "2022-05-27T04:28:30.000Z", "created_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"description": null, "description": null,
"id": "6290536ee751ff5d4a98d92a", "id": StringMatching /\\[a-f0-9\\]\\{24\\}/,
"monthly_price_id": null, "monthly_price_id": null,
"name": "Default Product", "name": "Default Product",
"slug": "default-product", "slug": "default-product",
"type": "paid", "type": "paid",
"updated_at": "2022-05-27T04:28:30.000Z", "updated_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"visibility": "public", "visibility": "public",
"welcome_page_url": null, "welcome_page_url": null,
"yearly_price_id": null, "yearly_price_id": null,
}, },
Object { Object {
"active": true, "active": true,
"created_at": "2022-05-27T04:28:30.000Z", "created_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"description": null, "description": null,
"id": "6290536ee751ff5d4a98d92b", "id": StringMatching /\\[a-f0-9\\]\\{24\\}/,
"monthly_price_id": null, "monthly_price_id": null,
"name": "Free", "name": "Free",
"slug": "free", "slug": "free",
"type": "free", "type": "free",
"updated_at": "2022-05-27T04:28:30.000Z", "updated_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
"visibility": "public", "visibility": "public",
"welcome_page_url": null, "welcome_page_url": null,
"yearly_price_id": null, "yearly_price_id": null,
}, },
], ],
"updated_at": "2022-05-27T04:28:35.000Z", "updated_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/,
}, },
}, },
} }

View File

@ -1,4 +1,30 @@
const {agentProvider, mockManager, fixtureManager} = require('../utils/e2e-framework'); const {agentProvider, mockManager, fixtureManager, matchers} = require('../utils/e2e-framework');
const {anyObjectId, anyISODateTime, anyUuid} = matchers;
const tierSnapshot = {
id: anyObjectId,
created_at: anyISODateTime,
updated_at: anyISODateTime
};
const buildPostSnapshotWithTiers = ({tiersCount}) => {
return {
id: anyObjectId,
uuid: anyUuid,
comment_id: anyObjectId,
published_at: anyISODateTime,
created_at: anyISODateTime,
updated_at: anyISODateTime,
tiers: new Array(tiersCount).fill(tierSnapshot)
};
};
const buildPreviousPostSnapshotWithTiers = ({tiersCount}) => {
return {
updated_at: anyISODateTime,
tiers: new Array(tiersCount).fill(tierSnapshot)
};
};
describe('post.* events', function () { describe('post.* events', function () {
let adminAPIAgent; let adminAPIAgent;
@ -19,10 +45,11 @@ describe('post.* events', function () {
}); });
it('post.published even is triggered', async function () { it('post.published even is triggered', async function () {
await webhookMockReceiver.mock('post.published'); const webhookURL = 'https://test-webhook-receiver.com/post-published/';
await webhookMockReceiver.mock(webhookURL);
await fixtureManager.insertWebhook({ await fixtureManager.insertWebhook({
event: 'post.published', event: 'post.published',
url: 'https://test-webhook-receiver.com/webhook' url: webhookURL
}); });
const res = await adminAPIAgent const res = await adminAPIAgent
@ -47,6 +74,13 @@ describe('post.* events', function () {
.expectStatus(200); .expectStatus(200);
await webhookMockReceiver await webhookMockReceiver
.matchBodySnapshot(); // TODO: implement header matching feature next!
// .matchHeaderSnapshot();
.matchBodySnapshot({
post: {
current: buildPostSnapshotWithTiers({tiersCount: 2}),
previous: buildPreviousPostSnapshotWithTiers({tiersCount: 2})
}
});
}); });
}); });