diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/console/actions/completion.test.ts | 28 | ||||
-rw-r--r-- | test/console/actions/console.test.ts | 9 | ||||
-rw-r--r-- | test/console/completion/reducer.test.ts | 168 | ||||
-rw-r--r-- | test/console/reducers/completion.test.ts | 102 | ||||
-rw-r--r-- | test/console/reducers/console.test.ts | 11 |
5 files changed, 168 insertions, 150 deletions
diff --git a/test/console/actions/completion.test.ts b/test/console/actions/completion.test.ts deleted file mode 100644 index cd6899a..0000000 --- a/test/console/actions/completion.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import * as completionActions from "../../../src/console/actions/completion"; -import { - COMPLETION_COMPLETION_NEXT, - COMPLETION_COMPLETION_PREV, -} from "../../../src/console/actions/completion"; -import { expect } from "chai"; - -import browserFake from "webextensions-api-fake"; - -describe("completion actions", () => { - beforeEach(() => { - (global as any).browser = browserFake(); - }); - - describe("completionPrev", () => { - it("create COMPLETION_COMPLETION_PREV action", () => { - const action = completionActions.completionPrev(); - expect(action.type).to.equal(COMPLETION_COMPLETION_PREV); - }); - }); - - describe("completionNext", () => { - it("create COMPLETION_COMPLETION_NEXT action", () => { - const action = completionActions.completionNext(); - expect(action.type).to.equal(COMPLETION_COMPLETION_NEXT); - }); - }); -}); diff --git a/test/console/actions/console.test.ts b/test/console/actions/console.test.ts index f5f102b..736dd54 100644 --- a/test/console/actions/console.test.ts +++ b/test/console/actions/console.test.ts @@ -2,7 +2,6 @@ import * as consoleActions from "../../../src/console/actions/console"; import { CONSOLE_HIDE, CONSOLE_HIDE_COMMAND, - CONSOLE_SET_CONSOLE_TEXT, CONSOLE_SHOW_COMMAND, CONSOLE_SHOW_ERROR, CONSOLE_SHOW_FIND, @@ -60,12 +59,4 @@ describe("console actions", () => { expect(action.type).to.equal(CONSOLE_HIDE_COMMAND); }); }); - - describe("setConsoleText", () => { - it("create CONSOLE_SET_CONSOLE_TEXT action", () => { - const action = consoleActions.setConsoleText("hello world"); - expect(action.type).to.equal(CONSOLE_SET_CONSOLE_TEXT); - expect(action.consoleText).to.equal("hello world"); - }); - }); }); diff --git a/test/console/completion/reducer.test.ts b/test/console/completion/reducer.test.ts new file mode 100644 index 0000000..b742872 --- /dev/null +++ b/test/console/completion/reducer.test.ts @@ -0,0 +1,168 @@ +import reducer, { + defaultState, + State, +} from "../../../src/console/completion/reducer"; +import { expect } from "chai"; +import { + initCompletion, + selectNext, + selectPrev, + setCompletions, + setCompletionSource, +} from "../../../src/console/completion/actions"; +import CompletionType from "../../../src/shared/CompletionType"; + +describe("completion reducer", () => { + describe("initCompletion", () => { + it("initializes completions", () => { + const nextState = reducer( + defaultState, + initCompletion([CompletionType.Bookmarks, CompletionType.History]) + ); + + expect(nextState.completionTypes).deep.equals([ + CompletionType.Bookmarks, + CompletionType.History, + ]); + }); + }); + + describe("setCompletionSource", () => { + it("sets a completion source", () => { + const nextState = reducer(defaultState, setCompletionSource("open ")); + + expect(nextState.completionSource).equals("open "); + }); + }); + + describe("setCompletions", () => { + it("sets completions", () => { + const nextState = reducer( + defaultState, + setCompletions([ + { + name: "Apple", + items: [{}, {}], + }, + { + name: "Banana", + items: [{}], + }, + ]) + ); + + expect(nextState.completions).deep.equals([ + { + name: "Apple", + items: [{}, {}], + }, + { + name: "Banana", + items: [{}], + }, + ]); + }); + }); + + describe("selectNext", () => { + context("when no completion groups", () => { + it("does nothing", () => { + const nextState = reducer(defaultState, selectNext()); + expect(nextState.select).equals(-1); + }); + }); + + context("when no completion items", () => { + it("does nothing", () => { + const state = { + ...defaultState, + completions: [{ name: "apple", items: [] }], + }; + const nextState = reducer(state, selectNext()); + expect(nextState.select).equals(-1); + }); + }); + + context("when completions exist", () => { + it("selects next selection", () => { + let state: State = { + ...defaultState, + select: -1, + completions: [ + { + name: "Apple", + items: [{}, {}], + }, + { + name: "Banana", + items: [{}], + }, + ], + }; + + state = reducer(state, selectNext()); + expect(state.select).equals(0); + + state = reducer(state, selectNext()); + expect(state.select).equals(1); + + state = reducer(state, selectNext()); + expect(state.select).equals(2); + + state = reducer(state, selectNext()); + expect(state.select).equals(-1); + }); + }); + }); + + describe("selectPrev", () => { + context("when no completion groups", () => { + it("does nothing", () => { + const nextState = reducer(defaultState, selectPrev()); + expect(nextState.select).equals(-1); + }); + + context("when no completion items", () => { + it("does nothing", () => { + const state = { + ...defaultState, + completions: [{ name: "apple", items: [] }], + }; + const nextState = reducer(state, selectPrev()); + expect(nextState.select).equals(-1); + }); + }); + }); + + context("when completions exist", () => { + it("selects a previous completion", () => { + let state: State = { + ...defaultState, + select: -1, + completions: [ + { + name: "Apple", + items: [{}, {}], + }, + { + name: "Banana", + items: [{}], + }, + ], + }; + + state = reducer(state, selectPrev()); + expect(state).to.have.property("select", 2); + + state = reducer(state, selectPrev()); + expect(state).to.have.property("select", 1); + + state = reducer(state, selectPrev()); + expect(state).to.have.property("select", 0); + + state = reducer(state, selectPrev()); + expect(state).to.have.property("select", -1); + }); + }); + }); +}); diff --git a/test/console/reducers/completion.test.ts b/test/console/reducers/completion.test.ts deleted file mode 100644 index 6c76369..0000000 --- a/test/console/reducers/completion.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -import reducer, { State } from "../../../src/console/reducers/completion"; -import { expect } from "chai"; -import { - COMPLETION_COMPLETION_NEXT, - COMPLETION_COMPLETION_PREV, - COMPLETION_SET_COMPLETIONS, - CompletionAction, -} from "../../../src/console/actions/completion"; - -describe("completion reducer", () => { - it("return next state for CONSOLE_SET_COMPLETIONS", () => { - const initialState = reducer(undefined, {} as any); - let state: State = { - ...initialState, - select: 0, - completions: [], - }; - const action: CompletionAction = { - type: COMPLETION_SET_COMPLETIONS, - completions: [ - { - name: "Apple", - items: [{}, {}, {}], - }, - { - name: "Banana", - items: [{}, {}, {}], - }, - ], - completionSource: "", - }; - state = reducer(state, action); - expect(state).to.have.property("completions", action.completions); - expect(state).to.have.property("select", -1); - }); - - it("return next state for CONSOLE_COMPLETION_NEXT", () => { - const initialState = reducer(undefined, {} as any); - const action: CompletionAction = { - type: COMPLETION_COMPLETION_NEXT, - }; - let state = { - ...initialState, - select: -1, - completions: [ - { - name: "Apple", - items: [{}, {}], - }, - { - name: "Banana", - items: [{}], - }, - ], - }; - - state = reducer(state, action); - expect(state).to.have.property("select", 0); - - state = reducer(state, action); - expect(state).to.have.property("select", 1); - - state = reducer(state, action); - expect(state).to.have.property("select", 2); - - state = reducer(state, action); - expect(state).to.have.property("select", -1); - }); - - it("return next state for CONSOLE_COMPLETION_PREV", () => { - const initialState = reducer(undefined, {} as any); - const action: CompletionAction = { - type: COMPLETION_COMPLETION_PREV, - }; - let state = { - ...initialState, - select: -1, - completions: [ - { - name: "Apple", - items: [{}, {}], - }, - { - name: "Banana", - items: [{}], - }, - ], - }; - - state = reducer(state, action); - expect(state).to.have.property("select", 2); - - state = reducer(state, action); - expect(state).to.have.property("select", 1); - - state = reducer(state, action); - expect(state).to.have.property("select", 0); - - state = reducer(state, action); - expect(state).to.have.property("select", -1); - }); -}); diff --git a/test/console/reducers/console.test.ts b/test/console/reducers/console.test.ts index 4d4859d..390dc66 100644 --- a/test/console/reducers/console.test.ts +++ b/test/console/reducers/console.test.ts @@ -3,7 +3,6 @@ import { expect } from "chai"; import { CONSOLE_HIDE, CONSOLE_HIDE_COMMAND, - CONSOLE_SET_CONSOLE_TEXT, CONSOLE_SHOW_COMMAND, CONSOLE_SHOW_ERROR, CONSOLE_SHOW_INFO, @@ -66,14 +65,4 @@ describe("console reducer", () => { state = reducer({ ...initialState, mode: "error" }, action); expect(state).to.have.property("mode", "error"); }); - - it("return next state for CONSOLE_SET_CONSOLE_TEXT", () => { - const action: ConsoleAction = { - type: CONSOLE_SET_CONSOLE_TEXT, - consoleText: "hello world", - }; - const state = reducer(undefined, action); - - expect(state).to.have.property("consoleText", "hello world"); - }); }); |