Skip to content

Commit c667191

Browse files
Merge pull request #14 from TheDragonCode/patch/2026-01-13
Add test fixtures and update tests for custom configuration validation
2 parents d28036a + 7db4fe3 commit c667191

File tree

3 files changed

+96
-20
lines changed

3 files changed

+96
-20
lines changed

src/types/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ export const defaultConfig: Config = {
7373
icon: "code",
7474

7575
packageManager: "auto",
76-
packageName: undefined,
7776
packageGlobal: false,
77+
packageName: undefined,
7878

7979
title: undefined,
8080
description: undefined,

tests/fixtures/configs/preview.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
path:
2+
readme: 'README-foo.md'
3+
4+
image:
5+
url: 'https://example.com/image.png'
6+
parameters:
7+
pattern: 'cage'
8+
style: 'style_1'
9+
fontSize: '123px'
10+
icon: 'cog'
11+
12+
packageManager: 'yarn'
13+
packageGlobal: true
14+
packageName: 'foo/bar'
15+
16+
title: 'Foo Bar'
17+
description: 'Lorem ipsum dolor sit amet.'
18+
19+
repository:
20+
commit:
21+
branch: 'qwerty'
22+
title: 'Foo Bar Commit'
23+
body: 'Eu assum suscipit, vel veniam eu sadipscing kasd invidunt elit wisi.'
24+
25+
author:
26+
name: 'some_username'
27+
email: 'some_username@example.com'
28+
29+
pullRequest:
30+
title: 'Foo Bar Baz Pull Request'
31+
body: 'Eu assum suscipit, vel veniam eu sadipscing kasd invidunt elit wisi.'
32+
assignees:
33+
- foo1
34+
- foo2
35+
labels:
36+
- foo3
37+
- foo4

tests/unit/filesystem.test.ts

Lines changed: 58 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,66 @@
1-
import { rawTestConfig } from "../helpers/config";
2-
import { type Config, defaultConfig } from "../../src/types/config";
3-
import { readConfig } from "../../src/utils/filesystem";
4-
import { CONFIG_PATH } from "../../src/utils/inputs";
1+
import { rawTestConfig } from '../helpers/config'
2+
import { type Config, defaultConfig } from '../../src/types/config'
3+
import { readConfig } from '../../src/utils/filesystem'
4+
import { CONFIG_PATH } from '../../src/utils/inputs'
55

6-
test("read config", () => {
7-
const data: Config = readConfig(rawTestConfig, CONFIG_PATH.defaultValue);
6+
test('read config', () => {
7+
const data: Config = readConfig(rawTestConfig, CONFIG_PATH.defaultValue)
88

9-
expect(data.directory).toBe(process.cwd());
9+
expect(data.directory).toBe(process.cwd())
1010

1111
expect(data.image.parameters.packageName).toBe(
12-
"TheDragonCode/preview-updater",
13-
);
14-
expect(data.image.parameters.title).toBe("Preview Updater");
12+
'TheDragonCode/preview-updater'
13+
)
14+
expect(data.image.parameters.title).toBe('Preview Updater')
1515
expect(data.image.parameters.description).toBe(
16-
"Lightweight preview update in your repository",
17-
);
16+
'Lightweight preview update in your repository'
17+
)
1818

19-
expect(data.path.readme).toBe(defaultConfig.path.readme);
20-
expect(data.image.url).toBe(defaultConfig.image.url);
19+
expect(data.path.readme).toBe(defaultConfig.path.readme)
20+
expect(data.image.url).toBe(defaultConfig.image.url)
2121
expect(data.image.parameters.pattern).toBe(
22-
defaultConfig.image.parameters.pattern,
23-
);
22+
defaultConfig.image.parameters.pattern
23+
)
2424

25-
expect(data.image.parameters.packageManager).toBe("none");
26-
expect(data.image.parameters.icon).toBe("photograph");
27-
});
25+
expect(data.image.parameters.packageManager).toBe('none')
26+
expect(data.image.parameters.icon).toBe('photograph')
27+
})
28+
29+
test('custom config', () => {
30+
const data: Config = readConfig(<Config>{
31+
directory: process.cwd()
32+
}, 'tests/fixtures/configs/preview.yml')
33+
34+
expect(data.path.readme).toBe('README-foo.md')
35+
36+
expect(data.image.url).toBe('https://example.com/image.png')
37+
expect(data.image.parameters.pattern).toBe('cage')
38+
expect(data.image.parameters.style).toBe('style_1')
39+
40+
expect(data.image.parameters.fontSize).toBe('123px')
41+
expect(data.image.parameters.icon).toBe('cog')
42+
43+
expect(data.image.parameters.packageManager).toBe('yarn')
44+
expect(data.image.parameters.packageGlobal).toBe(true)
45+
expect(data.image.parameters.packageName).toBe('foo/bar')
46+
47+
expect(data.image.parameters.title).toBe('Foo Bar')
48+
expect(data.image.parameters.description).toBe('Lorem ipsum dolor sit amet.')
49+
50+
expect(data.repository.commit.branch).toBe('qwerty')
51+
expect(data.repository.commit.title).toBe('Foo Bar Commit')
52+
expect(data.repository.commit.body).toBe('Eu assum suscipit, vel veniam eu sadipscing kasd invidunt elit wisi.')
53+
54+
expect(data.repository.commit.author.name).toBe('some_username')
55+
expect(data.repository.commit.author.email).toBe('some_username@example.com')
56+
57+
expect(data.repository.pullRequest.title).toBe('Foo Bar Baz Pull Request')
58+
expect(data.repository.pullRequest.body).toBe('Eu assum suscipit, vel veniam eu sadipscing kasd invidunt elit wisi.')
59+
60+
expect(data.repository.pullRequest.assignees.length).toBe(2)
61+
expect(data.repository.pullRequest.assignees.join('-')).toBe('foo1-foo2')
62+
63+
expect(data.repository.pullRequest.labels.length).toBe(2)
64+
expect(data.repository.pullRequest.labels.join('-')).toBe('foo3-foo4')
65+
66+
})

0 commit comments

Comments
 (0)