Test for EditFEForm#isOneTime

pull/354/head
Rick Carlino 2017-07-26 15:18:28 -05:00
parent 376a8123d9
commit e53196fe54
7 changed files with 51 additions and 31 deletions

View File

@ -1,10 +1,37 @@
import { Everything } from "../../interfaces";
import { buildResourceIndex } from "../resource_index_builder";
import { TaggedFarmEvent } from "../../resources/tagged_resources";
import { TaggedFarmEvent, TaggedSequence, TaggedRegimen } from "../../resources/tagged_resources";
import { ExecutableType } from "../../farm_designer/interfaces";
export let resources: Everything["resources"] = buildResourceIndex();
export function fakeSequence(): TaggedSequence {
return {
"kind": "sequences",
uuid: "---",
"body": {
args: { version: 4 },
id: 12,
color: "red",
name: "fake",
kind: "sequence",
body: []
}
};
}
export function fakeRegimen(): TaggedRegimen {
return {
uuid: "Whatever",
kind: "regimens",
body: {
name: "Foo",
color: "red",
regimen_items: []
}
};
}
export function fakeFarmEvent(exe_type: ExecutableType,
exe_id: number): TaggedFarmEvent {
return {

View File

@ -12,7 +12,7 @@ export const TIME = {
SATURDAY: moment("2017-06-24T06:30:00.000-05:00")
};
export let fake_fe = (): FarmEventWithExecutable => {
export let fakeFarmEventWithExecutable = (): FarmEventWithExecutable => {
return {
id: 1,
start_time: "---",

View File

@ -1,6 +1,7 @@
import * as react from "react";
import { EditFEForm } from "../edit_fe_form";
import { fakeFarmEvent } from "../../../__test_support__/fake_state/resources";
import * as React from "react";
import { fakeFarmEvent, fakeSequence } from "../../../__test_support__/fake_state/resources";
import { mount } from "enzyme";
import { EditFEForm, EditFEProps } from "../edit_fe_form";
describe("<FarmEventForm/>", () => {
let props = (): EditFEForm["props"] => ({
@ -9,7 +10,7 @@ describe("<FarmEventForm/>", () => {
repeatOptions: [],
farmEvent: fakeFarmEvent("Sequence", 12),
dispatch: jest.fn(),
findExecutable: jest.fn(),
findExecutable: jest.fn(() => fakeSequence()),
title: "title"
});
let context = { form: new EditFEForm(props()) };
@ -24,7 +25,12 @@ describe("<FarmEventForm/>", () => {
});
it("determines if it is a one time event", () => {
expect(context.form.isOneTime).toBe(true);
let el = mount<EditFEProps>(<EditFEForm {...props() } />);
let i = el.instance() as EditFEForm;
expect(i.isOneTime).toBe(true);
i.mergeState("timeUnit", "daily");
i.forceUpdate();
expect(i.isOneTime).toBe(false);
});
it("has a dispatch");

View File

@ -3,7 +3,7 @@ import * as moment from "moment";
import { occurrence } from "../occurrence";
import {
TIME,
fake_fe
fakeFarmEventWithExecutable
} from "../../../../__test_support__/farm_event_calendar_support";
describe("calendar", () => {
@ -15,8 +15,8 @@ describe("calendar", () => {
it("inserts dates", () => {
let calendar = new Calendar();
calendar.insert(occurrence(TIME.MONDAY, fake_fe()));
calendar.insert(occurrence(TIME.TUESDAY, fake_fe()));
calendar.insert(occurrence(TIME.MONDAY, fakeFarmEventWithExecutable()));
calendar.insert(occurrence(TIME.TUESDAY, fakeFarmEventWithExecutable()));
expect(calendar.getAll().length).toEqual(2);
expect(calendar.value).toBeInstanceOf(Object);
expect(calendar.value["0619"]).toBeInstanceOf(Array);
@ -25,7 +25,7 @@ describe("calendar", () => {
it("finds by date", () => {
let calendar = new Calendar();
let wow = occurrence(TIME.MONDAY, fake_fe());
let wow = occurrence(TIME.MONDAY, fakeFarmEventWithExecutable());
calendar.insert(wow);
expect(calendar.findByDate(TIME.FRIDAY)).toBeInstanceOf(Array);
expect(calendar.findByDate(TIME.MONDAY)).toContain(wow);

View File

@ -2,12 +2,12 @@ import { occurrence } from "../occurrence";
import * as moment from "moment";
import {
TIME,
fake_fe
fakeFarmEventWithExecutable
} from "../../../../__test_support__/farm_event_calendar_support";
describe("occurrence", () => {
it("builds a single entry for the calendar", () => {
let fe = fake_fe();
let fe = fakeFarmEventWithExecutable();
let t = occurrence(TIME.MONDAY, fe);
expect(t.executableId).toBe(fe.executable_id);
expect(t.mmdd).toBe("0619");

View File

@ -80,7 +80,7 @@ function recombine(vm: FarmEventViewModel): Partial<TaggedFarmEvent["body"]> {
};
}
interface Props {
export interface EditFEProps {
deviceTimezone: string | undefined;
executableOptions: TightlyCoupledFarmEventDropDown[];
repeatOptions: DropDownItem[];
@ -102,7 +102,7 @@ interface State {
localCopyDirty: boolean;
}
export class EditFEForm extends React.Component<Props, State> {
export class EditFEForm extends React.Component<EditFEProps, State> {
state: State = { fe: {}, localCopyDirty: false };
get isOneTime() { return this.fieldGet("timeUnit") === NEVER; }
@ -134,6 +134,7 @@ export class EditFEForm extends React.Component<Props, State> {
}
executableGet = (): TightlyCoupledFarmEventDropDown => {
debugger;
let executable_type: ExecutableType =
(this.executable.kind === "sequences") ? "Sequence" : "Regimen";
return {
@ -207,11 +208,6 @@ export class EditFEForm extends React.Component<Props, State> {
let isSaved = !isSaving && !isDirty;
let repeats = this.fieldGet("timeUnit") !== NEVER;
let allowRepeat = (!this.isReg && repeats);
fancyDebug({
timeUnit: this.fieldGet("timeUnit"),
repeats,
allowRepeat
});
return <div className="panel-container magenta-panel add-farm-event-panel">
<div className="panel-header magenta-panel">
<p className="panel-title"> <BackArrow /> {this.props.title} </p>

View File

@ -3,19 +3,10 @@ import * as React from "react";
import { mount } from "enzyme";
import { CopyButton } from "../copy_button";
import { TaggedRegimen } from "../../../resources/tagged_resources";
import { fakeRegimen } from "../../../__test_support__/fake_state/resources";
describe("Copy button", () => {
function fakeRegimen(): TaggedRegimen {
return {
uuid: "Whatever",
kind: "regimens",
body: {
name: "Foo",
color: "red",
regimen_items: []
}
};
}
it("Initializes a new regimen on click", () => {
let dispatch = jest.fn();
let regimen = fakeRegimen();