Skip to content

Commit cc681c2

Browse files
committed
Add fetchVariants tests
1 parent 606031d commit cc681c2

File tree

1 file changed

+107
-3
lines changed

1 file changed

+107
-3
lines changed

lib/src/formatters/shared/baseExport.test.ts

Lines changed: 107 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,105 @@ describe("BaseExportFormatter", () => {
118118
jest.clearAllMocks();
119119
});
120120

121+
/***********************************************************
122+
* fetchVariants
123+
***********************************************************/
124+
describe("fetchVariants", () => {
125+
it("should fetch all variants and include base variant if id: all provided", async () => {
126+
const output = createMockOutput();
127+
const projectConfig = createMockProjectConfig({
128+
projects: [{ id: "project1" }, { id: "project2" }],
129+
variants: [{ id: "all" }],
130+
});
131+
132+
const mockVariants = [
133+
{ id: "variant1", name: "Variant 1" },
134+
{ id: "variant2", name: "Variant 2" },
135+
];
136+
mockFetchVariants.mockResolvedValue(mockVariants);
137+
// @ts-ignore
138+
const formatter = new TestBaseExportFormatter(
139+
output,
140+
projectConfig,
141+
createMockMeta()
142+
);
143+
await formatter.fetchVariants();
144+
expect(formatter.variants).toEqual([
145+
{ id: "variant1", name: "Variant 1" },
146+
{ id: "variant2", name: "Variant 2" },
147+
{ id: "base" },
148+
]);
149+
});
150+
151+
it("should set only base variant if variants empty", async () => {
152+
const output = createMockOutput();
153+
const projectConfig = createMockProjectConfig({
154+
projects: [{ id: "project1" }, { id: "project2" }],
155+
variants: [],
156+
});
157+
158+
const mockVariants = [
159+
{ id: "variant1", name: "Variant 1" },
160+
{ id: "variant2", name: "Variant 2" },
161+
];
162+
mockFetchVariants.mockResolvedValue(mockVariants);
163+
// @ts-ignore
164+
const formatter = new TestBaseExportFormatter(
165+
output,
166+
projectConfig,
167+
createMockMeta()
168+
);
169+
await formatter.fetchVariants();
170+
expect(formatter.variants).toEqual([{ id: "base" }]);
171+
});
172+
173+
it("should prioritize outputs configured in output config", async () => {
174+
const output = createMockOutput({
175+
variants: [{ id: "afrikaans" }, { id: "swahili" }],
176+
});
177+
const projectConfig = createMockProjectConfig({
178+
projects: [{ id: "project1" }, { id: "project2" }],
179+
variants: [{ id: "spanish" }, { id: "japanese" }],
180+
});
181+
182+
const mockVariants = [
183+
{ id: "variant1", name: "Variant 1" },
184+
{ id: "variant2", name: "Variant 2" },
185+
];
186+
mockFetchVariants.mockResolvedValue(mockVariants);
187+
// @ts-ignore
188+
const formatter = new TestBaseExportFormatter(
189+
output,
190+
projectConfig,
191+
createMockMeta()
192+
);
193+
await formatter.fetchVariants();
194+
expect(formatter.variants).toEqual(output.variants);
195+
});
196+
197+
it("should otherwise default to variants configured in project config", async () => {
198+
const output = createMockOutput();
199+
const projectConfig = createMockProjectConfig({
200+
projects: [{ id: "project1" }, { id: "project2" }],
201+
variants: [{ id: "spanish" }, { id: "japanese" }],
202+
});
203+
204+
const mockVariants = [
205+
{ id: "variant1", name: "Variant 1" },
206+
{ id: "variant2", name: "Variant 2" },
207+
];
208+
mockFetchVariants.mockResolvedValue(mockVariants);
209+
// @ts-ignore
210+
const formatter = new TestBaseExportFormatter(
211+
output,
212+
projectConfig,
213+
createMockMeta()
214+
);
215+
await formatter.fetchVariants();
216+
expect(formatter.variants).toEqual(projectConfig.variants);
217+
});
218+
});
219+
121220
/***********************************************************
122221
* fetchTextItemsMap
123222
***********************************************************/
@@ -198,7 +297,7 @@ describe("BaseExportFormatter", () => {
198297
});
199298
});
200299

201-
it("should fetch variants from API when 'all' is specified", async () => {
300+
it("should fetch variants from API when 'all' is specified, including base", async () => {
202301
const projectConfig = createMockProjectConfig({
203302
projects: [{ id: "project1" }],
204303
variants: [{ id: "all" }],
@@ -226,6 +325,7 @@ describe("BaseExportFormatter", () => {
226325
expect(mockFetchVariants).toHaveBeenCalled();
227326
expect(result).toEqual({
228327
project1: {
328+
base: mockContent,
229329
variant1: mockContent,
230330
variant2: mockContent,
231331
},
@@ -292,7 +392,7 @@ describe("BaseExportFormatter", () => {
292392
expect(mockExportComponents).toHaveBeenCalledTimes(2);
293393
});
294394

295-
it("should fetch variants from API when 'all' is specified", async () => {
395+
it("should fetch variants from API when 'all' is specified, including base text", async () => {
296396
const projectConfig = createMockProjectConfig({
297397
variants: [{ id: "all" }],
298398
components: {
@@ -320,7 +420,11 @@ describe("BaseExportFormatter", () => {
320420
const result = await formatter.fetchComponentsMap();
321421

322422
expect(mockFetchVariants).toHaveBeenCalled();
323-
expect(result).toEqual({ variant1: mockContent, variant2: mockContent });
423+
expect(result).toEqual({
424+
base: mockContent,
425+
variant1: mockContent,
426+
variant2: mockContent,
427+
});
324428
});
325429

326430
it("should default to base variant when variants are empty", async () => {

0 commit comments

Comments
 (0)