Skip to content

Commit 80710b7

Browse files
Refactor tests for robustness and address PR feedback
This commit implements significant refactoring in `src/utils/__tests__/model-name-convert.test.mjs` to ensure robust test isolation when dealing with modified mock data. It also addresses the latest round of feedback from PR #864. Key changes: - **Test Isolation in `model-name-convert.test.mjs`:** - I refactored test cases within `describe('modelNameToDesc', ...)`, `describe('isInApiModeGroup', ...)`, and the `describe('partial match scenarios', ...)` (under `describe('isUsingModelName', ...)`) that require modified global mocks (`actualMockModels`, `actualMockModelGroups`). - These tests now use `jest.isolateModulesAsync()` in conjunction with `jest.doMock()` and dynamic `await import()` to provide test-specific mock states. This prevents mock state leakage between tests and improves test reliability. - I addressed previous issues with `async` test functions and syntax errors inadvertently introduced. - **Addressed Specific PR Feedback (coderabbit.ai & Copilot):** - `.eslintrc.json`: I updated the file override pattern from `"*.test.mjs"` to `"**/*.test.mjs"` to ensure ESLint's Jest environment applies to all test files, regardless of depth. - `src/utils/ends-with-question-mark.mjs`: I clarified the comment for the reversed/inverted question mark (`⸮`). - `src/utils/__tests__/model-name-convert.test.mjs`: - I replaced `delete actualMockModelGroups.testGroup` with an assignment to `undefined` (this was mostly a verification as previous changes had addressed similar issues, but the specific instance was re-checked and the refactor to isolated mocks further mitigates direct global mock modification). - I clarified the comment for the `toHaveLength` assertion in `getApiModesFromConfig` tests to detail the count logic. - I added more explicit test cases and explanatory comments for the partial match logic in `isUsingModelName` tests. All linting checks now pass (`npm run lint`). All 157 unit tests in 9 suites pass (`npm test`). Code coverage for `src/utils/model-name-convert.mjs` is now excellent (Statements: 100%, Branches: 98.63%, Functions: 100%, Lines: 100%).
1 parent 165254a commit 80710b7

14 files changed

+222
-321
lines changed

.eslintrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"extends": ["eslint:recommended", "plugin:react/recommended"],
77
"overrides": [
88
{
9-
"files": ["src/utils/__tests__/**/*.mjs", "*.test.mjs"],
9+
"files": ["src/utils/__tests__/**/*.mjs", "**/*.test.mjs"],
1010
"env": {
1111
"jest": true,
1212
"node": true

coverage/lcov-report/ends-with-question-mark.mjs.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ <h1><a href="index.html">All files</a> ends-with-question-mark.mjs</h1>
8787
trimmedQuestion.endsWith('?') || // ASCII
8888
trimmedQuestion.endsWith('?') || // Chinese/Japanese
8989
trimmedQuestion.endsWith('؟') || // Arabic
90-
trimmedQuestion.endsWith('⸮') // Arabic
90+
trimmedQuestion.endsWith('⸮') // Reversed/inverted question mark (used in some contexts including Arabic)
9191
)
9292
}
9393
&nbsp;</pre></td></tr></table></pre>
@@ -97,7 +97,7 @@ <h1><a href="index.html">All files</a> ends-with-question-mark.mjs</h1>
9797
<div class='footer quiet pad2 space-top1 center small'>
9898
Code coverage generated by
9999
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
100-
at 2025-06-07T18:44:22.639Z
100+
at 2025-06-07T19:45:43.538Z
101101
</div>
102102
<script src="prettify.js"></script>
103103
<script>

coverage/lcov-report/get-client-position.mjs.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ <h1><a href="index.html">All files</a> get-client-position.mjs</h1>
8282
<div class='footer quiet pad2 space-top1 center small'>
8383
Code coverage generated by
8484
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
85-
at 2025-06-07T18:44:22.639Z
85+
at 2025-06-07T19:45:43.538Z
8686
</div>
8787
<script src="prettify.js"></script>
8888
<script>

coverage/lcov-report/get-conversation-pairs.mjs.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ <h1><a href="index.html">All files</a> get-conversation-pairs.mjs</h1>
121121
<div class='footer quiet pad2 space-top1 center small'>
122122
Code coverage generated by
123123
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
124-
at 2025-06-07T18:44:22.639Z
124+
at 2025-06-07T19:45:43.538Z
125125
</div>
126126
<script src="prettify.js"></script>
127127
<script>

coverage/lcov-report/index.html

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ <h1>All files</h1>
2323
<div class='clearfix'>
2424

2525
<div class='fl pad1y space-right2'>
26-
<span class="strong">98.43% </span>
26+
<span class="strong">100% </span>
2727
<span class="quiet">Statements</span>
28-
<span class='fraction'>126/128</span>
28+
<span class='fraction'>128/128</span>
2929
</div>
3030

3131

3232
<div class='fl pad1y space-right2'>
33-
<span class="strong">96.8% </span>
33+
<span class="strong">98.93% </span>
3434
<span class="quiet">Branches</span>
35-
<span class='fraction'>91/94</span>
35+
<span class='fraction'>93/94</span>
3636
</div>
3737

3838

@@ -185,13 +185,13 @@ <h1>All files</h1>
185185

186186
<tr>
187187
<td class="file high" data-value="model-name-convert.mjs"><a href="model-name-convert.mjs.html">model-name-convert.mjs</a></td>
188-
<td data-value="97.93" class="pic high">
189-
<div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
188+
<td data-value="100" class="pic high">
189+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
190190
</td>
191-
<td data-value="97.93" class="pct high">97.93%</td>
192-
<td data-value="97" class="abs high">95/97</td>
193-
<td data-value="95.89" class="pct high">95.89%</td>
194-
<td data-value="73" class="abs high">70/73</td>
191+
<td data-value="100" class="pct high">100%</td>
192+
<td data-value="97" class="abs high">97/97</td>
193+
<td data-value="98.63" class="pct high">98.63%</td>
194+
<td data-value="73" class="abs high">72/73</td>
195195
<td data-value="100" class="pct high">100%</td>
196196
<td data-value="25" class="abs high">25/25</td>
197197
<td data-value="100" class="pct high">100%</td>
@@ -221,7 +221,7 @@ <h1>All files</h1>
221221
<div class='footer quiet pad2 space-top1 center small'>
222222
Code coverage generated by
223223
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
224-
at 2025-06-07T18:44:22.639Z
224+
at 2025-06-07T19:45:43.538Z
225225
</div>
226226
<script src="prettify.js"></script>
227227
<script>

coverage/lcov-report/is-edge.mjs.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ <h1><a href="index.html">All files</a> is-edge.mjs</h1>
7979
<div class='footer quiet pad2 space-top1 center small'>
8080
Code coverage generated by
8181
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
82-
at 2025-06-07T18:44:22.639Z
82+
at 2025-06-07T19:45:43.538Z
8383
</div>
8484
<script src="prettify.js"></script>
8585
<script>

coverage/lcov-report/is-firefox.mjs.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ <h1><a href="index.html">All files</a> is-firefox.mjs</h1>
7979
<div class='footer quiet pad2 space-top1 center small'>
8080
Code coverage generated by
8181
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
82-
at 2025-06-07T18:44:22.639Z
82+
at 2025-06-07T19:45:43.538Z
8383
</div>
8484
<script src="prettify.js"></script>
8585
<script>

coverage/lcov-report/is-mobile.mjs.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ <h1><a href="index.html">All files</a> is-mobile.mjs</h1>
124124
<div class='footer quiet pad2 space-top1 center small'>
125125
Code coverage generated by
126126
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
127-
at 2025-06-07T18:44:22.639Z
127+
at 2025-06-07T19:45:43.538Z
128128
</div>
129129
<script src="prettify.js"></script>
130130
<script>

coverage/lcov-report/is-safari.mjs.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ <h1><a href="index.html">All files</a> is-safari.mjs</h1>
7979
<div class='footer quiet pad2 space-top1 center small'>
8080
Code coverage generated by
8181
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
82-
at 2025-06-07T18:44:22.639Z
82+
at 2025-06-07T19:45:43.538Z
8383
</div>
8484
<script src="prettify.js"></script>
8585
<script>

coverage/lcov-report/model-name-convert.mjs.html

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ <h1><a href="index.html">All files</a> model-name-convert.mjs</h1>
2323
<div class='clearfix'>
2424

2525
<div class='fl pad1y space-right2'>
26-
<span class="strong">97.93% </span>
26+
<span class="strong">100% </span>
2727
<span class="quiet">Statements</span>
28-
<span class='fraction'>95/97</span>
28+
<span class='fraction'>97/97</span>
2929
</div>
3030

3131

3232
<div class='fl pad1y space-right2'>
33-
<span class="strong">95.89% </span>
33+
<span class="strong">98.63% </span>
3434
<span class="quiet">Branches</span>
35-
<span class='fraction'>70/73</span>
35+
<span class='fraction'>72/73</span>
3636
</div>
3737

3838

@@ -265,8 +265,8 @@ <h1><a href="index.html">All files</a> model-name-convert.mjs</h1>
265265
<span class="cline-any cline-neutral">&nbsp;</span>
266266
<span class="cline-any cline-neutral">&nbsp;</span>
267267
<span class="cline-any cline-neutral">&nbsp;</span>
268-
<span class="cline-any cline-yes">60x</span>
269-
<span class="cline-any cline-yes">42x</span>
268+
<span class="cline-any cline-yes">62x</span>
269+
<span class="cline-any cline-yes">44x</span>
270270
<span class="cline-any cline-neutral">&nbsp;</span>
271271
<span class="cline-any cline-yes">18x</span>
272272
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -294,7 +294,7 @@ <h1><a href="index.html">All files</a> model-name-convert.mjs</h1>
294294
<span class="cline-any cline-neutral">&nbsp;</span>
295295
<span class="cline-any cline-neutral">&nbsp;</span>
296296
<span class="cline-any cline-neutral">&nbsp;</span>
297-
<span class="cline-any cline-yes">118x</span>
297+
<span class="cline-any cline-yes">122x</span>
298298
<span class="cline-any cline-neutral">&nbsp;</span>
299299
<span class="cline-any cline-neutral">&nbsp;</span>
300300
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -318,12 +318,12 @@ <h1><a href="index.html">All files</a> model-name-convert.mjs</h1>
318318
<span class="cline-any cline-neutral">&nbsp;</span>
319319
<span class="cline-any cline-neutral">&nbsp;</span>
320320
<span class="cline-any cline-neutral">&nbsp;</span>
321-
<span class="cline-any cline-yes">30x</span>
321+
<span class="cline-any cline-yes">29x</span>
322322
<span class="cline-any cline-yes">8x</span>
323323
<span class="cline-any cline-neutral">&nbsp;</span>
324-
<span class="cline-any cline-yes">22x</span>
325-
<span class="cline-any cline-yes">13x</span>
326-
<span class="cline-any cline-yes">10x</span>
324+
<span class="cline-any cline-yes">21x</span>
325+
<span class="cline-any cline-yes">12x</span>
326+
<span class="cline-any cline-yes">9x</span>
327327
<span class="cline-any cline-neutral">&nbsp;</span>
328328
<span class="cline-any cline-neutral">&nbsp;</span>
329329
<span class="cline-any cline-yes">9x</span>
@@ -367,19 +367,19 @@ <h1><a href="index.html">All files</a> model-name-convert.mjs</h1>
367367
<span class="cline-any cline-neutral">&nbsp;</span>
368368
<span class="cline-any cline-neutral">&nbsp;</span>
369369
<span class="cline-any cline-neutral">&nbsp;</span>
370-
<span class="cline-any cline-yes">6x</span>
370+
<span class="cline-any cline-yes">9x</span>
371371
<span class="cline-any cline-neutral">&nbsp;</span>
372372
<span class="cline-any cline-neutral">&nbsp;</span>
373-
<span class="cline-any cline-yes">6x</span>
374-
<span class="cline-any cline-yes">2x</span>
373+
<span class="cline-any cline-yes">9x</span>
374+
<span class="cline-any cline-yes">3x</span>
375375
<span class="cline-any cline-neutral">&nbsp;</span>
376376
<span class="cline-any cline-neutral">&nbsp;</span>
377-
<span class="cline-any cline-yes">4x</span>
378-
<span class="cline-any cline-yes">4x</span>
379-
<span class="cline-any cline-yes">4x</span>
377+
<span class="cline-any cline-yes">6x</span>
378+
<span class="cline-any cline-yes">6x</span>
379+
<span class="cline-any cline-yes">6x</span>
380380
<span class="cline-any cline-yes">4x</span>
381381
<span class="cline-any cline-neutral">&nbsp;</span>
382-
<span class="cline-any cline-yes">4x</span>
382+
<span class="cline-any cline-yes">6x</span>
383383
<span class="cline-any cline-neutral">&nbsp;</span>
384384
<span class="cline-any cline-neutral">&nbsp;</span>
385385
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -551,8 +551,8 @@ <h1><a href="index.html">All files</a> model-name-convert.mjs</h1>
551551
&nbsp;
552552
<span class="missing-if-branch" title="else path not taken" >E</span>if (isCustomModelName(configOrSessionModelName)) {
553553
const presetPart = modelNameToPresetPart(configOrSessionModelName)
554-
<span class="missing-if-branch" title="if path not taken" >I</span>if (presetPart in Models) <span class="cstat-no" title="statement not covered" >configOrSessionModelName = presetPart</span>
555-
else <span class="missing-if-branch" title="if path not taken" >I</span>if (presetPart in ModelGroups) <span class="cstat-no" title="statement not covered" >configOrSessionModelName = ModelGroups[presetPart].value[0]</span>
554+
if (presetPart in Models) configOrSessionModelName = presetPart
555+
else if (presetPart in ModelGroups) configOrSessionModelName = ModelGroups[presetPart].value[0]
556556
}
557557
return configOrSessionModelName === modelName
558558
}
@@ -595,7 +595,7 @@ <h1><a href="index.html">All files</a> model-name-convert.mjs</h1>
595595
<div class='footer quiet pad2 space-top1 center small'>
596596
Code coverage generated by
597597
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
598-
at 2025-06-07T18:44:22.639Z
598+
at 2025-06-07T19:45:43.538Z
599599
</div>
600600
<script src="prettify.js"></script>
601601
<script>

0 commit comments

Comments
 (0)