farmbot-web-frontend
Version:
Farmbot web frontend.
106 lines (96 loc) • 3.77 kB
text/typescript
import { deleteRegimen, saveRegimen } from "../../regimens/actions";
import { Regimen } from "../../regimens/interfaces";
import { RegimensState } from "../../regimens/interfaces";
import * as toast from "../../logger";
let moxios = require("moxios");
describe("Regimen actions", function () {
let initialState: RegimensState;
let regimen: Regimen;
beforeEach(() => {
moxios.install();
regimen = {
id: 123,
name: "Whatevs",
color: "red",
regimen_items: [],
dirty: true
};
initialState = { all: [regimen], current: 0 };
});
afterEach(() => {
moxios.uninstall();
});
it("deletes a Regimen", (done) => {
let spy = jasmine.createSpy("delete_success");
let thunk = deleteRegimen(regimen, "//altavista.com");
let response = { id: 1, firstName: "Fred", lastName: "Flintstone" };
spyOn(toast, "success");
thunk(spy);
moxios
.wait(() => {
let request = moxios.requests.mostRecent();
request
.respondWith({ status: 200, response })
.then(function () {
// Expect the request to have been called with the regimen
expect(spy).toHaveBeenCalledWith(
{ type: "DELETE_REGIMEN_OK",
payload: regimen });
expect(toast.success).toHaveBeenCalledWith("Regimen deleted.");
done();
});
});
});
it("fails to delete a Regimen", (done) => {
let spy = jasmine.createSpy("delete_fail");
let thunk = deleteRegimen(regimen, "//altavista.com");
spyOn(toast, "error");
let response = { id: 1, firstName: "Fred", lastName: "Flintstone" };
thunk(spy);
moxios
.wait(() => {
let request = moxios.requests.mostRecent();
request
.respondWith({ status: 404, response })
.then(function () {
expect(toast.error).toHaveBeenCalledWith("Unable to delete regimen.");
done();
});
});
});
it("saves a Regimen", (done) => {
let spy = jasmine.createSpy("save_success");
let thunk = saveRegimen(regimen, "http://www.pmichaud.com/toast/");
let response = { id: 1, firstName: "Fred", lastName: "Flintstone" };
spyOn(toast, "success");
thunk(spy);
moxios
.wait(() => {
let request = moxios.requests.mostRecent();
request
.respondWith({ status: 200, response })
.then(function () {
expect(toast.success).toHaveBeenCalledWith("Regimen saved.");
done();
});
});
});
it("fails to save a Regimen", (done) => {
let spy = jasmine.createSpy("save_fail");
let thunk = saveRegimen(regimen, "http://toastytech.com/evil/");
let response = { wrong: "does not work" };
spyOn(toast, "error");
thunk(spy);
moxios
.wait(() => {
let request = moxios.requests.mostRecent();
request
.respondWith({ status: 404, response })
.then(function () {
expect(toast.error).toHaveBeenCalledWith("Wrong does not work.",
"Unable to save regimen.");
done();
});
});
});
});