chore: 整理 third-party Dark Reader 目录并移除本地说明文件跟踪
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
import {DEFAULT_SETTINGS, DEFAULT_THEME} from '../../../src/defaults';
|
||||
import type {Theme, UserSettings} from '../../../src/definitions';
|
||||
import {ThemeEngine} from '../../../src/generators/theme-engines';
|
||||
import {AutomationMode} from '../../../src/utils/automation';
|
||||
import {validateSettings, validateTheme} from '../../../src/utils/validation';
|
||||
|
||||
test('Settings Validation', () => {
|
||||
const defaultTheme = JSON.parse(JSON.stringify(DEFAULT_THEME));
|
||||
let themeValidation = validateTheme(defaultTheme);
|
||||
expect(themeValidation.errors).toEqual([]);
|
||||
expect(defaultTheme).toEqual(DEFAULT_THEME);
|
||||
|
||||
const partTheme = {
|
||||
brightness: 125,
|
||||
contrast: -50,
|
||||
};
|
||||
themeValidation = validateTheme(partTheme as any);
|
||||
expect(themeValidation.errors.length).toBe(1);
|
||||
expect(partTheme).toEqual({
|
||||
brightness: 125,
|
||||
contrast: DEFAULT_THEME.contrast,
|
||||
});
|
||||
|
||||
const wonkyTheme = {
|
||||
mode: 'dark',
|
||||
brightness: 250,
|
||||
contrast: -50,
|
||||
grayscale: false,
|
||||
sepia: 105,
|
||||
useFont: 'ok',
|
||||
fontFamily: '',
|
||||
textStroke: 2,
|
||||
engine: 'dymanic',
|
||||
stylesheet: 3,
|
||||
darkSchemeBackgroundColor: 'red',
|
||||
darkSchemeTextColor: '#abc12x',
|
||||
lightSchemeBackgroundColor: '',
|
||||
lightSchemeTextColor: '#ffffff00',
|
||||
scrollbarColor: false,
|
||||
selectionColor: 'green',
|
||||
styleSystemControls: null as boolean | null,
|
||||
lightColorScheme: '',
|
||||
darkColorScheme: false,
|
||||
immediateModify: 1,
|
||||
};
|
||||
themeValidation = validateTheme(wonkyTheme as any);
|
||||
expect(themeValidation.errors.length).toBeGreaterThan(0);
|
||||
expect(wonkyTheme as any).toEqual(DEFAULT_THEME);
|
||||
|
||||
const defaultSet = JSON.parse(JSON.stringify(DEFAULT_SETTINGS));
|
||||
let validation = validateSettings(defaultSet);
|
||||
expect(validation.errors).toEqual([]);
|
||||
expect(defaultSet).toEqual(DEFAULT_SETTINGS);
|
||||
|
||||
const wonkySet = {
|
||||
schemeVersion: 'x',
|
||||
enabled: '',
|
||||
fetchNews: null as boolean | null,
|
||||
theme: {
|
||||
mode: 'dark',
|
||||
brightness: 250,
|
||||
contrast: -50,
|
||||
grayscale: false,
|
||||
sepia: 105,
|
||||
useFont: 'ok',
|
||||
fontFamily: '',
|
||||
textStroke: 2,
|
||||
engine: 'dymanic',
|
||||
stylesheet: 3,
|
||||
darkSchemeBackgroundColor: 'red',
|
||||
darkSchemeTextColor: '#abc12x',
|
||||
lightSchemeBackgroundColor: '',
|
||||
lightSchemeTextColor: '#ffffff00',
|
||||
scrollbarColor: false,
|
||||
selectionColor: 'green',
|
||||
styleSystemControls: null as boolean | null,
|
||||
lightColorScheme: '',
|
||||
darkColorScheme: false,
|
||||
immediateModify: 1,
|
||||
},
|
||||
presets: [
|
||||
{id: '', name: 'P1', urls: ['a.com'], theme: {brightness: 100}},
|
||||
{id: 'p2', name: '', urls: ['a.com'], theme: {brightness: 100}},
|
||||
{id: 'p3', name: 'P3', urls: [], theme: {brightness: 100}},
|
||||
{id: 'p4', name: 'P4', urls: ['a.com'], theme: {brightness: -50}},
|
||||
{id: 'p5', name: 'P5', urls: ['a.com'], theme: {brightness: 100}},
|
||||
{id: 'p6', urls: ['a.com'], theme: {brightness: 100}},
|
||||
{id: 'p7', name: 'P7', urls: ['a.com'], theme: null},
|
||||
null,
|
||||
],
|
||||
customThemes: [
|
||||
{url: [] as any[], theme: {brightness: 100}},
|
||||
{url: [''], theme: {brightness: 100}},
|
||||
{url: ['a.com'], theme: {brightness: 100}},
|
||||
{url: ['a.com'], theme: {brightness: -50}},
|
||||
{url: ['a.com']},
|
||||
{url: ['a.com'], theme: null},
|
||||
null,
|
||||
],
|
||||
disabledFor: ['a.com', '', 'b.com'],
|
||||
enabledFor: {0: 'a.com', 1: 'b.com'},
|
||||
enabledByDefault: true,
|
||||
changeBrowserTheme: 1,
|
||||
syncSettings: null as boolean | null,
|
||||
syncSitesFixes: 0,
|
||||
automation: {
|
||||
enabled: false,
|
||||
behavior: 'OnOff',
|
||||
mode: '',
|
||||
},
|
||||
time: {
|
||||
activation: '10:00PM',
|
||||
deactivation: '19:00',
|
||||
},
|
||||
location: {
|
||||
latitude: 59,
|
||||
longitude: '5.3',
|
||||
},
|
||||
previewNewDesign: '',
|
||||
previewNewestDesign: 2,
|
||||
enableForPDF: null as boolean | null,
|
||||
enableForProtectedPages: 'ok',
|
||||
enableContextMenus: 'yes',
|
||||
detectDarkTheme: 'no',
|
||||
};
|
||||
validation = validateSettings(wonkySet as any);
|
||||
expect(validation.errors.length).toBeGreaterThan(0);
|
||||
expect(wonkySet as any).toEqual({
|
||||
...DEFAULT_SETTINGS,
|
||||
disabledFor: ['a.com', 'b.com'],
|
||||
presets: [{id: 'p5', name: 'P5', urls: ['a.com'], theme: {brightness: 100}}],
|
||||
customThemes: [{url: ['a.com'], theme: {brightness: 100}}],
|
||||
});
|
||||
|
||||
const nullishSet = {
|
||||
theme: null as any,
|
||||
presets: null as any,
|
||||
customThemes: null as any,
|
||||
time: null as any,
|
||||
location: null as any,
|
||||
};
|
||||
validation = validateSettings(nullishSet);
|
||||
expect(validation.errors.length).toBe(5);
|
||||
expect(nullishSet).toEqual({
|
||||
theme: DEFAULT_THEME,
|
||||
presets: DEFAULT_SETTINGS.presets,
|
||||
customThemes: DEFAULT_SETTINGS.customThemes,
|
||||
time: DEFAULT_SETTINGS.time,
|
||||
location: DEFAULT_SETTINGS.location,
|
||||
});
|
||||
|
||||
const validSet: UserSettings = {
|
||||
schemeVersion: 2,
|
||||
enabled: true,
|
||||
fetchNews: true,
|
||||
theme: {
|
||||
mode: 0,
|
||||
brightness: 125,
|
||||
contrast: 50,
|
||||
grayscale: 25,
|
||||
sepia: 5,
|
||||
useFont: true,
|
||||
fontFamily: 'Comic Sans',
|
||||
textStroke: 0.5,
|
||||
engine: ThemeEngine.dynamicTheme,
|
||||
stylesheet: '.x { color: red; }',
|
||||
darkSchemeBackgroundColor: '#abcdef',
|
||||
darkSchemeTextColor: '#abc123',
|
||||
lightSchemeBackgroundColor: '#ff0000',
|
||||
lightSchemeTextColor: '#ffffff',
|
||||
scrollbarColor: '',
|
||||
selectionColor: 'auto',
|
||||
styleSystemControls: false,
|
||||
lightColorScheme: 'Lightness',
|
||||
darkColorScheme: 'Darkness',
|
||||
immediateModify: true,
|
||||
},
|
||||
presets: [
|
||||
{id: 'p5', name: 'P5', urls: ['a.com'], theme: {brightness: 100} as Theme},
|
||||
],
|
||||
customThemes: [
|
||||
{url: ['a.com'], theme: {brightness: 100} as Theme},
|
||||
],
|
||||
disabledFor: ['a.com', 'b.com'],
|
||||
enabledFor: ['c.com'],
|
||||
enabledByDefault: false,
|
||||
changeBrowserTheme: true,
|
||||
syncSettings: false,
|
||||
syncSitesFixes: true,
|
||||
automation: {
|
||||
enabled: true,
|
||||
mode: AutomationMode.LOCATION,
|
||||
behavior: 'OnOff',
|
||||
},
|
||||
time: {
|
||||
activation: '18:00',
|
||||
deactivation: '7:00',
|
||||
},
|
||||
location: {
|
||||
latitude: 59,
|
||||
longitude: 53,
|
||||
},
|
||||
previewNewDesign: true,
|
||||
previewNewestDesign: false,
|
||||
enableForPDF: false,
|
||||
enableForProtectedPages: true,
|
||||
enableContextMenus: true,
|
||||
detectDarkTheme: true,
|
||||
};
|
||||
const validSetCopy = JSON.parse(JSON.stringify(validSet));
|
||||
validation = validateSettings(validSet);
|
||||
expect(validation.errors).toEqual([]);
|
||||
expect(validSet).toEqual(validSetCopy);
|
||||
});
|
||||
Reference in New Issue
Block a user