Farmbot-Web-App/frontend/connectivity/__tests__/index_test.ts

104 lines
3.4 KiB
TypeScript
Raw Normal View History

2019-09-08 17:03:27 -06:00
jest.mock("../../redux/store", () => {
return {
store: {
dispatch: jest.fn(),
getState: jest.fn((): DeepPartial<Everything> => ({
bot: {
connectivity: {
pings: {
"already_complete": {
kind: "complete",
start: 1,
end: 2
}
}
}
}
}))
}
};
});
2017-12-25 18:54:18 -07:00
2019-01-07 22:21:48 -07:00
jest.mock("../auto_sync_handle_inbound", () => ({ handleInbound: jest.fn() }));
2017-12-25 18:54:18 -07:00
2019-09-23 12:56:35 -06:00
import {
dispatchNetworkUp, dispatchNetworkDown, dispatchQosStart,
networkUptimeThrottleStats,
} from "../index";
2017-10-04 09:17:16 -06:00
import { networkUp, networkDown } from "../actions";
2017-12-25 18:54:18 -07:00
import { GetState } from "../../redux/interfaces";
import { autoSync, routeMqttData } from "../auto_sync";
import { handleInbound } from "../auto_sync_handle_inbound";
2019-09-08 17:03:27 -06:00
import { store } from "../../redux/store";
import { DeepPartial } from "redux";
import { Everything } from "../../interfaces";
2019-09-12 07:35:58 -06:00
import { Actions } from "../../constants";
2019-01-07 22:21:48 -07:00
const NOW = new Date();
const SHORT_TIME_LATER = new Date(NOW.getTime() + 500).getTime();
const LONGER_TIME_LATER = new Date(NOW.getTime() + 5000).getTime();
2019-09-08 17:03:27 -06:00
const resetStats = () => {
networkUptimeThrottleStats["user.api"] = 0;
networkUptimeThrottleStats["user.mqtt"] = 0;
networkUptimeThrottleStats["bot.mqtt"] = 0;
};
2019-01-07 22:21:48 -07:00
2017-10-04 09:17:16 -06:00
describe("dispatchNetworkUp", () => {
const NOW_UP = networkUp("user.mqtt", NOW.getTime());
const LATER_UP = networkUp("user.mqtt", LONGER_TIME_LATER);
2019-01-07 22:21:48 -07:00
2017-10-04 09:17:16 -06:00
it("calls redux directly", () => {
dispatchNetworkUp("user.mqtt", NOW.getTime());
2019-09-08 17:03:27 -06:00
expect(store.dispatch).toHaveBeenLastCalledWith(NOW_UP);
dispatchNetworkUp("user.mqtt", SHORT_TIME_LATER);
2019-09-08 17:03:27 -06:00
expect(store.dispatch).toHaveBeenLastCalledWith(NOW_UP);
dispatchNetworkUp("user.mqtt", LONGER_TIME_LATER);
2019-09-08 17:03:27 -06:00
expect(store.dispatch).toHaveBeenLastCalledWith(LATER_UP);
2017-10-04 09:17:16 -06:00
});
it("ignores `bot.mqtt`, now handled by the QoS Ping system", () => {
dispatchNetworkUp("bot.mqtt", 123);
expect(store.dispatch).not.toHaveBeenCalled();
});
2017-10-04 09:17:16 -06:00
});
describe("dispatchNetworkDown", () => {
const NOW_DOWN = networkDown("user.api", NOW.getTime());
const LATER_DOWN = networkDown("user.api", LONGER_TIME_LATER);
2019-09-08 17:03:27 -06:00
beforeEach(resetStats);
it("ignores `bot.mqtt`, now handled by the QoS Ping system", () => {
dispatchNetworkDown("bot.mqtt", 123);
expect(store.dispatch).not.toHaveBeenCalled();
});
2019-01-07 22:21:48 -07:00
2017-10-04 09:17:16 -06:00
it("calls redux directly", () => {
dispatchNetworkDown("user.api", NOW.getTime());
2019-09-08 17:03:27 -06:00
expect(store.dispatch).toHaveBeenLastCalledWith(NOW_DOWN);
dispatchNetworkDown("user.api", SHORT_TIME_LATER);
2019-09-08 17:03:27 -06:00
expect(store.dispatch).toHaveBeenLastCalledWith(NOW_DOWN);
dispatchNetworkDown("user.api", LONGER_TIME_LATER);
2019-09-08 17:03:27 -06:00
expect(store.dispatch).toHaveBeenLastCalledWith(LATER_DOWN);
});
2017-10-04 09:17:16 -06:00
});
2017-12-25 18:54:18 -07:00
describe("autoSync", () => {
it("calls the appropriate handler, applying arguments as needed", () => {
const dispatch = jest.fn();
const getState: GetState = jest.fn();
const chan = "chanName";
const payload = Buffer.from([]);
2017-12-25 18:54:18 -07:00
const rmd = routeMqttData(chan, payload);
autoSync(dispatch, getState)(chan, payload);
expect(handleInbound).toHaveBeenCalledWith(dispatch, getState, rmd);
});
});
2019-09-08 17:03:27 -06:00
describe("dispatchQosStart", () => {
it("dispatches when a QoS ping is starting", () => {
const id = "hello";
dispatchQosStart(id);
expect(store.dispatch)
2019-09-12 07:35:58 -06:00
.toHaveBeenCalledWith({ type: Actions.PING_START, payload: { id } });
2019-09-08 17:03:27 -06:00
});
});