Skip to content

Feature/292/provider registry #293

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 44 additions & 42 deletions index.ts
Original file line number Diff line number Diff line change
@@ -1,37 +1,39 @@
import { NativeAdapter } from "./lib/adapter/native.adapter.class";
import { VisionAdapter } from "./lib/adapter/vision.adapter.class";
import { AssertClass } from "./lib/assert.class";
import { ClipboardClass } from "./lib/clipboard.class";
import { KeyboardClass } from "./lib/keyboard.class";
import { MouseClass } from "./lib/mouse.class";
import { createMovementApi } from "./lib/movement.function";
import { ScreenClass } from "./lib/screen.class";
import { LineHelper } from "./lib/util/linehelper.class";
import { createWindowApi } from "./lib/window.function";
import {NativeAdapter} from "./lib/adapter/native.adapter.class";
import {VisionAdapter} from "./lib/adapter/vision.adapter.class";
import {AssertClass} from "./lib/assert.class";
import {ClipboardClass} from "./lib/clipboard.class";
import {KeyboardClass} from "./lib/keyboard.class";
import {MouseClass} from "./lib/mouse.class";
import {createMovementApi} from "./lib/movement.function";
import {ScreenClass} from "./lib/screen.class";
import {LineHelper} from "./lib/util/linehelper.class";
import {createWindowApi} from "./lib/window.function";
import providerRegistry from "./lib/provider/provider-registry.class";

export {
AssertClass,
ClipboardClass,
KeyboardClass,
MouseClass,
ScreenClass,
AssertClass,
ClipboardClass,
KeyboardClass,
MouseClass,
ScreenClass,
providerRegistry
}

export { jestMatchers } from "./lib/expect/jest.matcher.function";
export { sleep } from "./lib/sleep.function";
export { Image } from "./lib/image.class";
export { Key } from "./lib/key.enum";
export { Button } from "./lib/button.enum";
export { centerOf, randomPointIn } from "./lib/location.function";
export { LocationParameters } from "./lib/locationparameters.class";
export { OptionalSearchParameters } from "./lib/optionalsearchparameters.class";
export { linear } from "./lib/movementtype.function";
export { Point } from "./lib/point.class";
export { Region } from "./lib/region.class";
export { Window } from "./lib/window.class";
export {jestMatchers} from "./lib/expect/jest.matcher.function";
export {sleep} from "./lib/sleep.function";
export {Image} from "./lib/image.class";
export {Key} from "./lib/key.enum";
export {Button} from "./lib/button.enum";
export {centerOf, randomPointIn} from "./lib/location.function";
export {LocationParameters} from "./lib/locationparameters.class";
export {OptionalSearchParameters} from "./lib/optionalsearchparameters.class";
export {linear} from "./lib/movementtype.function";
export {Point} from "./lib/point.class";
export {Region} from "./lib/region.class";
export {Window} from "./lib/window.class";

const screenActions = new VisionAdapter();
const nativeActions = new NativeAdapter();
const screenActions = new VisionAdapter(providerRegistry);
const nativeActions = new NativeAdapter(providerRegistry);
const lineHelper = new LineHelper();

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

const {straightTo, up, down, left, right} = createMovementApi(nativeActions, lineHelper);
const {getWindows, getActiveWindow } = createWindowApi(nativeActions);
const {getWindows, getActiveWindow} = createWindowApi(nativeActions);

