-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathget.test.ts
More file actions
108 lines (93 loc) · 2.9 KB
/
Copy pathget.test.ts
File metadata and controls
108 lines (93 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import ploneClient from '../../client';
import { setup, teardown } from '../../utils/test';
import { afterEach, beforeEach, describe, test, expect } from 'vitest';
import type { RequestError } from '../types';
const cli = ploneClient.initialize({
apiPath: 'http://localhost:55001/plone',
});
// Versions are permission-protected, so the version tests need a logged-in
// client (same pattern as update.test.ts).
const authCli = ploneClient.initialize({
apiPath: 'http://localhost:55001/plone',
});
await authCli.login({ data: { login: 'admin', password: 'secret' } });
beforeEach(async () => {
await setup();
});
afterEach(async () => {
await teardown();
});
describe('getContent', () => {
test('Successful', async () => {
const path = '/';
const result = await cli.getContent({ path });
expect(result.data.title).toBe('Welcome to Plone');
});
test('Failure', async () => {
const path = '/blah';
try {
await cli.getContent({ path });
} catch (err) {
expect((err as RequestError).status).toBe(404);
}
});
test('Fullobjects', async () => {
const path = '/';
const fullObjects = true;
const result = await cli.getContent({ path, fullObjects });
expect(result.data.title).toBe('Welcome to Plone');
});
test('Expand', async () => {
const path = '/';
const result = await cli.getContent({
path,
expand: ['breadcrumbs', 'navigation'],
});
expect(result.data.title).toBe('Welcome to Plone');
expect(result.data['@components'].breadcrumbs.root).toBe(
'http://localhost:55001/plone',
);
expect(result.data['@components'].navigation.items.length).toBeGreaterThan(
0,
);
});
test('Version', async () => {
await authCli.createContent({
path: '/',
data: { '@type': 'Document', title: 'Versioned Page' },
});
await authCli.updateContent({
path: '/versioned-page',
data: { title: 'Versioned Page updated' },
});
const result = await authCli.getContent({
path: '/versioned-page',
version: '0',
});
expect(result.data.title).toBe('Versioned Page');
});
test('Version & expand', async () => {
await authCli.createContent({
path: '/',
data: { '@type': 'Document', title: 'Versioned Page' },
});
await authCli.updateContent({
path: '/versioned-page',
data: { title: 'Versioned Page updated' },
});
// expand must reach the @history endpoint too (it used to be dropped
// whenever a version was requested)
const result = await authCli.getContent({
path: '/versioned-page',
version: '0',
expand: ['breadcrumbs', 'navigation'],
});
expect(result.data.title).toBe('Versioned Page');
expect(result.data['@components'].breadcrumbs.root).toBe(
'http://localhost:55001/plone',
);
expect(result.data['@components'].navigation.items.length).toBeGreaterThan(
0,
);
});
});