mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-11-10 04:46:07 -08:00
test: cut low-value tests, rewrite the rest around behavior, parallelize lanes (#285)
This commit is contained in:
1 parent
4b6842d034
commit
b48083ddd8
368 files changed
+18045
-60331
No files matched your search
@@ -1,30 +0,0 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import type { ConfigSettingsField } from '../types/settings';
|
||||
import { getFieldTitleBadges } from './settings-field-layout';
|
||||
|
||||
const advancedRestartField: ConfigSettingsField = {
|
||||
id: 'ankiConnect.knownWords.highlightEnabled',
|
||||
label: 'Enabled',
|
||||
description: 'Enable fast local highlighting for words already known in Anki.',
|
||||
configPath: 'ankiConnect.knownWords.highlightEnabled',
|
||||
category: 'mining-anki',
|
||||
section: 'Known Words',
|
||||
control: 'boolean',
|
||||
defaultValue: false,
|
||||
restartBehavior: 'restart',
|
||||
advanced: true,
|
||||
};
|
||||
|
||||
test('field title badges show restart status without config paths or advanced labels', () => {
|
||||
const badges = getFieldTitleBadges(advancedRestartField);
|
||||
|
||||
assert.deepEqual(badges, [
|
||||
{
|
||||
className: 'restart-chip restart',
|
||||
text: 'Restart',
|
||||
},
|
||||
]);
|
||||
assert.equal(JSON.stringify(badges).includes(advancedRestartField.configPath), false);
|
||||
assert.equal(JSON.stringify(badges).includes('Advanced'), false);
|
||||
});
|
||||
@@ -26,13 +26,15 @@ test('mouse key learning ignores primary left clicks in DOM-code mode', () => {
|
||||
);
|
||||
});
|
||||
|
||||
test('mouse key learning still ignores primary learn-button activation', () => {
|
||||
test('mouse key learning ignores the primary click that activated the learn button', () => {
|
||||
const learnButton = {};
|
||||
const outsideTarget = {};
|
||||
|
||||
// 'mpv-key' mode accepts left clicks, so only the learn-button rule can reject this one.
|
||||
assert.equal(
|
||||
shouldUseLearnedMouseBinding(
|
||||
'MBTN_LEFT',
|
||||
'dom-code',
|
||||
'mpv-key',
|
||||
{ button: 0, target: learnButton } as MouseEvent,
|
||||
learnButton as HTMLButtonElement,
|
||||
),
|
||||
@@ -40,9 +42,9 @@ test('mouse key learning still ignores primary learn-button activation', () => {
|
||||
);
|
||||
assert.equal(
|
||||
shouldUseLearnedMouseBinding(
|
||||
'MBTN_BACK',
|
||||
'dom-code',
|
||||
{ button: 3, target: learnButton } as MouseEvent,
|
||||
'MBTN_LEFT',
|
||||
'mpv-key',
|
||||
{ button: 0, target: outsideTarget } as MouseEvent,
|
||||
learnButton as HTMLButtonElement,
|
||||
),
|
||||
true,
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
|
||||
test('settings toolbar does not expose an open file button', () => {
|
||||
const html = fs.readFileSync(path.join(process.cwd(), 'src/settings/index.html'), 'utf8');
|
||||
|
||||
assert.equal(html.includes('id="openFileButton"'), false);
|
||||
assert.equal(html.includes('Open File'), false);
|
||||
});
|
||||
@@ -2,7 +2,6 @@ import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import {
|
||||
getSubtitleCssManagedConfigPaths,
|
||||
parseSubtitleCssDeclarations,
|
||||
serializeSubtitleCssDeclarations,
|
||||
} from './subtitle-style-css';
|
||||
@@ -117,77 +116,18 @@ test('parseSubtitleCssDeclarations rejects selectors and malformed declarations'
|
||||
assert.equal(parseSubtitleCssDeclarations('font-size 40px;').ok, false);
|
||||
});
|
||||
|
||||
test('getSubtitleCssManagedConfigPaths includes all CSS-editor-owned appearance controls', () => {
|
||||
assert.ok(!getSubtitleCssManagedConfigPaths('primary').includes(''));
|
||||
assert.ok(!getSubtitleCssManagedConfigPaths('secondary').includes(''));
|
||||
assert.ok(!getSubtitleCssManagedConfigPaths('sidebar').includes(''));
|
||||
assert.ok(getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.fontSize'));
|
||||
assert.ok(
|
||||
getSubtitleCssManagedConfigPaths('secondary').includes('subtitleStyle.secondary.fontSize'),
|
||||
);
|
||||
assert.ok(getSubtitleCssManagedConfigPaths('sidebar').includes('subtitleSidebar.fontSize'));
|
||||
assert.ok(getSubtitleCssManagedConfigPaths('sidebar').includes('subtitleSidebar.textColor'));
|
||||
assert.ok(getSubtitleCssManagedConfigPaths('sidebar').includes('subtitleSidebar.maxWidth'));
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.fontColor'),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('secondary').includes('subtitleStyle.secondary.fontColor'),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.backgroundColor'),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('secondary').includes(
|
||||
'subtitleStyle.secondary.backgroundColor',
|
||||
test('parseSubtitleCssDeclarations keeps separators inside quotes, parens, and escapes', () => {
|
||||
assert.deepEqual(
|
||||
parseSubtitleCssDeclarations(
|
||||
String.raw`background-image: url(a;b.png); content: ":"; font-family: 'Foo\'s; Font'`,
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.hoverTokenColor'),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.hoverTokenBackgroundColor'),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.paintOrder'),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.WebkitTextStroke'),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.knownWordColor'),
|
||||
false,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.nPlusOneColor'),
|
||||
false,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.nameMatchColor'),
|
||||
false,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes('subtitleStyle.jlptColors.N1'),
|
||||
false,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes(
|
||||
'subtitleStyle.frequencyDictionary.singleColor',
|
||||
),
|
||||
false,
|
||||
);
|
||||
assert.equal(
|
||||
getSubtitleCssManagedConfigPaths('primary').includes(
|
||||
'subtitleStyle.frequencyDictionary.bandedColors',
|
||||
),
|
||||
false,
|
||||
{
|
||||
ok: true,
|
||||
declarations: {
|
||||
'background-image': 'url(a;b.png)',
|
||||
content: '":"',
|
||||
'font-family': String.raw`'Foo\'s; Font'`,
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
Reference in new issue
Block a user