Apply repository-wide ESLint auto-fix formatting pass
Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
@@ -3,108 +3,106 @@
|
||||
// Authors:
|
||||
// imacat.yang@dsp.im (imacat), 2026/03/05
|
||||
|
||||
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
||||
import { describe, it, expect, beforeEach, vi } from "vitest";
|
||||
import {
|
||||
getCookie,
|
||||
setCookie,
|
||||
setCookieWithoutExpiration,
|
||||
deleteCookie,
|
||||
} from '@/utils/cookieUtil.js';
|
||||
} from "@/utils/cookieUtil.js";
|
||||
|
||||
describe('cookieUtil', () => {
|
||||
describe("cookieUtil", () => {
|
||||
let cookieSetter;
|
||||
|
||||
beforeEach(() => {
|
||||
// Clear all cookies before each test
|
||||
document.cookie.split(';').forEach((c) => {
|
||||
const name = c.split('=')[0].trim();
|
||||
document.cookie.split(";").forEach((c) => {
|
||||
const name = c.split("=")[0].trim();
|
||||
if (name) {
|
||||
document.cookie =
|
||||
name + '=; Max-Age=-99999999; path=/';
|
||||
document.cookie = name + "=; Max-Age=-99999999; path=/";
|
||||
}
|
||||
});
|
||||
// Spy on document.cookie setter to capture the raw string
|
||||
// (jsdom silently drops Secure cookies on http://)
|
||||
cookieSetter = vi.spyOn(document, 'cookie', 'set');
|
||||
cookieSetter = vi.spyOn(document, "cookie", "set");
|
||||
});
|
||||
|
||||
describe('getCookie', () => {
|
||||
it('returns null when cookie does not exist', () => {
|
||||
expect(getCookie('nonexistent')).toBeNull();
|
||||
describe("getCookie", () => {
|
||||
it("returns null when cookie does not exist", () => {
|
||||
expect(getCookie("nonexistent")).toBeNull();
|
||||
});
|
||||
|
||||
it('returns value of an existing cookie', () => {
|
||||
document.cookie = 'testKey=testValue';
|
||||
expect(getCookie('testKey')).toBe('testValue');
|
||||
it("returns value of an existing cookie", () => {
|
||||
document.cookie = "testKey=testValue";
|
||||
expect(getCookie("testKey")).toBe("testValue");
|
||||
});
|
||||
|
||||
it('returns correct value when multiple cookies exist',
|
||||
() => {
|
||||
document.cookie = 'first=aaa';
|
||||
document.cookie = 'second=bbb';
|
||||
document.cookie = 'third=ccc';
|
||||
expect(getCookie('second')).toBe('bbb');
|
||||
});
|
||||
it("returns correct value when multiple cookies exist", () => {
|
||||
document.cookie = "first=aaa";
|
||||
document.cookie = "second=bbb";
|
||||
document.cookie = "third=ccc";
|
||||
expect(getCookie("second")).toBe("bbb");
|
||||
});
|
||||
|
||||
it('does not match partial cookie names', () => {
|
||||
document.cookie = 'testKey=value';
|
||||
expect(getCookie('test')).toBeNull();
|
||||
it("does not match partial cookie names", () => {
|
||||
document.cookie = "testKey=value";
|
||||
expect(getCookie("test")).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('setCookie', () => {
|
||||
it('sets cookie with Secure and SameSite=Lax flags', () => {
|
||||
setCookie('myKey', 'myValue');
|
||||
describe("setCookie", () => {
|
||||
it("sets cookie with Secure and SameSite=Lax flags", () => {
|
||||
setCookie("myKey", "myValue");
|
||||
|
||||
const written = cookieSetter.mock.calls.find(
|
||||
(c) => c[0].startsWith('myKey='),
|
||||
const written = cookieSetter.mock.calls.find((c) =>
|
||||
c[0].startsWith("myKey="),
|
||||
);
|
||||
expect(written).toBeDefined();
|
||||
const str = written[0];
|
||||
expect(str).toContain('myKey=myValue');
|
||||
expect(str).toContain('expires=');
|
||||
expect(str).toContain('path=/');
|
||||
expect(str).toContain('Secure');
|
||||
expect(str).toContain('SameSite=Lax');
|
||||
expect(str).toContain("myKey=myValue");
|
||||
expect(str).toContain("expires=");
|
||||
expect(str).toContain("path=/");
|
||||
expect(str).toContain("Secure");
|
||||
expect(str).toContain("SameSite=Lax");
|
||||
});
|
||||
});
|
||||
|
||||
describe('setCookieWithoutExpiration', () => {
|
||||
it('sets session cookie with Secure and SameSite=Lax flags', () => {
|
||||
setCookieWithoutExpiration('sessionKey', 'sessionVal');
|
||||
describe("setCookieWithoutExpiration", () => {
|
||||
it("sets session cookie with Secure and SameSite=Lax flags", () => {
|
||||
setCookieWithoutExpiration("sessionKey", "sessionVal");
|
||||
|
||||
const written = cookieSetter.mock.calls.find(
|
||||
(c) => c[0].startsWith('sessionKey='),
|
||||
const written = cookieSetter.mock.calls.find((c) =>
|
||||
c[0].startsWith("sessionKey="),
|
||||
);
|
||||
expect(written).toBeDefined();
|
||||
const str = written[0];
|
||||
expect(str).toContain('sessionKey=sessionVal');
|
||||
expect(str).toContain('Secure');
|
||||
expect(str).toContain('SameSite=Lax');
|
||||
expect(str).toContain("sessionKey=sessionVal");
|
||||
expect(str).toContain("Secure");
|
||||
expect(str).toContain("SameSite=Lax");
|
||||
});
|
||||
|
||||
it('sets cookie with path=/', () => {
|
||||
setCookieWithoutExpiration('pathKey', 'pathVal');
|
||||
it("sets cookie with path=/", () => {
|
||||
setCookieWithoutExpiration("pathKey", "pathVal");
|
||||
|
||||
const written = cookieSetter.mock.calls.find(
|
||||
(c) => c[0].startsWith('pathKey='),
|
||||
const written = cookieSetter.mock.calls.find((c) =>
|
||||
c[0].startsWith("pathKey="),
|
||||
);
|
||||
expect(written[0]).toContain('path=/');
|
||||
expect(written[0]).toContain("path=/");
|
||||
});
|
||||
});
|
||||
|
||||
describe('deleteCookie', () => {
|
||||
it('sets Max-Age=-99999999 with Secure and SameSite=Lax flags', () => {
|
||||
deleteCookie('toDelete');
|
||||
describe("deleteCookie", () => {
|
||||
it("sets Max-Age=-99999999 with Secure and SameSite=Lax flags", () => {
|
||||
deleteCookie("toDelete");
|
||||
|
||||
const written = cookieSetter.mock.calls.find(
|
||||
(c) => c[0].startsWith('toDelete='),
|
||||
const written = cookieSetter.mock.calls.find((c) =>
|
||||
c[0].startsWith("toDelete="),
|
||||
);
|
||||
expect(written).toBeDefined();
|
||||
const str = written[0];
|
||||
expect(str).toContain('Max-Age=-99999999');
|
||||
expect(str).toContain('Secure');
|
||||
expect(str).toContain('SameSite=Lax');
|
||||
expect(str).toContain("Max-Age=-99999999");
|
||||
expect(str).toContain("Secure");
|
||||
expect(str).toContain("SameSite=Lax");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,32 +3,33 @@
|
||||
// Authors:
|
||||
// imacat.yang@dsp.im (imacat), 2026/03/06
|
||||
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { escapeHtml } from '@/utils/escapeHtml.js';
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { escapeHtml } from "@/utils/escapeHtml.js";
|
||||
|
||||
describe('escapeHtml', () => {
|
||||
it('escapes ampersand', () => {
|
||||
expect(escapeHtml('a&b')).toBe('a&b');
|
||||
describe("escapeHtml", () => {
|
||||
it("escapes ampersand", () => {
|
||||
expect(escapeHtml("a&b")).toBe("a&b");
|
||||
});
|
||||
|
||||
it('escapes angle brackets', () => {
|
||||
expect(escapeHtml('<script>')).toBe('<script>');
|
||||
it("escapes angle brackets", () => {
|
||||
expect(escapeHtml("<script>")).toBe("<script>");
|
||||
});
|
||||
|
||||
it('escapes double quotes', () => {
|
||||
expect(escapeHtml('"hello"')).toBe('"hello"');
|
||||
it("escapes double quotes", () => {
|
||||
expect(escapeHtml('"hello"')).toBe(""hello"");
|
||||
});
|
||||
|
||||
it('escapes single quotes', () => {
|
||||
it("escapes single quotes", () => {
|
||||
expect(escapeHtml("it's")).toBe("it's");
|
||||
});
|
||||
|
||||
it('escapes all special characters together', () => {
|
||||
expect(escapeHtml('<img src="x" onerror="alert(\'XSS\')">'))
|
||||
.toBe('<img src="x" onerror="alert('XSS')">');
|
||||
it("escapes all special characters together", () => {
|
||||
expect(escapeHtml('<img src="x" onerror="alert(\'XSS\')">')).toBe(
|
||||
"<img src="x" onerror="alert('XSS')">",
|
||||
);
|
||||
});
|
||||
|
||||
it('returns plain text unchanged', () => {
|
||||
expect(escapeHtml('hello world')).toBe('hello world');
|
||||
it("returns plain text unchanged", () => {
|
||||
expect(escapeHtml("hello world")).toBe("hello world");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,57 +3,47 @@
|
||||
// Authors:
|
||||
// imacat.yang@dsp.im (imacat), 2026/03/05
|
||||
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import {
|
||||
mapPageNameToCapitalUnifiedName,
|
||||
} from '@/utils/pageUtils.js';
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { mapPageNameToCapitalUnifiedName } from "@/utils/pageUtils.js";
|
||||
|
||||
describe('pageUtils', () => {
|
||||
describe('mapPageNameToCapitalUnifiedName', () => {
|
||||
it('converts CheckMap to MAP', () => {
|
||||
expect(mapPageNameToCapitalUnifiedName('CheckMap'))
|
||||
.toBe('MAP');
|
||||
describe("pageUtils", () => {
|
||||
describe("mapPageNameToCapitalUnifiedName", () => {
|
||||
it("converts CheckMap to MAP", () => {
|
||||
expect(mapPageNameToCapitalUnifiedName("CheckMap")).toBe("MAP");
|
||||
});
|
||||
|
||||
it('converts CheckConformance to CONFORMANCE', () => {
|
||||
expect(
|
||||
mapPageNameToCapitalUnifiedName('CheckConformance')
|
||||
).toBe('CONFORMANCE');
|
||||
it("converts CheckConformance to CONFORMANCE", () => {
|
||||
expect(mapPageNameToCapitalUnifiedName("CheckConformance")).toBe(
|
||||
"CONFORMANCE",
|
||||
);
|
||||
});
|
||||
|
||||
it('converts CheckPerformance to PERFORMANCE', () => {
|
||||
expect(
|
||||
mapPageNameToCapitalUnifiedName('CheckPerformance')
|
||||
).toBe('PERFORMANCE');
|
||||
it("converts CheckPerformance to PERFORMANCE", () => {
|
||||
expect(mapPageNameToCapitalUnifiedName("CheckPerformance")).toBe(
|
||||
"PERFORMANCE",
|
||||
);
|
||||
});
|
||||
|
||||
it('converts CompareDashboard to DASHBOARD', () => {
|
||||
expect(
|
||||
mapPageNameToCapitalUnifiedName('CompareDashboard')
|
||||
).toBe('DASHBOARD');
|
||||
it("converts CompareDashboard to DASHBOARD", () => {
|
||||
expect(mapPageNameToCapitalUnifiedName("CompareDashboard")).toBe(
|
||||
"DASHBOARD",
|
||||
);
|
||||
});
|
||||
|
||||
it('converts other names to uppercase', () => {
|
||||
expect(mapPageNameToCapitalUnifiedName('files'))
|
||||
.toBe('FILES');
|
||||
expect(mapPageNameToCapitalUnifiedName('Map'))
|
||||
.toBe('MAP');
|
||||
it("converts other names to uppercase", () => {
|
||||
expect(mapPageNameToCapitalUnifiedName("files")).toBe("FILES");
|
||||
expect(mapPageNameToCapitalUnifiedName("Map")).toBe("MAP");
|
||||
});
|
||||
|
||||
it('handles case-insensitive input', () => {
|
||||
expect(mapPageNameToCapitalUnifiedName('checkmap'))
|
||||
.toBe('MAP');
|
||||
expect(mapPageNameToCapitalUnifiedName('CHECKMAP'))
|
||||
.toBe('MAP');
|
||||
it("handles case-insensitive input", () => {
|
||||
expect(mapPageNameToCapitalUnifiedName("checkmap")).toBe("MAP");
|
||||
expect(mapPageNameToCapitalUnifiedName("CHECKMAP")).toBe("MAP");
|
||||
});
|
||||
|
||||
it('returns undefined for falsy input', () => {
|
||||
expect(mapPageNameToCapitalUnifiedName(undefined))
|
||||
.toBeUndefined();
|
||||
expect(mapPageNameToCapitalUnifiedName(null))
|
||||
.toBeUndefined();
|
||||
expect(mapPageNameToCapitalUnifiedName(''))
|
||||
.toBeUndefined();
|
||||
it("returns undefined for falsy input", () => {
|
||||
expect(mapPageNameToCapitalUnifiedName(undefined)).toBeUndefined();
|
||||
expect(mapPageNameToCapitalUnifiedName(null)).toBeUndefined();
|
||||
expect(mapPageNameToCapitalUnifiedName("")).toBeUndefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user