BUG FIX: Click repeat, click a regimen, click save ==> errors

This commit is contained in:
Rick Carlino 2017-08-23 16:42:41 -05:00
parent beba944b97
commit 84c3ec9b8c
2 changed files with 20 additions and 3 deletions

View file

@ -103,6 +103,21 @@ describe("<FarmEventForm/>", () => {
expect(i.state.fe.repeat).toEqual("4");
});
it("sets regimen repeat to `never` as needed", () => {
let result = recombine({
"startDate": "2017-08-01",
"startTime": "08:35",
"endDate": "2017-08-01",
"endTime": "08:33",
"repeat": "1",
"timeUnit": "daily",
"executable_type": "Regimen",
"executable_id": "1"
});
expect(result.time_unit).toEqual("never");
expect(result.time_unit).not.toEqual("daily");
});
it("Recombines local state back into a Partial<TaggedFarmEvent[\"body\"]>", () => {
let result = recombine({
"startDate": "2017-08-01",

View file

@ -29,7 +29,7 @@ import {
import { DropDownItem } from "../../ui/fb_select";
import { history } from "../../history";
// TIL: https://stackoverflow.com/a/24900248/1064917
import { betterMerge } from "../../util";
import { betterMerge, fancyDebug } from "../../util";
import { maybeWarnAboutMissedTasks } from "./util";
import { TzWarning } from "./tz_warning";
import { FarmEventRepeatForm } from "./farm_event_repeat_form";
@ -71,11 +71,13 @@ function destructureFarmEvent(fe: TaggedFarmEvent): FarmEventViewModel {
/** Take a FormViewModel and recombine the fields into a Partial<FarmEvent>
* that can be used to apply updates (such as a PUT request to the API). */
export function recombine(vm: FarmEventViewModel): Partial<TaggedFarmEvent["body"]> {
// Make sure that `repeat` is set to `never` when dealing with regimens.
let isReg = vm.executable_type === "Regimen";
return {
start_time: moment(vm.startDate + " " + vm.startTime).toISOString(),
end_time: moment(vm.endDate + " " + vm.endTime).toISOString(),
repeat: parseInt(vm.repeat, 10),
time_unit: vm.timeUnit as TimeUnit,
repeat: parseInt(vm.repeat, 10) || 1,
time_unit: (isReg ? "never" : vm.timeUnit) as TimeUnit,
executable_id: parseInt(vm.executable_id, 10),
executable_type: vm.executable_type as ("Sequence" | "Regimen"),
};