Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1b101bd

Browse files
committedOct 25, 2021
(#292) Draft provider registry
1 parent d8b183d commit 1b101bd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+751
-637
lines changed
 

Diff for: ‎index.ts

+44-42
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
1-
import { NativeAdapter } from "./lib/adapter/native.adapter.class";
2-
import { VisionAdapter } from "./lib/adapter/vision.adapter.class";
3-
import { AssertClass } from "./lib/assert.class";
4-
import { ClipboardClass } from "./lib/clipboard.class";
5-
import { KeyboardClass } from "./lib/keyboard.class";
6-
import { MouseClass } from "./lib/mouse.class";
7-
import { createMovementApi } from "./lib/movement.function";
8-
import { ScreenClass } from "./lib/screen.class";
9-
import { LineHelper } from "./lib/util/linehelper.class";
10-
import { createWindowApi } from "./lib/window.function";
1+
import {NativeAdapter} from "./lib/adapter/native.adapter.class";
2+
import {VisionAdapter} from "./lib/adapter/vision.adapter.class";
3+
import {AssertClass} from "./lib/assert.class";
4+
import {ClipboardClass} from "./lib/clipboard.class";
5+
import {KeyboardClass} from "./lib/keyboard.class";
6+
import {MouseClass} from "./lib/mouse.class";
7+
import {createMovementApi} from "./lib/movement.function";
8+
import {ScreenClass} from "./lib/screen.class";
9+
import {LineHelper} from "./lib/util/linehelper.class";
10+
import {createWindowApi} from "./lib/window.function";
11+
import providerRegistry from "./lib/provider/provider-registry.class";
1112

1213
export {
13-
AssertClass,
14-
ClipboardClass,
15-
KeyboardClass,
16-
MouseClass,
17-
ScreenClass,
14+
AssertClass,
15+
ClipboardClass,
16+
KeyboardClass,
17+
MouseClass,
18+
ScreenClass,
19+
providerRegistry
1820
}
1921

20-
export { jestMatchers } from "./lib/expect/jest.matcher.function";
21-
export { sleep } from "./lib/sleep.function";
22-
export { Image } from "./lib/image.class";
23-
export { Key } from "./lib/key.enum";
24-
export { Button } from "./lib/button.enum";
25-
export { centerOf, randomPointIn } from "./lib/location.function";
26-
export { LocationParameters } from "./lib/locationparameters.class";
27-
export { OptionalSearchParameters } from "./lib/optionalsearchparameters.class";
28-
export { linear } from "./lib/movementtype.function";
29-
export { Point } from "./lib/point.class";
30-
export { Region } from "./lib/region.class";
31-
export { Window } from "./lib/window.class";
22+
export {jestMatchers} from "./lib/expect/jest.matcher.function";
23+
export {sleep} from "./lib/sleep.function";
24+
export {Image} from "./lib/image.class";
25+
export {Key} from "./lib/key.enum";
26+
export {Button} from "./lib/button.enum";
27+
export {centerOf, randomPointIn} from "./lib/location.function";
28+
export {LocationParameters} from "./lib/locationparameters.class";
29+
export {OptionalSearchParameters} from "./lib/optionalsearchparameters.class";
30+
export {linear} from "./lib/movementtype.function";
31+
export {Point} from "./lib/point.class";
32+
export {Region} from "./lib/region.class";
33+
export {Window} from "./lib/window.class";
3234

33-
const screenActions = new VisionAdapter();
34-
const nativeActions = new NativeAdapter();
35+
const screenActions = new VisionAdapter(providerRegistry);
36+
const nativeActions = new NativeAdapter(providerRegistry);
3537
const lineHelper = new LineHelper();
3638

3739
const clipboard = new ClipboardClass(nativeActions);
@@ -41,19 +43,19 @@ const screen = new ScreenClass(screenActions);
4143
const assert = new AssertClass(screen);
4244

4345
const {straightTo, up, down, left, right} = createMovementApi(nativeActions, lineHelper);
44-
const {getWindows, getActiveWindow } = createWindowApi(nativeActions);
46+
const {getWindows, getActiveWindow} = createWindowApi(nativeActions);
4547

4648
export {
47-
clipboard,
48-
keyboard,
49-
mouse,
50-
screen,
51-
assert,
52-
straightTo,
53-
up,
54-
down,
55-
left,
56-
right,
57-
getWindows,
58-
getActiveWindow,
49+
clipboard,
50+
keyboard,
51+
mouse,
52+
screen,
53+
assert,
54+
straightTo,
55+
up,
56+
down,
57+
left,
58+
right,
59+
getWindows,
60+
getActiveWindow,
5961
};

Diff for: ‎lib/adapter/native.adapter.class.spec.ts

+47-98
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,42 @@ import { Button } from "../button.enum";
22
import { Key } from "../key.enum";
33
import { Point } from "../point.class";
44
import { NativeAdapter } from "./native.adapter.class";
5-
import ClipboardAction from "../provider/native/clipboardy-clipboard-action.class";
6-
import KeyboardAction from "../provider/native/libnut-keyboard-action.class";
7-
import MouseAction from "../provider/native/libnut-mouse-action.class";
8-
import WindowAction from "../provider/native/libnut-window-action.class";
5+
import ClipboardAction from "../provider/native/clipboardy-clipboard.class";
6+
import KeyboardAction from "../provider/native/libnut-keyboard.class";
7+
import MouseAction from "../provider/native/libnut-mouse.class";
8+
import WindowAction from "../provider/native/libnut-window.class";
9+
import providerRegistry from "../provider/provider-registry.class";
10+
11+
jest.mock("../provider/native/clipboardy-clipboard.class");
12+
jest.mock("../provider/native/libnut-mouse.class");
13+
jest.mock("../provider/native/libnut-keyboard.class");
14+
jest.mock("../provider/native/libnut-window.class");
15+
16+
let clipboardMock: ClipboardAction;
17+
let keyboardMock: KeyboardAction;
18+
let mouseMock: MouseAction;
19+
let windowMock: WindowAction;
20+
21+
beforeAll(() => {
22+
clipboardMock = new ClipboardAction();
23+
keyboardMock = new KeyboardAction();
24+
mouseMock = new MouseAction();
25+
windowMock = new WindowAction();
26+
providerRegistry.registerClipboardProvider(clipboardMock);
27+
providerRegistry.registerKeyboardProvider(keyboardMock);
28+
providerRegistry.registerMouseProvider(mouseMock);
29+
providerRegistry.registerWindowProvider(windowMock);
30+
});
931

10-
jest.mock("../provider/native/clipboardy-clipboard-action.class");
11-
jest.mock("../provider/native/libnut-mouse-action.class");
12-
jest.mock("../provider/native/libnut-keyboard-action.class");
13-
jest.mock("../provider/native/libnut-window-action.class");
32+
beforeEach(() => {
33+
jest.resetAllMocks();
34+
});
1435

1536
describe("NativeAdapter class", () => {
1637
describe("MouseAction", () => {
1738
it("should delegate calls to setMouseDelay", async () => {
1839
// GIVEN
19-
const clipboardMock = new ClipboardAction();
20-
const keyboardMock = new KeyboardAction();
21-
const mouseMock = new MouseAction();
22-
const windowMock = new WindowAction();
23-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
40+
const SUT = new NativeAdapter(providerRegistry);
2441
const delay = 5;
2542

2643
// WHEN
@@ -33,11 +50,7 @@ describe("NativeAdapter class", () => {
3350

3451
it("should delegate calls to setMousePosition", async () => {
3552
// GIVEN
36-
const clipboardMock = new ClipboardAction();
37-
const keyboardMock = new KeyboardAction();
38-
const mouseMock = new MouseAction();
39-
const windowMock = new WindowAction();
40-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
53+
const SUT = new NativeAdapter(providerRegistry);
4154
const newPosition = new Point(10, 10);
4255

4356
// WHEN
@@ -50,11 +63,7 @@ describe("NativeAdapter class", () => {
5063

5164
it("should delegate calls to currentMousePosition", async () => {
5265
// GIVEN
53-
const clipboardMock = new ClipboardAction();
54-
const keyboardMock = new KeyboardAction();
55-
const mouseMock = new MouseAction();
56-
const windowMock = new WindowAction();
57-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
66+
const SUT = new NativeAdapter(providerRegistry);
5867

5968
// WHEN
6069
await SUT.currentMousePosition();
@@ -65,11 +74,7 @@ describe("NativeAdapter class", () => {
6574

6675
it("should delegate calls to leftClick", async () => {
6776
// GIVEN
68-
const clipboardMock = new ClipboardAction();
69-
const keyboardMock = new KeyboardAction();
70-
const mouseMock = new MouseAction();
71-
const windowMock = new WindowAction();
72-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
77+
const SUT = new NativeAdapter(providerRegistry);
7378

7479
// WHEN
7580
await SUT.leftClick();
@@ -80,11 +85,7 @@ describe("NativeAdapter class", () => {
8085

8186
it("should delegate calls to rightClick", async () => {
8287
// GIVEN
83-
const clipboardMock = new ClipboardAction();
84-
const keyboardMock = new KeyboardAction();
85-
const mouseMock = new MouseAction();
86-
const windowMock = new WindowAction();
87-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
88+
const SUT = new NativeAdapter(providerRegistry);
8889

8990
// WHEN
9091
await SUT.rightClick();
@@ -95,11 +96,7 @@ describe("NativeAdapter class", () => {
9596

9697
it("should delegate calls to middleClick", async () => {
9798
// GIVEN
98-
const clipboardMock = new ClipboardAction();
99-
const keyboardMock = new KeyboardAction();
100-
const mouseMock = new MouseAction();
101-
const windowMock = new WindowAction();
102-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
99+
const SUT = new NativeAdapter(providerRegistry);
103100

104101
// WHEN
105102
await SUT.middleClick();
@@ -110,11 +107,7 @@ describe("NativeAdapter class", () => {
110107

111108
it("should delegate calls to pressButton", async () => {
112109
// GIVEN
113-
const clipboardMock = new ClipboardAction();
114-
const keyboardMock = new KeyboardAction();
115-
const mouseMock = new MouseAction();
116-
const windowMock = new WindowAction();
117-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
110+
const SUT = new NativeAdapter(providerRegistry);
118111
const buttonToPress = Button.LEFT;
119112

120113
// WHEN
@@ -127,11 +120,7 @@ describe("NativeAdapter class", () => {
127120

128121
it("should delegate calls to releaseButton", async () => {
129122
// GIVEN
130-
const clipboardMock = new ClipboardAction();
131-
const keyboardMock = new KeyboardAction();
132-
const mouseMock = new MouseAction();
133-
const windowMock = new WindowAction();
134-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
123+
const SUT = new NativeAdapter(providerRegistry);
135124
const buttonToRelease = Button.LEFT;
136125

137126
// WHEN
@@ -146,11 +135,7 @@ describe("NativeAdapter class", () => {
146135
describe("KeyboardAction", () => {
147136
it("should delegate calls to pressKey", async () => {
148137
// GIVEN
149-
const clipboardMock = new ClipboardAction();
150-
const keyboardMock = new KeyboardAction();
151-
const mouseMock = new MouseAction();
152-
const windowMock = new WindowAction();
153-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
138+
const SUT = new NativeAdapter(providerRegistry);
154139
const keyToPress = Key.A;
155140

156141
// WHEN
@@ -163,11 +148,7 @@ describe("NativeAdapter class", () => {
163148

164149
it("should delegate calls to releaseButton", async () => {
165150
// GIVEN
166-
const clipboardMock = new ClipboardAction();
167-
const keyboardMock = new KeyboardAction();
168-
const mouseMock = new MouseAction();
169-
const windowMock = new WindowAction();
170-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
151+
const SUT = new NativeAdapter(providerRegistry);
171152
const keyToRelease = Key.A;
172153

173154
// WHEN
@@ -180,11 +161,7 @@ describe("NativeAdapter class", () => {
180161

181162
it("should delegate calls to click", async () => {
182163
// GIVEN
183-
const clipboardMock = new ClipboardAction();
184-
const keyboardMock = new KeyboardAction();
185-
const mouseMock = new MouseAction();
186-
const windowMock = new WindowAction();
187-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
164+
const SUT = new NativeAdapter(providerRegistry);
188165
const keyToClick = Key.A;
189166

190167
// WHEN
@@ -197,11 +174,7 @@ describe("NativeAdapter class", () => {
197174

198175
it("should delegate calls to type", async () => {
199176
// GIVEN
200-
const clipboardMock = new ClipboardAction();
201-
const keyboardMock = new KeyboardAction();
202-
const mouseMock = new MouseAction();
203-
const windowMock = new WindowAction();
204-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
177+
const SUT = new NativeAdapter(providerRegistry);
205178
const stringToType = "testString";
206179

207180
// WHEN
@@ -216,11 +189,7 @@ describe("NativeAdapter class", () => {
216189
describe("ClipboardAction", () => {
217190
it("should delegate calls to copy", async () => {
218191
// GIVEN
219-
const clipboardMock = new ClipboardAction();
220-
const keyboardMock = new KeyboardAction();
221-
const mouseMock = new MouseAction();
222-
const windowMock = new WindowAction();
223-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
192+
const SUT = new NativeAdapter(providerRegistry);
224193
const stringToCopy = "testString";
225194

226195
// WHEN
@@ -233,11 +202,7 @@ describe("NativeAdapter class", () => {
233202

234203
it("should delegate calls to paste", async () => {
235204
// GIVEN
236-
const clipboardMock = new ClipboardAction();
237-
const keyboardMock = new KeyboardAction();
238-
const mouseMock = new MouseAction();
239-
const windowMock = new WindowAction();
240-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
205+
const SUT = new NativeAdapter(providerRegistry);
241206

242207
// WHEN
243208
await SUT.paste();
@@ -250,11 +215,7 @@ describe("NativeAdapter class", () => {
250215
describe("WindowAction", () => {
251216
it("should delegate calls to getActiveWindow", async () => {
252217
// GIVEN
253-
const clipboardMock = new ClipboardAction();
254-
const keyboardMock = new KeyboardAction();
255-
const mouseMock = new MouseAction();
256-
const windowMock = new WindowAction();
257-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
218+
const SUT = new NativeAdapter(providerRegistry);
258219

259220
// WHEN
260221
await SUT.getActiveWindow();
@@ -265,11 +226,7 @@ describe("NativeAdapter class", () => {
265226

266227
it("should delegate calls to getWindows", async () => {
267228
// GIVEN
268-
const clipboardMock = new ClipboardAction();
269-
const keyboardMock = new KeyboardAction();
270-
const mouseMock = new MouseAction();
271-
const windowMock = new WindowAction();
272-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
229+
const SUT = new NativeAdapter(providerRegistry);
273230

274231
// WHEN
275232
await SUT.getWindows();
@@ -280,11 +237,7 @@ describe("NativeAdapter class", () => {
280237

281238
it("should delegate calls to getWindowTitle", async () => {
282239
// GIVEN
283-
const clipboardMock = new ClipboardAction();
284-
const keyboardMock = new KeyboardAction();
285-
const mouseMock = new MouseAction();
286-
const windowMock = new WindowAction();
287-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
240+
const SUT = new NativeAdapter(providerRegistry);
288241
const windowHandle = 123;
289242

290243
// WHEN
@@ -296,11 +249,7 @@ describe("NativeAdapter class", () => {
296249

297250
it("should delegate calls to getWindowRegion", async () => {
298251
// GIVEN
299-
const clipboardMock = new ClipboardAction();
300-
const keyboardMock = new KeyboardAction();
301-
const mouseMock = new MouseAction();
302-
const windowMock = new WindowAction();
303-
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
252+
const SUT = new NativeAdapter(providerRegistry);
304253
const windowHandle = 123;
305254

306255
// WHEN

0 commit comments

Comments
 (0)
Please sign in to comment.