export {
clipboard,
keyboard,
mouse,
screen,
assert,
straightTo,
up,
down,
left,
right,
getWindows,
getActiveWindow,
clipboard,
keyboard,
mouse,
screen,
assert,
straightTo,
up,
down,
left,
right,
getWindows,
getActiveWindow,
};
145 changes: 47 additions & 98 deletions lib/adapter/native.adapter.class.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,42 @@ import { Button } from "../button.enum";
import { Key } from "../key.enum";
import { Point } from "../point.class";
import { NativeAdapter } from "./native.adapter.class";
import ClipboardAction from "../provider/native/clipboardy-clipboard-action.class";
import KeyboardAction from "../provider/native/libnut-keyboard-action.class";
import MouseAction from "../provider/native/libnut-mouse-action.class";
import WindowAction from "../provider/native/libnut-window-action.class";
import ClipboardAction from "../provider/native/clipboardy-clipboard.class";
import KeyboardAction from "../provider/native/libnut-keyboard.class";
import MouseAction from "../provider/native/libnut-mouse.class";
import WindowAction from "../provider/native/libnut-window.class";
import providerRegistry from "../provider/provider-registry.class";

jest.mock("../provider/native/clipboardy-clipboard.class");
jest.mock("../provider/native/libnut-mouse.class");
jest.mock("../provider/native/libnut-keyboard.class");
jest.mock("../provider/native/libnut-window.class");

let clipboardMock: ClipboardAction;
let keyboardMock: KeyboardAction;
let mouseMock: MouseAction;
let windowMock: WindowAction;

beforeAll(() => {
clipboardMock = new ClipboardAction();
keyboardMock = new KeyboardAction();
mouseMock = new MouseAction();
windowMock = new WindowAction();
providerRegistry.registerClipboardProvider(clipboardMock);
providerRegistry.registerKeyboardProvider(keyboardMock);
providerRegistry.registerMouseProvider(mouseMock);
providerRegistry.registerWindowProvider(windowMock);
});

jest.mock("../provider/native/clipboardy-clipboard-action.class");
jest.mock("../provider/native/libnut-mouse-action.class");
jest.mock("../provider/native/libnut-keyboard-action.class");
jest.mock("../provider/native/libnut-window-action.class");
beforeEach(() => {
jest.resetAllMocks();
});

describe("NativeAdapter class", () => {
describe("MouseAction", () => {
it("should delegate calls to setMouseDelay", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const delay = 5;

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

it("should delegate calls to setMousePosition", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const newPosition = new Point(10, 10);

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

it("should delegate calls to currentMousePosition", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);

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

it("should delegate calls to leftClick", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);

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

it("should delegate calls to rightClick", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);

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

it("should delegate calls to middleClick", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);

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

it("should delegate calls to pressButton", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const buttonToPress = Button.LEFT;

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

it("should delegate calls to releaseButton", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const buttonToRelease = Button.LEFT;

// WHEN
Expand All @@ -146,11 +135,7 @@ describe("NativeAdapter class", () => {
describe("KeyboardAction", () => {
it("should delegate calls to pressKey", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const keyToPress = Key.A;

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

it("should delegate calls to releaseButton", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const keyToRelease = Key.A;

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

it("should delegate calls to click", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const keyToClick = Key.A;

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

it("should delegate calls to type", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const stringToType = "testString";

// WHEN
Expand All @@ -216,11 +189,7 @@ describe("NativeAdapter class", () => {
describe("ClipboardAction", () => {
it("should delegate calls to copy", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const stringToCopy = "testString";

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

it("should delegate calls to paste", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);

// WHEN
await SUT.paste();
Expand All @@ -250,11 +215,7 @@ describe("NativeAdapter class", () => {
describe("WindowAction", () => {
it("should delegate calls to getActiveWindow", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);

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

it("should delegate calls to getWindows", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);

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

it("should delegate calls to getWindowTitle", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const windowHandle = 123;

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

it("should delegate calls to getWindowRegion", async () => {
// GIVEN
const clipboardMock = new ClipboardAction();
const keyboardMock = new KeyboardAction();
const mouseMock = new MouseAction();
const windowMock = new WindowAction();
const SUT = new NativeAdapter(clipboardMock, keyboardMock, mouseMock, windowMock);
const SUT = new NativeAdapter(providerRegistry);
const windowHandle = 123;

// WHEN
Expand Down
Loading