From 383e20acbde2f379dd9d803539fa6a6583a15af3 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Tue, 26 Nov 2019 11:44:44 +0800 Subject: [PATCH] Tweak Jest setup file --- package.json | 2 +- resources/assets/src/scripts/i18n.ts | 7 +++--- resources/assets/tests/scripts/types.d.ts | 3 +++ resources/assets/tests/{setup.js => setup.ts} | 25 ++++++++++++++----- 4 files changed, 26 insertions(+), 11 deletions(-) rename resources/assets/tests/{setup.js => setup.ts} (70%) diff --git a/package.json b/package.json index bc2980d5..4bbadb09 100644 --- a/package.json +++ b/package.json @@ -194,7 +194,7 @@ "\\.(png|jpg)$": "/resources/assets/tests/__mocks__/file.ts" }, "setupFilesAfterEnv": [ - "/resources/assets/tests/setup.js" + "/resources/assets/tests/setup.ts" ], "coveragePathIgnorePatterns": [ "/node_modules/", diff --git a/resources/assets/src/scripts/i18n.ts b/resources/assets/src/scripts/i18n.ts index e928aa2f..47bfea27 100644 --- a/resources/assets/src/scripts/i18n.ts +++ b/resources/assets/src/scripts/i18n.ts @@ -2,10 +2,9 @@ import Vue from 'vue' export function trans(key: string, parameters = Object.create(null)): string { const segments = key.split('.') - let temp = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - blessing.i18n || Object.create(null) - ) as { [k: string]: string | { [k: string]: string } } + let temp = (blessing.i18n) as { + [k: string]: string | { [k: string]: string } + } let result = '' for (const segment of segments) { diff --git a/resources/assets/tests/scripts/types.d.ts b/resources/assets/tests/scripts/types.d.ts index e0e404d5..126a4ecd 100644 --- a/resources/assets/tests/scripts/types.d.ts +++ b/resources/assets/tests/scripts/types.d.ts @@ -8,6 +8,9 @@ interface Window { trans(key: string, parameters: object): string blessing: { + base_url: string + site_name: string + version: string i18n: object extra: object } diff --git a/resources/assets/tests/setup.js b/resources/assets/tests/setup.ts similarity index 70% rename from resources/assets/tests/setup.js rename to resources/assets/tests/setup.ts index 8658318b..3555e72b 100644 --- a/resources/assets/tests/setup.js +++ b/resources/assets/tests/setup.ts @@ -13,25 +13,36 @@ window.blessing = { site_name: 'Blessing Skin', version: '4.0.0', extra: {}, + i18n: {}, } -window.Headers = class extends Map { +class Headers extends Map { constructor(headers = {}) { + // @ts-ignore super(Object.entries(headers)) } } +class Request { + public url: string -window.Request = class { - constructor(url, init) { + public headers: Headers + + constructor(url: string, init: RequestInit) { this.url = url Object.assign(this, init) - this.headers = new Map(Object.entries(init.headers || {})) + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + this.headers = new Headers(Object.entries(init.headers || {})) } } +Object.assign(window, { Headers, Request }) const noop = () => undefined -// eslint-disable-next-line no-console -Object.keys(console).forEach(method => (console[method] = noop)) +Object.assign(console, { + log: noop, + info: noop, + warn: noop, + error: noop, +}) Vue.prototype.$t = key => key @@ -56,12 +67,14 @@ Vue.use(Button) Vue.use(Input) Vue.use(Radio) Vue.use(Switch) +// @ts-ignore Vue.prototype.$message = { info: jest.fn(), success: jest.fn(), warning: jest.fn(), error: jest.fn(), } +// @ts-ignore Vue.prototype.$msgbox = jest.fn() Vue.prototype.$alert = jest.fn() Vue.prototype.$confirm = jest.fn()