@@ -5,8 +5,14 @@ import {
55 setToken ,
66 getAuthMode ,
77 getToken ,
8+ setConvention ,
9+ getConvention ,
810 clearAll ,
911} from './source/utils/config-manager.js' ;
12+ import {
13+ getConvention as getConventionDetails ,
14+ listConventions ,
15+ } from './source/utils/commit-conventions.js' ;
1016
1117test ( 'config manager stores and retrieves auth mode' , t => {
1218 clearAll ( ) ;
@@ -33,18 +39,79 @@ test('config manager stores and retrieves tokens', t => {
3339 t . is ( getToken ( 'github' ) , undefined ) ;
3440} ) ;
3541
36- test ( 'AIProvider builds Clean Commit prompt correctly' , t => {
37- const provider = new AIProvider ( { authMode : 'openai' } ) ;
42+ test ( 'config manager stores and retrieves convention' , t => {
43+ clearAll ( ) ;
44+ t . is ( getConvention ( ) , 'clean' ) ; // Default
45+
46+ setConvention ( 'conventional' ) ;
47+ t . is ( getConvention ( ) , 'conventional' ) ;
48+
49+ setConvention ( 'gitmoji' ) ;
50+ t . is ( getConvention ( ) , 'gitmoji' ) ;
51+
52+ clearAll ( ) ;
53+ t . is ( getConvention ( ) , 'clean' ) ; // Back to default
54+ } ) ;
55+
56+ test ( 'convention system returns correct convention details' , t => {
57+ const cleanConv = getConventionDetails ( 'clean' ) ;
58+ t . is ( cleanConv . name , 'Clean Commit' ) ;
59+ t . true ( cleanConv . description . includes ( 'emoji' ) ) ;
60+
61+ const conventionalConv = getConventionDetails ( 'conventional' ) ;
62+ t . is ( conventionalConv . name , 'Conventional Commits' ) ;
63+
64+ const gitmojiConv = getConventionDetails ( 'gitmoji' ) ;
65+ t . is ( gitmojiConv . name , 'Gitmoji' ) ;
66+
67+ const simpleConv = getConventionDetails ( 'simple' ) ;
68+ t . is ( simpleConv . name , 'Simple' ) ;
69+ } ) ;
70+
71+ test ( 'convention system lists all conventions' , t => {
72+ const conventions = listConventions ( ) ;
73+ t . is ( conventions . length , 4 ) ;
74+ t . true ( conventions . some ( c => c . value === 'clean' ) ) ;
75+ t . true ( conventions . some ( c => c . value === 'conventional' ) ) ;
76+ t . true ( conventions . some ( c => c . value === 'gitmoji' ) ) ;
77+ t . true ( conventions . some ( c => c . value === 'simple' ) ) ;
78+ } ) ;
79+
80+ test ( 'convention system builds prompts correctly' , t => {
3881 const diff = 'test diff content' ;
3982 const filePath = 'test.js' ;
4083
41- const prompt = provider . buildCleanCommitPrompt ( diff , filePath ) ;
84+ // Test Clean Commit
85+ const cleanConv = getConventionDetails ( 'clean' ) ;
86+ const cleanPrompt = cleanConv . buildPrompt ( diff , filePath ) ;
87+ t . true ( cleanPrompt . includes ( 'Clean Commit' ) ) ;
88+ t . true ( cleanPrompt . includes ( 'test diff content' ) ) ;
89+ t . true ( cleanPrompt . includes ( 'test.js' ) ) ;
90+ t . true ( cleanPrompt . includes ( '📦' ) ) ;
91+
92+ // Test Conventional Commits
93+ const conventionalConv = getConventionDetails ( 'conventional' ) ;
94+ const conventionalPrompt = conventionalConv . buildPrompt ( diff , filePath ) ;
95+ t . true ( conventionalPrompt . includes ( 'Conventional Commits' ) ) ;
96+ t . true ( conventionalPrompt . includes ( 'feat:' ) ) ;
97+ t . true ( conventionalPrompt . includes ( 'fix:' ) ) ;
98+
99+ // Test Gitmoji
100+ const gitmojiConv = getConventionDetails ( 'gitmoji' ) ;
101+ const gitmojiPrompt = gitmojiConv . buildPrompt ( diff , filePath ) ;
102+ t . true ( gitmojiPrompt . includes ( 'Gitmoji' ) ) ;
103+ t . true ( gitmojiPrompt . includes ( ':sparkles:' ) ) ;
104+
105+ // Test Simple
106+ const simpleConv = getConventionDetails ( 'simple' ) ;
107+ const simplePrompt = simpleConv . buildPrompt ( diff , filePath ) ;
108+ t . true ( simplePrompt . includes ( 'imperative mood' ) ) ;
109+ t . true ( simplePrompt . includes ( 'test diff content' ) ) ;
110+ } ) ;
42111
43- t . true ( prompt . includes ( 'Clean Commit' ) ) ;
44- t . true ( prompt . includes ( 'test diff content' ) ) ;
45- t . true ( prompt . includes ( 'test.js' ) ) ;
46- t . true ( prompt . includes ( '📦' ) ) ;
47- t . true ( prompt . includes ( '🔧' ) ) ;
112+ test ( 'convention system defaults to clean for unknown convention' , t => {
113+ const unknownConv = getConventionDetails ( 'unknown-convention' ) ;
114+ t . is ( unknownConv . name , 'Clean Commit' ) ; // Should fallback to clean
48115} ) ;
49116
50117test ( 'AIProvider generates fallback message for large diffs' , t => {
0 commit comments