Skip to content

Commit a826017

Browse files
committed
add "create with explicit ID" tests on field, fieldset, item, itemType, itemTypeFilters, menuItem, plugin, upload, uploadFilters and workflow
1 parent 440e24c commit a826017

File tree

13 files changed

+240
-0
lines changed

13 files changed

+240
-0
lines changed

packages/cma-client-node/__tests__/field.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
2+
import { generateId } from '../../cma-client/src';
23

34
describe('field', () => {
45
it.concurrent('create, find, all, update, destroy', async () => {
@@ -34,4 +35,25 @@ describe('field', () => {
3435

3536
await client.fields.destroy(field);
3637
});
38+
39+
it.concurrent('create with explicit ID', async () => {
40+
const client = await generateNewCmaClient();
41+
42+
const newId = generateId();
43+
44+
const itemType = await client.itemTypes.create({
45+
name: 'Article',
46+
api_key: 'article',
47+
});
48+
49+
const field = await client.fields.create(itemType, {
50+
id: newId,
51+
label: 'Image',
52+
field_type: 'file',
53+
localized: false,
54+
api_key: 'image',
55+
validators: { required: {} },
56+
});
57+
expect(field.id).toEqual(newId);
58+
});
3759
});

packages/cma-client-node/__tests__/fieldset.test.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
2+
import { generateId } from '../../cma-client/src';
23

34
describe('Fieldsets', () => {
45
it.concurrent('create, find, all, update, destroy, duplicate', async () => {
@@ -34,4 +35,26 @@ describe('Fieldsets', () => {
3435
await client.fieldsets.destroy(fieldset);
3536
expect(await client.fieldsets.list(itemType)).toHaveLength(0);
3637
});
38+
39+
it.concurrent('create with explicit ID', async () => {
40+
const client = await generateNewCmaClient();
41+
42+
const newId = generateId();
43+
44+
const itemType = await client.itemTypes.create({
45+
name: 'Article',
46+
api_key: 'item_type',
47+
});
48+
49+
const fieldset = await client.fieldsets.create(itemType, {
50+
id: newId,
51+
title: 'My fieldset',
52+
position: 1,
53+
hint: 'foo bar',
54+
collapsible: true,
55+
start_collapsed: true,
56+
});
57+
58+
expect(fieldset.id).toEqual(newId);
59+
});
3760
});

packages/cma-client-node/__tests__/item.test.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
22
import { ApiError, buildBlockRecord, SchemaTypes } from '../src';
3+
import { generateId } from '../../cma-client/src';
34

45
describe('item', () => {
56
it.concurrent('bulk publish/unpublish/destroy works', async () => {
@@ -276,4 +277,33 @@ describe('item', () => {
276277
expect(updatedContent[0].attributes.text).toEqual('Updated Foo');
277278
expect(updatedContent[1].attributes.text).toEqual('Updated Bar');
278279
});
280+
281+
it.concurrent('create with explicit ID', async () => {
282+
const client = await generateNewCmaClient();
283+
284+
const newId = generateId();
285+
286+
const itemType = await client.itemTypes.create({
287+
name: 'Article',
288+
api_key: 'article',
289+
});
290+
291+
await client.fields.create(itemType.id, {
292+
label: 'Title',
293+
field_type: 'string',
294+
api_key: 'title',
295+
});
296+
297+
const item = await client.items.create({
298+
id: newId,
299+
title: 'My first blog post',
300+
item_type: itemType,
301+
});
302+
303+
await client.items.bulkPublish({
304+
items: [item],
305+
});
306+
307+
expect(item.id).toEqual(newId);
308+
});
279309
});

packages/cma-client-node/__tests__/itemType.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
2+
import { generateId } from '../../cma-client/src';
23

34
describe('item type', () => {
45
it.concurrent('create, find, all, duplicate, update, destroy', async () => {
@@ -44,4 +45,18 @@ describe('item type', () => {
4445

4546
await client.itemTypes.destroy(itemType.id);
4647
});
48+
49+
it.concurrent('create with explicit ID', async () => {
50+
const client = await generateNewCmaClient();
51+
52+
const newId = generateId();
53+
54+
const itemType = await client.itemTypes.create({
55+
id: newId,
56+
name: 'Article',
57+
api_key: 'article',
58+
});
59+
60+
expect(itemType.id).toEqual(newId);
61+
});
4762
});

packages/cma-client-node/__tests__/itemTypeFilters.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
2+
import { generateId } from '../../cma-client/src';
23

34
describe('itemTypeFilters', () => {
45
it.concurrent('create, find, all, update, destroy', async () => {
@@ -37,4 +38,29 @@ describe('itemTypeFilters', () => {
3738
await client.itemTypeFilters.destroy(filter);
3839
expect(await client.itemTypeFilters.list()).toHaveLength(0);
3940
});
41+
42+
it.concurrent('create with explicit ID', async () => {
43+
const client = await generateNewCmaClient();
44+
45+
const newId = generateId();
46+
47+
const itemType = await client.itemTypes.create({
48+
name: 'Article',
49+
api_key: 'item_type',
50+
singleton: true,
51+
});
52+
53+
const filter = await client.itemTypeFilters.create({
54+
id: newId,
55+
name: 'My filter',
56+
shared: true,
57+
item_type: itemType,
58+
filter: {
59+
status: {
60+
eq: 'draft',
61+
},
62+
},
63+
});
64+
expect(filter.id).toEqual(newId);
65+
});
4066
});

packages/cma-client-node/__tests__/menuItem.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { LogLevel } from '../src';
22
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
3+
import { generateId } from '../../cma-client/src';
34

45
describe('menu item', () => {
56
it.concurrent('create, find, list, update, destroy', async () => {
@@ -27,4 +28,18 @@ describe('menu item', () => {
2728
await client.menuItems.destroy(menuItem);
2829
expect(await client.menuItems.list()).toHaveLength(0);
2930
});
31+
32+
it.concurrent('create with explicit ID', async () => {
33+
const client = await generateNewCmaClient();
34+
35+
const newId = generateId();
36+
37+
const menuItem = await client.menuItems.create({
38+
id: newId,
39+
label: 'Browse Articles',
40+
position: 1,
41+
});
42+
43+
expect(menuItem.id).toEqual(newId);
44+
});
3045
});

packages/cma-client-node/__tests__/plugin.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
2+
import { generateId } from '../../cma-client/src';
23

34
describe('plugins', () => {
45
it.concurrent('create, find, all, duplicate, update, destroy', async () => {
@@ -15,4 +16,17 @@ describe('plugins', () => {
1516

1617
await client.plugins.destroy(plugin.id);
1718
});
19+
20+
it.concurrent('create with explicit ID', async () => {
21+
const client = await generateNewCmaClient();
22+
23+
const newId = generateId();
24+
25+
const plugin = await client.plugins.create({
26+
id: newId,
27+
package_name: 'datocms-plugin-tag-editor',
28+
});
29+
30+
expect(plugin.id).toEqual(newId);
31+
});
1832
});

packages/cma-client-node/__tests__/upload.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { LogLevel } from '../src';
22
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
3+
import { generateId } from '../../cma-client/src';
34

45
describe('upload', () => {
56
it.concurrent('upload local file', async () => {
@@ -57,4 +58,17 @@ describe('upload', () => {
5758

5859
expect(items.length).toEqual(1);
5960
});
61+
62+
it.concurrent('create with explicit ID', async () => {
63+
const client = await generateNewCmaClient();
64+
65+
const newId = generateId();
66+
67+
const upload = await client.uploads.createFromLocalFile({
68+
id: newId,
69+
localPath: `${__dirname}/fixtures/text.txt`,
70+
});
71+
72+
expect(upload.id).toEqual(newId);
73+
});
6074
});

packages/cma-client-node/__tests__/uploadFilters.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
2+
import { generateId } from '../../cma-client/src';
23

34
describe('uploadFilters', () => {
45
test('create, find, all, update, destroy', async () => {
@@ -30,4 +31,22 @@ describe('uploadFilters', () => {
3031
await client.uploadFilters.destroy(filter);
3132
expect(await client.uploadFilters.list()).toHaveLength(0);
3233
});
34+
35+
it.concurrent('create with explicit ID', async () => {
36+
const client = await generateNewCmaClient();
37+
38+
const newId = generateId();
39+
40+
const filter = await client.uploadFilters.create({
41+
id: newId,
42+
name: 'My filter',
43+
shared: true,
44+
filter: {
45+
in_use: {
46+
eq: false,
47+
},
48+
},
49+
});
50+
expect(filter.id).toEqual(newId);
51+
});
3352
});

packages/cma-client-node/__tests__/workflow.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateNewCmaClient } from '../../../jest-helpers/generateNewCmaClient';
2+
import { generateId } from '../../cma-client/src';
23

34
describe('Workflow settings', () => {
45
it.concurrent('create, find, list, destroy', async () => {
@@ -28,4 +29,24 @@ describe('Workflow settings', () => {
2829
await client.workflows.destroy(workflow);
2930
expect(await client.workflows.list()).toHaveLength(0);
3031
});
32+
33+
it.concurrent('create with explicit ID', async () => {
34+
const client = await generateNewCmaClient();
35+
36+
const newId = generateId();
37+
38+
const workflow = await client.workflows.create({
39+
id: newId,
40+
api_key: 'approval_by_editors',
41+
name: 'Approval by editors required',
42+
stages: [
43+
{
44+
id: 'waiting_for_review',
45+
name: 'Waiting for review',
46+
initial: true,
47+
},
48+
],
49+
});
50+
expect(workflow.id).toEqual(newId);
51+
});
3152
});

0 commit comments

Comments
 (0)