Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gzupanda
code-server
提交
b232dcbd
C
code-server
项目概览
gzupanda
/
code-server
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
code-server
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
b232dcbd
编写于
2月 23, 2021
作者:
J
Joe Previte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(register): add test when navigator undefined
上级
e6a324b4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
70 addition
and
44 deletion
+70
-44
test/constants.test.ts
test/constants.test.ts
+0
-3
test/register.test.ts
test/register.test.ts
+70
-41
未找到文件。
test/constants.test.ts
浏览文件 @
b232dcbd
// Note: we need to import logger from the root
// because this is the logger used in logError in ../src/common/util
// import { logger } from "../node_modules/@coder/logger"
import
{
commit
,
getPackageJson
,
version
}
from
"
../src/node/constants
"
import
{
loggerModule
}
from
"
./helpers
"
...
...
test/register.test.ts
浏览文件 @
b232dcbd
import
{
JSDOM
}
from
"
jsdom
"
import
{
loggerModule
}
from
"
./helpers
"
// jest.mock is hoisted above the imports so we must use `require` here.
jest
.
mock
(
"
@coder/logger
"
,
()
=>
require
(
"
./helpers
"
).
loggerModule
)
describe
(
"
register
"
,
()
=>
{
const
{
window
}
=
new
JSDOM
()
global
.
window
=
(
window
as
unknown
)
as
Window
&
typeof
globalThis
global
.
document
=
window
.
document
global
.
navigator
=
window
.
navigator
global
.
location
=
window
.
location
describe
(
"
when navigator and serviceWorker are defined
"
,
()
=>
{
const
mockRegisterFn
=
jest
.
fn
()
const
mockRegisterFn
=
jest
.
fn
()
beforeAll
(()
=>
{
const
{
window
}
=
new
JSDOM
()
global
.
window
=
(
window
as
unknown
)
as
Window
&
typeof
globalThis
global
.
document
=
window
.
document
global
.
navigator
=
window
.
navigator
global
.
location
=
window
.
location
beforeAll
(()
=>
{
Object
.
defineProperty
(
global
.
navigator
,
"
serviceWorker
"
,
{
value
:
{
register
:
mockRegisterFn
,
}
,
Object
.
defineProperty
(
global
.
navigator
,
"
serviceWorker
"
,
{
value
:
{
register
:
mockRegisterFn
,
}
,
}
)
})
})
afterEach
(()
=>
{
mockRegisterFn
.
mockClear
()
jest
.
resetModules
()
})
beforeEach
(()
=>
{
jest
.
mock
(
"
@coder/logger
"
,
()
=>
loggerModule
)
})
afterAll
(()
=>
{
jest
.
restoreAllMocks
()
})
afterEach
(()
=>
{
mockRegisterFn
.
mockClear
()
jest
.
resetModules
()
})
afterAll
(()
=>
{
jest
.
restoreAllMocks
()
// We don't want these to stay around because it can affect other tests
global
.
window
=
(
undefined
as
unknown
)
as
Window
&
typeof
globalThis
global
.
document
=
(
undefined
as
unknown
)
as
Document
&
typeof
globalThis
global
.
navigator
=
(
undefined
as
unknown
)
as
Navigator
&
typeof
globalThis
global
.
location
=
(
undefined
as
unknown
)
as
Location
&
typeof
globalThis
})
it
(
"
should register a ServiceWorker
"
,
()
=>
{
// Load service worker like you would in the browser
require
(
"
../src/browser/register
"
)
// Load service worker like you would in the browser
expect
(
mockRegisterFn
).
toHaveBeenCalled
()
expect
(
mockRegisterFn
).
toHaveBeenCalledTimes
(
1
)
it
(
"
should register a ServiceWorker
"
,
()
=>
{
// Load service worker like you would in the browser
require
(
"
../src/browser/register
"
)
// Load service worker like you would in the browser
expect
(
mockRegisterFn
).
toHaveBeenCalled
()
expect
(
mockRegisterFn
).
toHaveBeenCalledTimes
(
1
)
})
it
(
"
should log an error if something doesn't work
"
,
()
=>
{
const
message
=
"
Can't find browser
"
const
error
=
new
Error
(
message
)
mockRegisterFn
.
mockImplementation
(()
=>
{
throw
error
})
// Load service worker like you would in the browser
require
(
"
../src/browser/register
"
)
expect
(
mockRegisterFn
).
toHaveBeenCalled
()
expect
(
loggerModule
.
logger
.
error
).
toHaveBeenCalled
()
expect
(
loggerModule
.
logger
.
error
).
toHaveBeenCalledTimes
(
1
)
expect
(
loggerModule
.
logger
.
error
).
toHaveBeenCalledWith
(
`[Service Worker] registration:
${
error
.
message
}
${
error
.
stack
}
`
,
)
})
})
it
(
"
should log an error if something doesn't work
"
,
()
=>
{
const
message
=
"
Can't find browser
"
const
error
=
new
Error
(
message
)
describe
(
"
when navigator and serviceWorker are NOT defined
"
,
()
=>
{
let
spy
:
jest
.
SpyInstance
mockRegisterFn
.
mockImplementation
(()
=>
{
throw
error
beforeEach
(()
=>
{
spy
=
jest
.
spyOn
(
console
,
"
error
"
)
})
// Load service worker like you would in the browser
require
(
"
../src/browser/register
"
)
afterAll
(()
=>
{
jest
.
restoreAllMocks
()
})
expect
(
mockRegisterFn
).
toHaveBeenCalled
()
expect
(
loggerModule
.
logger
.
error
).
toHaveBeenCalled
()
expect
(
loggerModule
.
logger
.
error
).
toHaveBeenCalledTimes
(
1
)
expect
(
loggerModule
.
logger
.
error
).
toHaveBeenCalledWith
(
`[Service Worker] registration:
${
error
.
message
}
${
error
.
stack
}
`
,
)
it
(
"
should log an error to the console
"
,
()
=>
{
// Load service worker like you would in the browser
require
(
"
../src/browser/register
"
)
expect
(
spy
).
toHaveBeenCalled
()
expect
(
spy
).
toHaveBeenCalledTimes
(
1
)
expect
(
spy
).
toHaveBeenCalledWith
(
"
[Service Worker] navigator is undefined
"
)
})
})
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录