diff options
| author | Shin'ya Ueoka <ueokande@i-beam.org> | 2021-04-04 21:34:13 +0900 | 
|---|---|---|
| committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2021-04-05 22:21:33 +0900 | 
| commit | 3a7e55fd292196f600c11fad36425014677a1351 (patch) | |
| tree | 53827f62aaea916cf8c76f6d3e08866f1db0d716 /test/console | |
| parent | 39f96db5a3187b4ce2e7df529eaa456ee862dd68 (diff) | |
Separate Command and Completion reducer
Diffstat (limited to 'test/console')
| -rw-r--r-- | test/console/actions/completion.test.ts | 28 | ||||
| -rw-r--r-- | test/console/actions/console.test.ts | 38 | ||||
| -rw-r--r-- | test/console/reducers/completion.test.ts | 102 | ||||
| -rw-r--r-- | test/console/reducers/console.test.ts | 127 | 
4 files changed, 167 insertions, 128 deletions
| diff --git a/test/console/actions/completion.test.ts b/test/console/actions/completion.test.ts new file mode 100644 index 0000000..cd6899a --- /dev/null +++ b/test/console/actions/completion.test.ts @@ -0,0 +1,28 @@ +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 a03117a..f5f102b 100644 --- a/test/console/actions/console.test.ts +++ b/test/console/actions/console.test.ts @@ -1,5 +1,13 @@ -import * as actions from "../../../src/console/actions";  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, +  CONSOLE_SHOW_INFO, +} from "../../../src/console/actions/console";  import { expect } from "chai";  import browserFake from "webextensions-api-fake"; @@ -12,13 +20,13 @@ describe("console actions", () => {    describe("hide", () => {      it("create CONSOLE_HIDE action", () => {        const action = consoleActions.hide(); -      expect(action.type).to.equal(actions.CONSOLE_HIDE); +      expect(action.type).to.equal(CONSOLE_HIDE);      });    });    describe("showCommand", () => {      it("create CONSOLE_SHOW_COMMAND action", async () => {        const action = await consoleActions.showCommand("hello"); -      expect(action.type).to.equal(actions.CONSOLE_SHOW_COMMAND); +      expect(action.type).to.equal(CONSOLE_SHOW_COMMAND);        expect(action.text).to.equal("hello");      });    }); @@ -26,14 +34,14 @@ describe("console actions", () => {    describe("showFind", () => {      it("create CONSOLE_SHOW_FIND action", () => {        const action = consoleActions.showFind(); -      expect(action.type).to.equal(actions.CONSOLE_SHOW_FIND); +      expect(action.type).to.equal(CONSOLE_SHOW_FIND);      });    });    describe("showError", () => {      it("create CONSOLE_SHOW_ERROR action", () => {        const action = consoleActions.showError("an error"); -      expect(action.type).to.equal(actions.CONSOLE_SHOW_ERROR); +      expect(action.type).to.equal(CONSOLE_SHOW_ERROR);        expect(action.text).to.equal("an error");      });    }); @@ -41,7 +49,7 @@ describe("console actions", () => {    describe("showInfo", () => {      it("create CONSOLE_SHOW_INFO action", () => {        const action = consoleActions.showInfo("an info"); -      expect(action.type).to.equal(actions.CONSOLE_SHOW_INFO); +      expect(action.type).to.equal(CONSOLE_SHOW_INFO);        expect(action.text).to.equal("an info");      });    }); @@ -49,29 +57,15 @@ describe("console actions", () => {    describe("hideCommand", () => {      it("create CONSOLE_HIDE_COMMAND action", () => {        const action = consoleActions.hideCommand(); -      expect(action.type).to.equal(actions.CONSOLE_HIDE_COMMAND); +      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(actions.CONSOLE_SET_CONSOLE_TEXT); +      expect(action.type).to.equal(CONSOLE_SET_CONSOLE_TEXT);        expect(action.consoleText).to.equal("hello world");      });    }); - -  describe("completionPrev", () => { -    it("create CONSOLE_COMPLETION_PREV action", () => { -      const action = consoleActions.completionPrev(); -      expect(action.type).to.equal(actions.CONSOLE_COMPLETION_PREV); -    }); -  }); - -  describe("completionNext", () => { -    it("create CONSOLE_COMPLETION_NEXT action", () => { -      const action = consoleActions.completionNext(); -      expect(action.type).to.equal(actions.CONSOLE_COMPLETION_NEXT); -    }); -  });  }); diff --git a/test/console/reducers/completion.test.ts b/test/console/reducers/completion.test.ts new file mode 100644 index 0000000..6c76369 --- /dev/null +++ b/test/console/reducers/completion.test.ts @@ -0,0 +1,102 @@ +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 64e8eb3..4d4859d 100644 --- a/test/console/reducers/console.test.ts +++ b/test/console/reducers/console.test.ts @@ -1,8 +1,14 @@ -import * as actions from "../../../src/console/actions"; -import reducer, { State } from "../../../src/console/reducers"; +import reducer from "../../../src/console/reducers/console";  import { expect } from "chai"; -import CompletionType from "../../../src/shared/CompletionType"; -import { ConsoleAction } from "../../../src/console/actions"; +import { +  CONSOLE_HIDE, +  CONSOLE_HIDE_COMMAND, +  CONSOLE_SET_CONSOLE_TEXT, +  CONSOLE_SHOW_COMMAND, +  CONSOLE_SHOW_ERROR, +  CONSOLE_SHOW_INFO, +  ConsoleAction, +} from "../../../src/console/actions/console";  describe("console reducer", () => {    it("return the initial state", () => { @@ -10,21 +16,18 @@ describe("console reducer", () => {      expect(state).to.have.property("mode", "");      expect(state).to.have.property("messageText", "");      expect(state).to.have.property("consoleText", ""); -    expect(state).to.have.deep.property("completions", []); -    expect(state).to.have.property("select", -1);    });    it("return next state for CONSOLE_HIDE", () => {      const initialState = reducer(undefined, {} as any); -    const action: actions.ConsoleAction = { type: actions.CONSOLE_HIDE }; +    const action: ConsoleAction = { type: CONSOLE_HIDE };      const state = reducer({ ...initialState, mode: "error" }, action);      expect(state).to.have.property("mode", "");    });    it("return next state for CONSOLE_SHOW_COMMAND", () => { -    const action: actions.ConsoleAction = { -      type: actions.CONSOLE_SHOW_COMMAND, -      completionTypes: [CompletionType.SearchEngines, CompletionType.History], +    const action: ConsoleAction = { +      type: CONSOLE_SHOW_COMMAND,        text: "open ",      };      const state = reducer(undefined, action); @@ -33,8 +36,8 @@ describe("console reducer", () => {    });    it("return next state for CONSOLE_SHOW_INFO", () => { -    const action: actions.ConsoleAction = { -      type: actions.CONSOLE_SHOW_INFO, +    const action: ConsoleAction = { +      type: CONSOLE_SHOW_INFO,        text: "an info",      };      const state = reducer(undefined, action); @@ -43,8 +46,8 @@ describe("console reducer", () => {    });    it("return next state for CONSOLE_SHOW_ERROR", () => { -    const action: actions.ConsoleAction = { -      type: actions.CONSOLE_SHOW_ERROR, +    const action: ConsoleAction = { +      type: CONSOLE_SHOW_ERROR,        text: "an error",      };      const state = reducer(undefined, action); @@ -54,8 +57,8 @@ describe("console reducer", () => {    it("return next state for CONSOLE_HIDE_COMMAND", () => {      const initialState = reducer(undefined, {} as any); -    const action: actions.ConsoleAction = { -      type: actions.CONSOLE_HIDE_COMMAND, +    const action: ConsoleAction = { +      type: CONSOLE_HIDE_COMMAND,      };      let state = reducer({ ...initialState, mode: "command" }, action);      expect(state).to.have.property("mode", ""); @@ -65,100 +68,12 @@ describe("console reducer", () => {    });    it("return next state for CONSOLE_SET_CONSOLE_TEXT", () => { -    const action: actions.ConsoleAction = { -      type: actions.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");    }); - -  it("return next state for CONSOLE_SET_COMPLETIONS", () => { -    const initialState = reducer(undefined, {} as any); -    let state: State = { -      ...initialState, -      select: 0, -      completions: [], -    }; -    const action: actions.ConsoleAction = { -      type: actions.CONSOLE_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: ConsoleAction = { type: actions.CONSOLE_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: ConsoleAction = { type: actions.CONSOLE_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); -  });  }); | 
