tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

targets.test.js (4650B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 /**
      7 * Unit tests for targets management on the toolbox store.
      8 */
      9 
     10 const createStore = require("resource://devtools/client/shared/redux/create-store.js");
     11 const reducer = require("resource://devtools/shared/commands/target/reducers/targets.js");
     12 const actions = require("resource://devtools/shared/commands/target/actions/targets.js");
     13 const {
     14  getSelectedTarget,
     15  getToolboxTargets,
     16 } = require("resource://devtools/shared/commands/target/selectors/targets.js");
     17 
     18 describe("Toolbox store - targets", () => {
     19  describe("registerTarget", () => {
     20    it("adds the target to the list", () => {
     21      const store = createStore(reducer);
     22 
     23      const targetFront1 = {
     24        actorID: "target/1",
     25      };
     26 
     27      store.dispatch(actions.registerTarget(targetFront1));
     28 
     29      let targets = getToolboxTargets(store.getState());
     30      expect(targets.length).toEqual(1);
     31      expect(targets[0].actorID).toEqual("target/1");
     32 
     33      const targetFront2 = {
     34        actorID: "target/2",
     35      };
     36 
     37      store.dispatch(actions.registerTarget(targetFront2));
     38 
     39      targets = getToolboxTargets(store.getState());
     40      expect(targets.length).toEqual(2);
     41      expect(targets[0].actorID).toEqual("target/1");
     42      expect(targets[1].actorID).toEqual("target/2");
     43    });
     44  });
     45 
     46  describe("selectTarget", () => {
     47    it("updates the selected property when the target is known", () => {
     48      const store = createStore(reducer);
     49      const targetFront1 = {
     50        actorID: "target/1",
     51      };
     52      store.dispatch(actions.registerTarget(targetFront1));
     53      store.dispatch(actions.selectTarget("target/1"));
     54      expect(getSelectedTarget(store.getState()).actorID).toBe("target/1");
     55    });
     56 
     57    it("does not update the selected property when the target is unknown", () => {
     58      const store = createStore(reducer);
     59      const targetFront1 = {
     60        actorID: "target/1",
     61      };
     62      store.dispatch(actions.registerTarget(targetFront1));
     63      store.dispatch(actions.selectTarget("target/1"));
     64      expect(getSelectedTarget(store.getState()).actorID).toBe("target/1");
     65 
     66      store.dispatch(actions.selectTarget("target/unknown"));
     67      expect(getSelectedTarget(store.getState()).actorID).toBe("target/1");
     68    });
     69 
     70    it("does not update the state when the target is already selected", () => {
     71      const store = createStore(reducer);
     72      const targetFront1 = {
     73        actorID: "target/1",
     74      };
     75      store.dispatch(actions.registerTarget(targetFront1));
     76      store.dispatch(actions.selectTarget("target/1"));
     77 
     78      const state = store.getState();
     79      store.dispatch(actions.selectTarget("target/1"));
     80      expect(store.getState()).toStrictEqual(state);
     81    });
     82  });
     83 
     84  describe("unregisterTarget", () => {
     85    it("removes the target from the list", () => {
     86      const store = createStore(reducer);
     87 
     88      const targetFront1 = {
     89        actorID: "target/1",
     90      };
     91      const targetFront2 = {
     92        actorID: "target/2",
     93      };
     94 
     95      store.dispatch(actions.registerTarget(targetFront1));
     96      store.dispatch(actions.registerTarget(targetFront2));
     97 
     98      let targets = getToolboxTargets(store.getState());
     99      expect(targets.length).toEqual(2);
    100 
    101      store.dispatch(actions.unregisterTarget(targetFront1));
    102      targets = getToolboxTargets(store.getState());
    103      expect(targets.length).toEqual(1);
    104      expect(targets[0].actorID).toEqual("target/2");
    105 
    106      store.dispatch(actions.unregisterTarget(targetFront2));
    107      expect(getToolboxTargets(store.getState()).length).toEqual(0);
    108    });
    109 
    110    it("does not update the state when the target is unknown", () => {
    111      const store = createStore(reducer);
    112 
    113      const targetFront1 = {
    114        actorID: "target/1",
    115      };
    116      const targetFront2 = {
    117        actorID: "target/unknown",
    118      };
    119 
    120      store.dispatch(actions.registerTarget(targetFront1));
    121 
    122      const state = store.getState();
    123      store.dispatch(actions.unregisterTarget(targetFront2));
    124      expect(store.getState()).toStrictEqual(state);
    125    });
    126 
    127    it("resets the selected property when it was the selected target", () => {
    128      const store = createStore(reducer);
    129 
    130      const targetFront1 = {
    131        actorID: "target/1",
    132      };
    133 
    134      store.dispatch(actions.registerTarget(targetFront1));
    135      store.dispatch(actions.selectTarget("target/1"));
    136      expect(getSelectedTarget(store.getState()).actorID).toBe("target/1");
    137 
    138      store.dispatch(actions.unregisterTarget(targetFront1));
    139      expect(getSelectedTarget(store.getState())).toBe(null);
    140    });
    141  });
    142 });