Skip to content

Commit 81dbc68

Browse files
committed
test: add tests for feed template types
1 parent c97ade9 commit 81dbc68

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import 'package:ht_shared/ht_shared.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
group('EngagementTemplateType', () {
6+
test('has all expected values', () {
7+
expect(
8+
EngagementTemplateType.values,
9+
containsAll([
10+
EngagementTemplateType.rateApp,
11+
EngagementTemplateType.linkAccount,
12+
EngagementTemplateType.upgradeToPremium,
13+
EngagementTemplateType.completeProfile,
14+
EngagementTemplateType.exploreNewFeature,
15+
]),
16+
);
17+
});
18+
19+
test('string representation (name) matches expected camelCase', () {
20+
expect(EngagementTemplateType.rateApp.name, 'rateApp');
21+
expect(EngagementTemplateType.linkAccount.name, 'linkAccount');
22+
expect(EngagementTemplateType.upgradeToPremium.name, 'upgradeToPremium');
23+
expect(EngagementTemplateType.completeProfile.name, 'completeProfile');
24+
expect(
25+
EngagementTemplateType.exploreNewFeature.name, 'exploreNewFeature');
26+
});
27+
28+
test('can be created from string using values.byName', () {
29+
expect(
30+
EngagementTemplateType.values.byName('rateApp'),
31+
EngagementTemplateType.rateApp,
32+
);
33+
expect(
34+
EngagementTemplateType.values.byName('linkAccount'),
35+
EngagementTemplateType.linkAccount,
36+
);
37+
expect(
38+
EngagementTemplateType.values.byName('upgradeToPremium'),
39+
EngagementTemplateType.upgradeToPremium,
40+
);
41+
expect(
42+
EngagementTemplateType.values.byName('completeProfile'),
43+
EngagementTemplateType.completeProfile,
44+
);
45+
expect(
46+
EngagementTemplateType.values.byName('exploreNewFeature'),
47+
EngagementTemplateType.exploreNewFeature,
48+
);
49+
});
50+
51+
test('values.byName throws ArgumentError for unknown value', () {
52+
expect(
53+
() => EngagementTemplateType.values.byName('unknownType'),
54+
throwsA(isA<ArgumentError>()),
55+
);
56+
});
57+
});
58+
59+
group('SuggestionTemplateType', () {
60+
test('has all expected values', () {
61+
expect(
62+
SuggestionTemplateType.values,
63+
containsAll([
64+
SuggestionTemplateType.categoriesToFollow,
65+
SuggestionTemplateType.sourcesToFollow,
66+
SuggestionTemplateType.countriesToFollow,
67+
]),
68+
);
69+
});
70+
71+
test('string representation (name) matches expected camelCase', () {
72+
expect(
73+
SuggestionTemplateType.categoriesToFollow.name, 'categoriesToFollow');
74+
expect(SuggestionTemplateType.sourcesToFollow.name, 'sourcesToFollow');
75+
expect(
76+
SuggestionTemplateType.countriesToFollow.name, 'countriesToFollow');
77+
});
78+
79+
test('can be created from string using values.byName', () {
80+
expect(
81+
SuggestionTemplateType.values.byName('categoriesToFollow'),
82+
SuggestionTemplateType.categoriesToFollow,
83+
);
84+
expect(
85+
SuggestionTemplateType.values.byName('sourcesToFollow'),
86+
SuggestionTemplateType.sourcesToFollow,
87+
);
88+
expect(
89+
SuggestionTemplateType.values.byName('countriesToFollow'),
90+
SuggestionTemplateType.countriesToFollow,
91+
);
92+
});
93+
94+
test('values.byName throws ArgumentError for unknown value', () {
95+
expect(
96+
() => SuggestionTemplateType.values.byName('unknownType'),
97+
throwsA(isA<ArgumentError>()),
98+
);
99+
});
100+
});
101+
}

0 commit comments

Comments
 (0)