@kywi-software/sdk 0.14.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/content-client.d.ts.map +1 -1
  2. package/dist/content-client.js +17 -2
  3. package/dist/content-client.js.map +1 -1
  4. package/dist/feed-client.d.ts.map +1 -1
  5. package/dist/feed-client.js +9 -1
  6. package/dist/feed-client.js.map +1 -1
  7. package/dist/http-client.d.ts +12 -0
  8. package/dist/http-client.d.ts.map +1 -1
  9. package/dist/http-client.js +37 -0
  10. package/dist/http-client.js.map +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/media-client.d.ts +16 -0
  16. package/dist/media-client.d.ts.map +1 -1
  17. package/dist/media-client.js +85 -10
  18. package/dist/media-client.js.map +1 -1
  19. package/dist/types.d.ts +62 -5
  20. package/dist/types.d.ts.map +1 -1
  21. package/package.json +2 -2
  22. package/dist/__tests__/auth-client.test.d.ts +0 -2
  23. package/dist/__tests__/auth-client.test.d.ts.map +0 -1
  24. package/dist/__tests__/auth-client.test.js +0 -97
  25. package/dist/__tests__/auth-client.test.js.map +0 -1
  26. package/dist/__tests__/content-client.test.d.ts +0 -2
  27. package/dist/__tests__/content-client.test.d.ts.map +0 -1
  28. package/dist/__tests__/content-client.test.js +0 -178
  29. package/dist/__tests__/content-client.test.js.map +0 -1
  30. package/dist/__tests__/create-sdk.test.d.ts +0 -2
  31. package/dist/__tests__/create-sdk.test.d.ts.map +0 -1
  32. package/dist/__tests__/create-sdk.test.js +0 -86
  33. package/dist/__tests__/create-sdk.test.js.map +0 -1
  34. package/dist/__tests__/feed-client.test.d.ts +0 -2
  35. package/dist/__tests__/feed-client.test.d.ts.map +0 -1
  36. package/dist/__tests__/feed-client.test.js +0 -81
  37. package/dist/__tests__/feed-client.test.js.map +0 -1
  38. package/dist/__tests__/hooks.test.d.ts +0 -2
  39. package/dist/__tests__/hooks.test.d.ts.map +0 -1
  40. package/dist/__tests__/hooks.test.js +0 -123
  41. package/dist/__tests__/hooks.test.js.map +0 -1
  42. package/dist/__tests__/http-client.test.d.ts +0 -2
  43. package/dist/__tests__/http-client.test.d.ts.map +0 -1
  44. package/dist/__tests__/http-client.test.js +0 -164
  45. package/dist/__tests__/http-client.test.js.map +0 -1
  46. package/dist/__tests__/i18n-client.test.d.ts +0 -2
  47. package/dist/__tests__/i18n-client.test.d.ts.map +0 -1
  48. package/dist/__tests__/i18n-client.test.js +0 -73
  49. package/dist/__tests__/i18n-client.test.js.map +0 -1
  50. package/dist/__tests__/media-client.test.d.ts +0 -2
  51. package/dist/__tests__/media-client.test.d.ts.map +0 -1
  52. package/dist/__tests__/media-client.test.js +0 -115
  53. package/dist/__tests__/media-client.test.js.map +0 -1
  54. package/dist/__tests__/nav-client.test.d.ts +0 -2
  55. package/dist/__tests__/nav-client.test.d.ts.map +0 -1
  56. package/dist/__tests__/nav-client.test.js +0 -81
  57. package/dist/__tests__/nav-client.test.js.map +0 -1
  58. package/dist/__tests__/sdk-scope-additions.test.d.ts +0 -2
  59. package/dist/__tests__/sdk-scope-additions.test.d.ts.map +0 -1
  60. package/dist/__tests__/sdk-scope-additions.test.js +0 -420
  61. package/dist/__tests__/sdk-scope-additions.test.js.map +0 -1
  62. package/dist/__tests__/site-client.test.d.ts +0 -2
  63. package/dist/__tests__/site-client.test.d.ts.map +0 -1
  64. package/dist/__tests__/site-client.test.js +0 -52
  65. package/dist/__tests__/site-client.test.js.map +0 -1
  66. package/dist/__tests__/user-client.test.d.ts +0 -2
  67. package/dist/__tests__/user-client.test.d.ts.map +0 -1
  68. package/dist/__tests__/user-client.test.js +0 -51
  69. package/dist/__tests__/user-client.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/auth-client.test.ts"],"names":[],"mappings":""}
