Skip to content

Commit 2c7e686

Browse files
test(theme): cover editor_colors QueryaWorkbenchTheme mapping
Closes #102.
1 parent 2ceeeb8 commit 2c7e686

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import 'dart:io';
2+
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:querya_desktop/core/theme/parser/color_parser.dart';
5+
import 'package:querya_desktop/core/theme/parser/querya_theme_manifest.dart';
6+
import 'package:querya_desktop/core/theme/parser/querya_workbench_theme_from_manifest.dart';
7+
import 'package:querya_desktop/core/theme/querya_theme.dart';
8+
9+
void main() {
10+
group('workbenchThemeFromQueryaColors', () {
11+
test('full fixture maps custom workbench values', () {
12+
final raw =
13+
File('test/fixtures/themes/querya_custom_dark.json').readAsStringSync();
14+
final manifest = QueryaThemeManifest.fromJsonString(raw);
15+
final workbench = workbenchThemeFromQueryaColors(
16+
colors: manifest.editorColors,
17+
fallback: QueryaTheme.darkDefault.workbench,
18+
);
19+
20+
expect(workbench.canvas, parseQueryaThemeColor('#09090B'));
21+
expect(workbench.surface, parseQueryaThemeColor('#111827'));
22+
expect(workbench.sidebarBackground, parseQueryaThemeColor('#0B0F19'));
23+
expect(workbench.editorBackground, parseQueryaThemeColor('#0F1117'));
24+
expect(workbench.accent, parseQueryaThemeColor('#38BDF8'));
25+
expect(workbench.gitModified, parseQueryaThemeColor('#FBBF24'));
26+
expect(workbench.gitUntracked, parseQueryaThemeColor('#34D399'));
27+
});
28+
29+
test('minimal fixture falls back for missing workbench fields', () {
30+
final raw = File('test/fixtures/themes/querya_custom_minimal.json')
31+
.readAsStringSync();
32+
final manifest = QueryaThemeManifest.fromJsonString(raw);
33+
final fallback = QueryaTheme.darkDefault.workbench;
34+
final workbench = workbenchThemeFromQueryaColors(
35+
colors: manifest.editorColors,
36+
fallback: fallback,
37+
);
38+
39+
expect(workbench.canvas, fallback.canvas);
40+
expect(workbench.surface, fallback.surface);
41+
expect(workbench.accent, fallback.accent);
42+
expect(workbench.gitModified, fallback.gitModified);
43+
});
44+
45+
test('invalid optional color uses fallback value', () {
46+
final fallback = QueryaTheme.darkDefault.workbench;
47+
final workbench = workbenchThemeFromQueryaColors(
48+
colors: const {
49+
'canvas': '#09090B',
50+
'accent': 'not-a-color',
51+
'gitModified': 'ZZZZZZ',
52+
},
53+
fallback: fallback,
54+
);
55+
56+
expect(workbench.canvas, parseQueryaThemeColor('#09090B'));
57+
expect(workbench.accent, fallback.accent);
58+
expect(workbench.gitModified, fallback.gitModified);
59+
});
60+
61+
test('does not map editor background key to workbench canvas', () {
62+
final fallback = QueryaTheme.darkDefault.workbench;
63+
final workbench = workbenchThemeFromQueryaColors(
64+
colors: const {'background': '#010203'},
65+
fallback: fallback,
66+
);
67+
68+
expect(workbench.canvas, fallback.canvas);
69+
expect(workbench.editorBackground, fallback.editorBackground);
70+
});
71+
});
72+
}

0 commit comments

Comments
 (0)