Skip to content

Commit 985fb9f

Browse files
committed
test: init task test
1 parent fc49c1d commit 985fb9f

File tree

12 files changed

+396
-312
lines changed

12 files changed

+396
-312
lines changed

src/pages/background/api-handler.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ function execute(request: any) {
5050
return taskApi.removeTask(request.key);
5151
case APIs.TASK_LIST:
5252
return taskApi.getTasks();
53+
case APIs.TASK_GET:
54+
return taskApi.getTask(request.key);
5355
default:
5456
break;
5557
}

src/pages/background/tasks/api.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import { getDatabase } from '../core/db';
66
import { pifyIDBRequest } from '../utils';
77
import {
88
getLastTaskRun,
9-
getTask,
9+
getTask as innerGetTask,
1010
getTasks as innerGetTasks,
1111
runTaskAndSave,
1212
} from './core';
1313

1414
export async function runTask(key: string) {
15-
const task = await getTask(key);
15+
const task = await innerGetTask(key);
1616
if (task) {
1717
return runTaskAndSave(task);
1818
}
@@ -58,6 +58,15 @@ export async function removeTask(key: string) {
5858
emitter.emit(emitter.INNER_TASK_REMOVE, { key });
5959
}
6060

61+
export async function getTask(key: string) {
62+
const task = await innerGetTask(key);
63+
if (!task) {
64+
return;
65+
}
66+
task.lastRun = getLastTaskRun(key);
67+
return task;
68+
}
69+
6170
export async function getTasks() {
6271
const result = await innerGetTasks();
6372

src/share/core/constant.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export enum APIs {
6161

6262
TASK_RUN = 'task_run',
6363
TASK_LIST = 'task_list',
64+
TASK_GET = 'task_get',
6465
TASK_SAVE = 'task_save',
6566
TASK_DELETE = 'task_del',
6667
}

src/share/core/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export interface Task {
127127
wait: number; // seconds
128128
};
129129

130-
// define
130+
// define fetch
131131
fetch?: {
132132
url: string;
133133
method: string;

tests/e2e/request.spec.mjs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
import assert from 'node:assert';
22
import { setTimeout as sleep } from 'node:timers/promises';
3-
import {
4-
getHeader,
5-
getPageValue,
6-
runTest,
7-
saveRule,
8-
setPref,
9-
testServer,
10-
} from './scripts/utils.mjs';
3+
import { saveRule, setPref } from './scripts/api.mjs';
4+
import { getHeader, getPageValue, runTest } from './scripts/browser.mjs';
5+
import { randStr, testServer } from './scripts/utils.mjs';
116

127
describe('Redirect', () =>
138
runTest(
149
['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'],
1510
async browser => {
16-
const key = String(Math.random()).replace('.', '');
11+
const key = randStr();
1712

1813
const { remove } = await saveRule(browser.popup, {
1914
name: 'test redirect',
@@ -41,7 +36,7 @@ describe('Modify Request Header', () =>
4136
runTest(
4237
['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'],
4338
async browser => {
44-
const key = String(Math.random()).replace('.', '');
39+
const key = randStr();
4540

4641
const { remove } = await saveRule(browser.popup, {
4742
name: 'test modify request header',
@@ -68,7 +63,7 @@ describe('Modify Request Header', () =>
6863

6964
describe('Exclude regex', () =>
7065
runTest(['edge_v2', 'firefox_v2'], async browser => {
71-
const key = String(Math.random()).replace('.', '');
66+
const key = randStr();
7267

7368
const { remove } = await saveRule(browser.popup, {
7469
name: 'test exclude regex',
@@ -98,7 +93,7 @@ describe('Disable rule', () =>
9893
runTest(
9994
['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'],
10095
async browser => {
101-
const key = String(Math.random()).replace('.', '');
96+
const key = randStr();
10297

10398
const { remove } = await saveRule(browser.popup, {
10499
name: 'test disable rule',
@@ -152,7 +147,7 @@ describe('Modify Response Header', () =>
152147
runTest(
153148
['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'],
154149
async browser => {
155-
const key = String(Math.random()).replace('.', '');
150+
const key = randStr();
156151

157152
const { remove } = await saveRule(browser.popup, {
158153
name: 'test modify request header',
@@ -184,7 +179,7 @@ describe('Disable All', () =>
184179
runTest(
185180
['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'],
186181
async browser => {
187-
const key = String(Math.random()).replace('.', '');
182+
const key = randStr();
188183

189184
const { remove } = await saveRule(browser.popup, {
190185
name: 'test disable all',
@@ -216,7 +211,7 @@ describe('Disable All', () =>
216211

217212
describe('Custom Function', () =>
218213
runTest(['edge_v2', 'firefox_v2'], async browser => {
219-
const key = String(Math.random()).replace('.', '');
214+
const key = randStr();
220215

221216
const { remove } = await saveRule(browser.popup, {
222217
name: 'test custom function',

tests/e2e/response.spec.mjs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
import assert from 'node:assert';
2-
import {
3-
getPageValue,
4-
runTest,
5-
saveRule,
6-
setPref,
7-
testServer,
8-
} from './scripts/utils.mjs';
2+
import { saveRule, setPref } from './scripts/api.mjs';
3+
import { getPageValue, runTest } from './scripts/browser.mjs';
4+
import { randStr, testServer } from './scripts/utils.mjs';
95

106
describe('Disable Modify Response', () =>
117
runTest(['edge_v2', 'chrome_v3', 'firefox_v2'], async browser => {
12-
const key1 = String(Math.random()).replace('.', '');
13-
const key2 = String(Math.random()).replace('.', '');
8+
const key1 = randStr();
9+
const key2 = randStr();
1410

1511
const { remove } = await saveRule(browser.popup, {
1612
enable: true,
@@ -42,8 +38,8 @@ describe('Disable Modify Response', () =>
4238

4339
describe('Modify Response', () =>
4440
runTest(['edge_v2', 'chrome_v3', 'firefox_v2'], async browser => {
45-
const key1 = String(Math.random()).replace('.', '');
46-
const key2 = String(Math.random()).replace('.', '');
41+
const key1 = randStr();
42+
const key2 = randStr();
4743

4844
await setPref(browser.popup, 'modify-body', true);
4945

@@ -78,8 +74,8 @@ describe('Modify Response', () =>
7874

7975
describe('Modify Response - Custom Function', () =>
8076
runTest(['edge_v2', 'firefox_v2'], async browser => {
81-
const key1 = String(Math.random()).replace('.', '');
82-
const key2 = String(Math.random()).replace('.', '');
77+
const key1 = randStr();
78+
const key2 = randStr();
8379

8480
await setPref(browser.popup, 'modify-body', true);
8581

tests/e2e/scripts/api.mjs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
export function callBackgroundApi(popup, action) {
2+
return popup.evaluate(
3+
`browser.runtime.sendMessage(${JSON.stringify(action)})`,
4+
);
5+
}
6+
7+
export async function saveRule(popup, rule) {
8+
const resp = await callBackgroundApi(popup, {
9+
method: 'save_rule',
10+
rule,
11+
});
12+
let tabName = '';
13+
switch (rule.ruleType) {
14+
case 'cancel':
15+
case 'redirect':
16+
tabName = 'request';
17+
break;
18+
case 'modifySendHeader':
19+
tabName = 'sendHeader';
20+
break;
21+
case 'modifyReceiveHeader':
22+
tabName = 'receiveHeader';
23+
break;
24+
case 'modifyReceiveBody':
25+
tabName = 'receiveBody';
26+
break;
27+
default:
28+
break;
29+
}
30+
31+
return {
32+
id: resp.id,
33+
remove: () =>
34+
callBackgroundApi(popup, {
35+
method: 'del_rule',
36+
id: resp.id,
37+
type: tabName,
38+
}),
39+
};
40+
}
41+
42+
export async function saveTask(popup, task) {
43+
await callBackgroundApi(popup, {
44+
method: 'task_save',
45+
task,
46+
});
47+
return {
48+
remove: () =>
49+
callBackgroundApi(popup, {
50+
method: 'task_del',
51+
key: task.key,
52+
}),
53+
};
54+
}
55+
56+
export async function runTask(popup, taskKey) {
57+
return callBackgroundApi(popup, {
58+
method: 'task_run',
59+
key: taskKey,
60+
});
61+
}
62+
63+
export async function getTask(popup, taskKey) {
64+
return callBackgroundApi(popup, {
65+
method: 'task_get',
66+
key: taskKey,
67+
});
68+
}
69+
70+
export function setPref(popup, key, value) {
71+
return callBackgroundApi(popup, {
72+
method: 'set_pref',
73+
key,
74+
value,
75+
});
76+
}

0 commit comments

Comments
 (0)