@@ -1,97 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { KywiHttpClient } from '../http-client.js';
3
- import { createAuthClient } from '../auth-client.js';
4
- const mockFetch = vi.fn();
5
- vi.stubGlobal('fetch', mockFetch);
6
- function ok(data, status = 200) {
7
- return new Response(JSON.stringify(data), {
8
- status,
9
- headers: { 'Content-Type': 'application/json' },
10
- });
11
- }
12
- describe('AuthClient', () => {
13
- let client;
14
- beforeEach(() => {
15
- mockFetch.mockReset();
16
- const http = new KywiHttpClient({ baseUrl: 'https://api.test/api/v1' });
17
- client = createAuthClient(http);
18
- });
19
- // ── login ─────────────────────────────────────────────────────────────
20
- it('login sends correct URL and body', async () => {
21
- const authResult = {
22
- accessToken: 'at1',
23
- refreshToken: 'rt1',
24
- user: { id: 'u1', role: 'admin', groups: ['editors'] },
25
- };
26
- mockFetch.mockResolvedValue(ok({ data: authResult }));
27
- const result = await client.login('user@example.com', 'secret');
28
- const [url, init] = mockFetch.mock.calls[0];
29
- expect(new URL(url).pathname).toBe('/api/v1/auth/login');
30
- expect(JSON.parse(init.body)).toEqual({ email: 'user@example.com', password: 'secret' });
31
- expect(result).toEqual(authResult);
32
- });
33
- // ── register ──────────────────────────────────────────────────────────
34
- it('register sends correct URL and body', async () => {
35
- const authResult = {
36
- accessToken: 'at2',
37
- refreshToken: 'rt2',
38
- user: { id: 'u2', role: 'member', groups: [] },
39
- };
40
- mockFetch.mockResolvedValue(ok({ data: authResult }));
41
- const data = { email: 'new@example.com', password: 'pass', firstName: 'Ada', lastName: 'Lovelace' };
42
- const result = await client.register(data);
43
- const [url, init] = mockFetch.mock.calls[0];
44
- expect(new URL(url).pathname).toBe('/api/v1/auth/register');
45
- expect(JSON.parse(init.body)).toEqual(data);
46
- expect(result).toEqual(authResult);
47
- });
48
- it('register sends correct URL and body without optional fields', async () => {
49
- const authResult = {
50
- accessToken: 'at3',
51
- refreshToken: 'rt3',
52
- user: { id: 'u3', role: 'member', groups: [] },
53
- };
54
- mockFetch.mockResolvedValue(ok({ data: authResult }));
55
- const result = await client.register({ email: 'min@example.com', password: 'pw' });
56
- const [url, init] = mockFetch.mock.calls[0];
57
- expect(new URL(url).pathname).toBe('/api/v1/auth/register');
58
- expect(JSON.parse(init.body)).toEqual({ email: 'min@example.com', password: 'pw' });
59
- expect(result).toEqual(authResult);
60
- });
61
- // ── refresh ───────────────────────────────────────────────────────────
62
- it('refresh sends correct URL and body', async () => {
63
- mockFetch.mockResolvedValue(ok({ data: { accessToken: 'new-at' } }));
64
- const result = await client.refresh('rt-abc');
65
- const [url, init] = mockFetch.mock.calls[0];
66
- expect(new URL(url).pathname).toBe('/api/v1/auth/refresh');
67
- expect(JSON.parse(init.body)).toEqual({ refreshToken: 'rt-abc' });
68
- expect(result).toEqual({ accessToken: 'new-at' });
69
- });
70
- // ── forgotPassword ────────────────────────────────────────────────────
71
- it('forgotPassword sends correct URL and body', async () => {
72
- mockFetch.mockResolvedValue(ok({ data: { message: 'Email sent' } }));
73
- const result = await client.forgotPassword('lost@example.com');
74
- const [url, init] = mockFetch.mock.calls[0];
75
- expect(new URL(url).pathname).toBe('/api/v1/auth/forgot-password');
76
- expect(JSON.parse(init.body)).toEqual({ email: 'lost@example.com' });
77
- expect(result).toEqual({ message: 'Email sent' });
78
- });
79
- // ── resetPassword ─────────────────────────────────────────────────────
80
- it('resetPassword sends correct URL and body', async () => {
81
- mockFetch.mockResolvedValue(ok({ data: { message: 'Password reset' } }));
82
- const result = await client.resetPassword('tok123', 'user@example.com', 'newpass');
83
- const [url, init] = mockFetch.mock.calls[0];
84
- expect(new URL(url).pathname).toBe('/api/v1/auth/reset-password');
85
- expect(JSON.parse(init.body)).toEqual({ token: 'tok123', email: 'user@example.com', newPassword: 'newpass' });
86
- expect(result).toEqual({ message: 'Password reset' });
87
- });
88
- // ── logout ────────────────────────────────────────────────────────────
89
- it('logout sends correct URL', async () => {
90
- mockFetch.mockResolvedValue(ok(null, 200));
91
- await client.logout();
92
- const [url, init] = mockFetch.mock.calls[0];
93
- expect(new URL(url).pathname).toBe('/api/v1/auth/logout');
94
- expect(init.method).toBe('POST');
95
- });
96
- });
97
- //# sourceMappingURL=auth-client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-client.test.js","sourceRoot":"","sources":["../../src/__tests__/auth-client.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=content-client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/content-client.test.ts"],"names":[],"mappings":""}
@@ -1,178 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { KywiHttpClient } from '../http-client.js';
3
- import { createContentClient } from '../content-client.js';
4
- const mockFetch = vi.fn();
5
- vi.stubGlobal('fetch', mockFetch);
6
- function ok(data, status = 200) {
7
- return new Response(JSON.stringify(data), {
8
- status,
9
- headers: { 'Content-Type': 'application/json' },
10
- });
11
- }
12
- function notFound() {
13
- return new Response(JSON.stringify({ error: { code: 'NOT_FOUND', message: 'Not found' } }), { status: 404, headers: { 'Content-Type': 'application/json' } });
14
- }
15
- describe('ContentClient', () => {
16
- let client;
17
- beforeEach(() => {
18
- mockFetch.mockReset();
19
- const http = new KywiHttpClient({ baseUrl: 'https://api.test/api/v1' });
20
- client = createContentClient(http, 'default-site');
21
- });
22
- // ── getBySlug ─────────────────────────────────────────────────────────
23
- it('getBySlug sends correct URL with default siteId', async () => {
24
- const item = { id: '1', title: 'Hello' };
25
- mockFetch.mockResolvedValue(ok({ data: item }));
26
- const result = await client.getBySlug('hello');
27
- const url = new URL(mockFetch.mock.calls[0][0]);
28
- expect(url.pathname).toBe('/api/v1/content/slug/hello');
29
- expect(url.searchParams.get('siteId')).toBe('default-site');
30
- expect(result).toEqual(item);
31
- });
32
- it('getBySlug uses provided siteId', async () => {
33
- mockFetch.mockResolvedValue(ok({ data: { id: '1' } }));
34
- await client.getBySlug('hello', 'other-site');
35
- const url = new URL(mockFetch.mock.calls[0][0]);
36
- expect(url.searchParams.get('siteId')).toBe('other-site');
37
- });
38
- it('getBySlug returns null on 404', async () => {
39
- mockFetch.mockResolvedValue(notFound());
40
- const result = await client.getBySlug('missing');
41
- expect(result).toBeNull();
42
- });
43
- // ── getById ───────────────────────────────────────────────────────────
44
- it('getById sends correct URL', async () => {
45
- const item = { id: 'abc', title: 'Test' };
46
- mockFetch.mockResolvedValue(ok({ data: item }));
47
- const result = await client.getById('abc');
48
- const url = new URL(mockFetch.mock.calls[0][0]);
49
- expect(url.pathname).toBe('/api/v1/content/by-id/abc');
50
- expect(result).toEqual(item);
51
- });
52
- it('getById returns null on 404', async () => {
53
- mockFetch.mockResolvedValue(notFound());
54
- const result = await client.getById('missing');
55
- expect(result).toBeNull();
56
- });
57
- // ── getChildren ───────────────────────────────────────────────────────
58
- it('getChildren sends correct URL', async () => {
59
- const children = [{ id: 'c1' }, { id: 'c2' }];
60
- mockFetch.mockResolvedValue(ok({ data: children }));
61
- const result = await client.getChildren('parent1');
62
- const url = new URL(mockFetch.mock.calls[0][0]);
63
- expect(url.pathname).toBe('/api/v1/content/by-id/parent1/children');
64
- expect(result).toEqual(children);
65
- });
66
- // ── list ──────────────────────────────────────────────────────────────
67
- it('list sends correct URL with default siteId', async () => {
68
- mockFetch.mockResolvedValue(ok({ data: [{ id: '1' }], meta: { total: 1, page: 1, pageSize: 20, totalPages: 1 } }));
69
- const result = await client.list('page');
70
- const url = new URL(mockFetch.mock.calls[0][0]);
71
- expect(url.pathname).toBe('/api/v1/content/page');
72
- expect(url.searchParams.get('siteId')).toBe('default-site');
73
- expect(result).toEqual({ rows: [{ id: '1' }], total: 1 });
74
- });
75
- it('list passes all optional params', async () => {
76
- mockFetch.mockResolvedValue(ok({ data: [], meta: { total: 0, page: 2, pageSize: 5, totalPages: 0 } }));
77
- await client.list('post', 'other-site', {
78
- page: 2,
79
- limit: 5,
80
- sort: 'title',
81
- dir: 'desc',
82
- status: 'published',
83
- search: 'hello',
84
- parentId: 'p1',
85
- });
86
- const url = new URL(mockFetch.mock.calls[0][0]);
87
- expect(url.searchParams.get('siteId')).toBe('other-site');
88
- expect(url.searchParams.get('page')).toBe('2');
89
- expect(url.searchParams.get('limit')).toBe('5');
90
- expect(url.searchParams.get('sort')).toBe('title');
91
- expect(url.searchParams.get('dir')).toBe('desc');
92
- expect(url.searchParams.get('status')).toBe('published');
93
- expect(url.searchParams.get('search')).toBe('hello');
94
- expect(url.searchParams.get('parentId')).toBe('p1');
95
- });
96
- // ── create ────────────────────────────────────────────────────────────
97
- it('create sends POST with siteId as a query param (not body)', async () => {
98
- const created = { id: 'new1', title: 'New' };
99
- mockFetch.mockResolvedValue(ok({ data: created }));
100
- const result = await client.create('page', { title: 'New' });
101
- const [url, init] = mockFetch.mock.calls[0];
102
- const parsed = new URL(url);
103
- expect(parsed.pathname).toBe('/api/v1/content/page');
104
- // siteId must ride on the query string — the server's create schema is
105
- // strict and 400s on an in-body siteId.
106
- expect(parsed.searchParams.get('siteId')).toBe('default-site');
107
- expect(init.method).toBe('POST');
108
- expect(JSON.parse(init.body)).toEqual({ title: 'New' });
109
- expect(result).toEqual(created);
110
- });
111
- it('create uses provided siteId as a query param', async () => {
112
- mockFetch.mockResolvedValue(ok({ data: { id: '1' } }));
113
- await client.create('page', { title: 'X' }, 'custom-site');
114
- const [url, init] = mockFetch.mock.calls[0];
115
- expect(new URL(url).searchParams.get('siteId')).toBe('custom-site');
116
- expect(JSON.parse(init.body).siteId).toBeUndefined();
117
- });
118
- // ── update ────────────────────────────────────────────────────────────
119
- it('update sends PUT with correct URL', async () => {
120
- const updated = { id: '1', title: 'Updated' };
121
- mockFetch.mockResolvedValue(ok({ data: updated }));
122
- const result = await client.update('page', '1', { title: 'Updated' });
123
- const [url, init] = mockFetch.mock.calls[0];
124
- expect(new URL(url).pathname).toBe('/api/v1/content/page/1');
125
- expect(init.method).toBe('PUT');
126
- expect(result).toEqual(updated);
127
- });
128
- it('update returns null on 404', async () => {
129
- mockFetch.mockResolvedValue(notFound());
130
- const result = await client.update('page', 'missing', { title: 'X' });
131
- expect(result).toBeNull();
132
- });
133
- // ── delete ────────────────────────────────────────────────────────────
134
- it('delete sends DELETE and returns true', async () => {
135
- mockFetch.mockResolvedValue(ok({ data: { deleted: true } }));
136
- const result = await client.delete('1');
137
- const [url, init] = mockFetch.mock.calls[0];
138
- expect(new URL(url).pathname).toBe('/api/v1/content/by-id/1');
139
- expect(init.method).toBe('DELETE');
140
- expect(result).toBe(true);
141
- });
142
- it('delete returns false on 404', async () => {
143
- mockFetch.mockResolvedValue(notFound());
144
- const result = await client.delete('missing');
145
- expect(result).toBe(false);
146
- });
147
- // ── publish ───────────────────────────────────────────────────────────
148
- it('publish sends POST and returns item', async () => {
149
- const item = { id: '1', status: 'published' };
150
- mockFetch.mockResolvedValue(ok({ data: item }));
151
- const result = await client.publish('1');
152
- const [url, init] = mockFetch.mock.calls[0];
153
- expect(new URL(url).pathname).toBe('/api/v1/content/by-id/1/publish');
154
- expect(init.method).toBe('POST');
155
- expect(result).toEqual(item);
156
- });
157
- it('publish returns null on 404', async () => {
158
- mockFetch.mockResolvedValue(notFound());
159
- const result = await client.publish('missing');
160
- expect(result).toBeNull();
161
- });
162
- // ── unpublish ─────────────────────────────────────────────────────────
163
- it('unpublish sends POST and returns item', async () => {
164
- const item = { id: '1', status: 'draft' };
165
- mockFetch.mockResolvedValue(ok({ data: item }));
166
- const result = await client.unpublish('1');
167
- const [url, init] = mockFetch.mock.calls[0];
168
- expect(new URL(url).pathname).toBe('/api/v1/content/by-id/1/unpublish');
169
- expect(init.method).toBe('POST');
170
- expect(result).toEqual(item);
171
- });
172
- it('unpublish returns null on 404', async () => {
173
- mockFetch.mockResolvedValue(notFound());
174
- const result = await client.unpublish('missing');
175
- expect(result).toBeNull();
176
- });
177
- });
178
- //# sourceMappingURL=content-client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content-client.test.js","sourceRoot":"","sources":["../../src/__tests__/content-client.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=create-sdk.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-sdk.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/create-sdk.test.ts"],"names":[],"mappings":""}
@@ -1,86 +0,0 @@
1
- import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest';
2
- import { createKywiSdk } from '../create-sdk.js';
3
- const mockFetch = vi.fn();
4
- beforeAll(() => {
5
- vi.stubGlobal('fetch', mockFetch);
6
- });
7
- afterAll(() => {
8
- vi.unstubAllGlobals();
9
- });
10
- function makeConfig(overrides) {
11
- return {
12
- baseUrl: 'https://api.test.com/v1',
13
- apiKey: 'test-key',
14
- defaultSiteId: 'site-1',
15
- ...overrides,
16
- };
17
- }
18
- describe('createKywiSdk', () => {
19
- it('returns scope with all sub-scopes', () => {
20
- const sdk = createKywiSdk(makeConfig());
21
- expect(sdk.content).toBeDefined();
22
- expect(sdk.nav).toBeDefined();
23
- expect(sdk.site).toBeDefined();
24
- expect(sdk.user).toBeDefined();
25
- expect(sdk.feeds).toBeDefined();
26
- });
27
- it('i18n is undefined when bundles/locale not provided', () => {
28
- const sdk = createKywiSdk(makeConfig());
29
- expect(sdk.i18n).toBeUndefined();
30
- });
31
- it('i18n is present when both bundles and locale provided', () => {
32
- const bundles = new Map([
33
- ['en', new Map([['greeting', 'Hello']])],
34
- ]);
35
- const sdk = createKywiSdk(makeConfig({ bundles, locale: 'en' }));
36
- expect(sdk.i18n).toBeDefined();
37
- });
38
- it('i18n.get returns correct value', () => {
39
- const bundles = new Map([
40
- ['en', new Map([['greeting', 'Hello {{name}}']])],
41
- ]);
42
- const sdk = createKywiSdk(makeConfig({ bundles, locale: 'en' }));
43
- expect(sdk.i18n.get('greeting', undefined, { name: 'World' })).toBe('Hello World');
44
- });
45
- it('i18n.getLocale returns configured locale', () => {
46
- const bundles = new Map([
47
- ['en', new Map([['key', 'value']])],
48
- ]);
49
- const sdk = createKywiSdk(makeConfig({ bundles, locale: 'en' }));
50
- expect(sdk.i18n.getLocale()).toBe('en');
51
- });
52
- it('all content scope methods are callable functions', () => {
53
- const sdk = createKywiSdk(makeConfig());
54
- expect(typeof sdk.content.getBySlug).toBe('function');
55
- expect(typeof sdk.content.getById).toBe('function');
56
- expect(typeof sdk.content.getChildren).toBe('function');
57
- expect(typeof sdk.content.list).toBe('function');
58
- expect(typeof sdk.content.create).toBe('function');
59
- expect(typeof sdk.content.update).toBe('function');
60
- expect(typeof sdk.content.delete).toBe('function');
61
- expect(typeof sdk.content.publish).toBe('function');
62
- expect(typeof sdk.content.unpublish).toBe('function');
63
- });
64
- it('all nav scope methods are callable functions', () => {
65
- const sdk = createKywiSdk(makeConfig());
66
- expect(typeof sdk.nav.getTree).toBe('function');
67
- expect(typeof sdk.nav.getBreadcrumbs).toBe('function');
68
- expect(typeof sdk.nav.getChildren).toBe('function');
69
- });
70
- it('all site scope methods are callable functions', () => {
71
- const sdk = createKywiSdk(makeConfig());
72
- expect(typeof sdk.site.getConfig).toBe('function');
73
- expect(typeof sdk.site.list).toBe('function');
74
- });
75
- it('all user scope methods are callable functions', () => {
76
- const sdk = createKywiSdk(makeConfig());
77
- expect(typeof sdk.user.getCurrent).toBe('function');
78
- expect(typeof sdk.user.getById).toBe('function');
79
- });
80
- it('all feeds scope methods are callable functions', () => {
81
- const sdk = createKywiSdk(makeConfig());
82
- expect(typeof sdk.feeds.query).toBe('function');
83
- expect(typeof sdk.feeds.get).toBe('function');
84
- });
85
- });
86
- //# sourceMappingURL=create-sdk.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-sdk.test.js","sourceRoot":"","sources":["../../src/__tests__/create-sdk.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=feed-client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feed-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/feed-client.test.ts"],"names":[],"mappings":""}
@@ -1,81 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { KywiHttpClient } from '../http-client.js';
3
- import { createFeedClient } from '../feed-client.js';
4
- const mockFetch = vi.fn();
5
- vi.stubGlobal('fetch', mockFetch);
6
- function ok(data, status = 200) {
7
- return new Response(JSON.stringify(data), {
8
- status,
9
- headers: { 'Content-Type': 'application/json' },
10
- });
11
- }
12
- const paginatedResponse = {
13
- data: [{ id: '1', title: 'Post 1' }, { id: '2', title: 'Post 2' }],
14
- meta: { total: 10, page: 1, pageSize: 2, totalPages: 5 },
15
- };
16
- describe('FeedClient', () => {
17
- let client;
18
- beforeEach(() => {
19
- mockFetch.mockReset();
20
- const http = new KywiHttpClient({ baseUrl: 'https://api.test/api/v1' });
21
- client = createFeedClient(http, 'default-site');
22
- });
23
- // ── query ─────────────────────────────────────────────────────────────
24
- it('query sends POST with defaultSiteId when no siteId in query', async () => {
25
- mockFetch.mockResolvedValue(ok(paginatedResponse));
26
- const result = await client.query({ contentType: 'post' });
27
- const [url, init] = mockFetch.mock.calls[0];
28
- expect(new URL(url).pathname).toBe('/api/v1/feeds/query');
29
- expect(init.method).toBe('POST');
30
- const body = JSON.parse(init.body);
31
- expect(body.contentType).toBe('post');
32
- expect(body.siteId).toBe('default-site');
33
- expect(result).toEqual({
34
- items: paginatedResponse.data,
35
- total: 10,
36
- page: 1,
37
- pageSize: 2,
38
- totalPages: 5,
39
- });
40
- });
41
- it('query preserves siteId from query when provided', async () => {
42
- mockFetch.mockResolvedValue(ok(paginatedResponse));
43
- await client.query({ contentType: 'post', siteId: 'custom-site' });
44
- const body = JSON.parse(mockFetch.mock.calls[0][1].body);
45
- expect(body.siteId).toBe('custom-site');
46
- });
47
- it('query passes all optional params', async () => {
48
- mockFetch.mockResolvedValue(ok(paginatedResponse));
49
- await client.query({
50
- contentType: 'post',
51
- filters: { category: 'news' },
52
- search: 'hello',
53
- status: 'published',
54
- sort: { field: 'createdAt', direction: 'desc' },
55
- limit: 5,
56
- page: 2,
57
- });
58
- const body = JSON.parse(mockFetch.mock.calls[0][1].body);
59
- expect(body.filters).toEqual({ category: 'news' });
60
- expect(body.search).toBe('hello');
61
- expect(body.status).toBe('published');
62
- expect(body.sort).toEqual({ field: 'createdAt', direction: 'desc' });
63
- expect(body.limit).toBe(5);
64
- expect(body.page).toBe(2);
65
- });
66
- // ── get ───────────────────────────────────────────────────────────────
67
- it('get sends correct URL and parses response', async () => {
68
- mockFetch.mockResolvedValue(ok(paginatedResponse));
69
- const result = await client.get('latest-posts');
70
- const url = new URL(mockFetch.mock.calls[0][0]);
71
- expect(url.pathname).toBe('/api/v1/feeds/latest-posts');
72
- expect(result).toEqual({
73
- items: paginatedResponse.data,
74
- total: 10,
75
- page: 1,
76
- pageSize: 2,
77
- totalPages: 5,
78
- });
79
- });
80
- });
81
- //# sourceMappingURL=feed-client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feed-client.test.js","sourceRoot":"","sources":["../../src/__tests__/feed-client.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=hooks.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/hooks.test.tsx"],"names":[],"mappings":""}