codeant-ai-for-open-source[bot] commented on code in PR #41007:
URL: https://github.com/apache/superset/pull/41007#discussion_r3531653607
##########
superset-frontend/src/theme/tests/ThemeController.test.ts:
##########
@@ -2115,3 +2115,98 @@ test('fetchSystemDefaultTheme: second named-theme
fallback fetch succeeds when f
mockGet.mockRestore();
}
});
+
+// bootstrapDefaultMode tests
+
+test('bootstrapDefaultMode: reads "dark" from bootstrap config and starts in
DARK mode', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'dark',
+ }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.DARK);
+});
+
+test('bootstrapDefaultMode: reads "default" from bootstrap config and starts
in DEFAULT mode', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'default',
+ }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.DEFAULT);
+});
+
+test('bootstrapDefaultMode: reads "system" from bootstrap config and starts in
SYSTEM mode', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'system',
+ }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.SYSTEM);
+});
+
+test('bootstrapDefaultMode: falls back to DEFAULT when defaultMode is missing
from bootstrap', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({ default: DEFAULT_THEME, dark: DARK_THEME }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.DEFAULT);
+});
+
+test('bootstrapDefaultMode: falls back to DEFAULT when defaultMode is an
invalid value', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'invalid' as any,
+ }),
Review Comment:
**Suggestion:** Replace the `any` cast with a concrete test type (for
example, a typed invalid-mode helper or an `unknown`-to-target-type cast) so
the test remains intentionally invalid without using `any`. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
The new test code uses an `any` cast in TypeScript (`'invalid' as any`),
which directly violates the no-any-types rule. A concrete invalid-value helper
or `unknown`-based narrowing would avoid `any` while preserving the test intent.
</details>
[](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=27581463bca84556bdf87304520e44f8&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
[](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=27581463bca84556bdf87304520e44f8&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** superset-frontend/src/theme/tests/ThemeController.test.ts
**Line:** 2165:2171
**Comment:**
*Custom Rule: Replace the `any` cast with a concrete test type (for
example, a typed invalid-mode helper or an `unknown`-to-target-type cast) so
the test remains intentionally invalid without using `any`.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F41007&comment_hash=2f1fdcd8a2ec12516df1cbc4a28c498c13e8f75ff69a289e573edf7f64ef022e&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F41007&comment_hash=2f1fdcd8a2ec12516df1cbc4a28c498c13e8f75ff69a289e573edf7f64ef022e&reaction=dislike'>👎</a>
##########
superset-frontend/src/theme/tests/ThemeController.test.ts:
##########
@@ -2115,3 +2115,98 @@ test('fetchSystemDefaultTheme: second named-theme
fallback fetch succeeds when f
mockGet.mockRestore();
}
});
+
+// bootstrapDefaultMode tests
+
+test('bootstrapDefaultMode: reads "dark" from bootstrap config and starts in
DARK mode', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'dark',
+ }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.DARK);
+});
+
+test('bootstrapDefaultMode: reads "default" from bootstrap config and starts
in DEFAULT mode', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'default',
+ }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.DEFAULT);
+});
+
+test('bootstrapDefaultMode: reads "system" from bootstrap config and starts in
SYSTEM mode', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'system',
+ }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.SYSTEM);
+});
+
+test('bootstrapDefaultMode: falls back to DEFAULT when defaultMode is missing
from bootstrap', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({ default: DEFAULT_THEME, dark: DARK_THEME }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.DEFAULT);
+});
+
+test('bootstrapDefaultMode: falls back to DEFAULT when defaultMode is an
invalid value', () => {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'invalid' as any,
+ }),
+ );
+ const controller = createController();
+ expect(controller.getCurrentMode()).toBe(ThemeMode.DEFAULT);
+});
+
+test('bootstrapDefaultMode: prototype-poison key does not override mode', ()
=> {
+ mockGetBootstrapData.mockReturnValue(
+ createMockBootstrapData({
+ default: DEFAULT_THEME,
+ dark: DARK_THEME,
+ defaultMode: 'constructor' as any,
+ }),
Review Comment:
**Suggestion:** Avoid using `any` in this cast and use a specific typed
alternative for the prototype-poison test value so type safety is preserved.
[custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
This added TypeScript test code also uses `any` via a cast (`'constructor'
as any`), so it matches the no-any-types violation exactly. The rule applies to
changed TypeScript code, including tests.
</details>
[](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=bd3aa7453b544be38933926a658a204c&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
[](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=bd3aa7453b544be38933926a658a204c&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** superset-frontend/src/theme/tests/ThemeController.test.ts
**Line:** 2177:2183
**Comment:**
*Custom Rule: Avoid using `any` in this cast and use a specific typed
alternative for the prototype-poison test value so type safety is preserved.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F41007&comment_hash=ee21c2855b5dfd7691c55d8a3c56b53b10dd0e1d8203d2b4dfbcffff68aaff15&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F41007&comment_hash=ee21c2855b5dfd7691c55d8a3c56b53b10dd0e1d8203d2b4dfbcffff68aaff15&reaction=dislike'>👎</a>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]