weeks refactor
parent
d3732aed20
commit
69462e4b60
|
@ -1,25 +1,22 @@
|
|||
import { regimensReducer, RegimenState } from "../reducer";
|
||||
import { regimensReducer, RegimenState, newWeek } from "../reducer";
|
||||
import { Actions } from "../../constants";
|
||||
import { popWeek, pushWeek, selectDays, deselectDays } from "../bulk_scheduler/actions";
|
||||
import {
|
||||
popWeek, pushWeek, selectDays, deselectDays,
|
||||
} from "../bulk_scheduler/actions";
|
||||
import { defensiveClone } from "../../util";
|
||||
import { Week } from "../bulk_scheduler/interfaces";
|
||||
|
||||
const week = newWeek();
|
||||
Object.entries(week.days).map(([day, _]: [keyof Week["days"], boolean]) => {
|
||||
week.days[day] = true;
|
||||
});
|
||||
week.days.day7 = false;
|
||||
|
||||
const STATE: RegimenState = {
|
||||
dailyOffsetMs: 300000,
|
||||
selectedSequenceUUID: "Sequence.71.167",
|
||||
currentRegimen: "Regimen.4.56",
|
||||
weeks: [
|
||||
{
|
||||
"days": {
|
||||
"day1": true,
|
||||
"day2": true,
|
||||
"day3": true,
|
||||
"day4": true,
|
||||
"day5": true,
|
||||
"day6": true,
|
||||
"day7": false
|
||||
}
|
||||
},
|
||||
],
|
||||
weeks: [week],
|
||||
schedulerOpen: false,
|
||||
};
|
||||
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
import * as React from "react";
|
||||
import { render } from "enzyme";
|
||||
import { WeekRow } from "../bulk_scheduler/week_row";
|
||||
import { WeekRowProps } from "../bulk_scheduler/interfaces";
|
||||
import { betterMerge } from "../../util";
|
||||
|
||||
function weekProps(p?: Partial<WeekRowProps>): WeekRowProps {
|
||||
return betterMerge({
|
||||
dispatch: jest.fn(),
|
||||
index: 0,
|
||||
week: {
|
||||
"days": {
|
||||
"day1": false,
|
||||
"day2": false,
|
||||
"day3": false,
|
||||
"day4": false,
|
||||
"day5": false,
|
||||
"day6": false,
|
||||
"day7": false
|
||||
}
|
||||
}
|
||||
}, p || {});
|
||||
}
|
||||
|
||||
describe("<WeekRow/>", () => {
|
||||
it("renders week 1 day numbers", () => {
|
||||
const wrapper = render(<WeekRow {...weekProps() } />);
|
||||
const txt = wrapper.text();
|
||||
expect(txt).toEqual("Week 11234567");
|
||||
});
|
||||
});
|
||||
|
||||
describe("<WeekRow/>", () => {
|
||||
it("renders week 2 day numbers", () => {
|
||||
const wrapper = render(<WeekRow {...weekProps({ index: 1 }) } />);
|
||||
const txt = wrapper.text();
|
||||
expect(txt).toEqual("Week 2891011121314");
|
||||
});
|
||||
});
|
|
@ -19,6 +19,7 @@ import { arrayUnwrap } from "../../../resources/util";
|
|||
import { overwrite } from "../../../api/crud";
|
||||
import { fakeVariableNameSet } from "../../../__test_support__/fake_variables";
|
||||
import { error, warning } from "../../../toast/toast";
|
||||
import { newWeek } from "../../reducer";
|
||||
|
||||
const sequence_id = 23;
|
||||
const regimen_id = 32;
|
||||
|
@ -53,18 +54,9 @@ describe("commitBulkEditor()", () => {
|
|||
state.resources.consumers.regimens.currentRegimen = regimenUuid;
|
||||
state.resources.consumers.regimens.selectedSequenceUUID = sequenceUuid;
|
||||
state.resources.consumers.regimens.dailyOffsetMs = 2000;
|
||||
state.resources.consumers.regimens.weeks = [{
|
||||
days:
|
||||
{
|
||||
day1: true,
|
||||
day2: false,
|
||||
day3: false,
|
||||
day4: false,
|
||||
day5: false,
|
||||
day6: false,
|
||||
day7: false
|
||||
}
|
||||
}];
|
||||
const week = newWeek();
|
||||
week.days.day1 = true;
|
||||
state.resources.consumers.regimens.weeks = [week];
|
||||
return state;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
import { groupRegimenItemsByWeek } from "../group_regimen_items_by_week";
|
||||
import { fakeSequence } from "../../../__test_support__/fake_state/resources";
|
||||
import { newWeek } from "../../reducer";
|
||||
|
||||
describe("groupRegimenItemsByWeek()", () => {
|
||||
it("groups regimen items by week", () => {
|
||||
const sequence = fakeSequence();
|
||||
sequence.body.id = 1;
|
||||
const week1 = newWeek();
|
||||
week1.days.day1 = true;
|
||||
const week2 = newWeek();
|
||||
const week3 = newWeek();
|
||||
week3.days.day2 = true;
|
||||
week3.days.day4 = true;
|
||||
const { day1, day2, day3, day4, day5, day6, day7 } = week3.days;
|
||||
week3.days = { day1, day4, day3, day2, day5, day6, day7 };
|
||||
const weeks = [week1, week2, week3];
|
||||
const result = groupRegimenItemsByWeek(weeks, 100, sequence.body);
|
||||
expect(result).toEqual([
|
||||
{ time_offset: 100, sequence_id: 1 },
|
||||
{ time_offset: 1296000100, sequence_id: 1 },
|
||||
{ time_offset: 1468800100, sequence_id: 1 },
|
||||
]);
|
||||
});
|
||||
|
||||
it("handles missing sequence id", () => {
|
||||
const sequence = fakeSequence();
|
||||
sequence.body.id = undefined;
|
||||
const week = newWeek();
|
||||
week.days.day1 = true;
|
||||
const result = groupRegimenItemsByWeek([week], 0, sequence.body);
|
||||
expect(result).toEqual([
|
||||
{ time_offset: 0, sequence_id: -1 },
|
||||
]);
|
||||
});
|
||||
});
|
|
@ -8,20 +8,12 @@ import {
|
|||
import { Actions } from "../../../constants";
|
||||
import { fakeSequence } from "../../../__test_support__/fake_state/resources";
|
||||
import { AddButton } from "../add_button";
|
||||
import { newWeek } from "../../reducer";
|
||||
|
||||
describe("<BulkScheduler />", () => {
|
||||
const weeks = [{
|
||||
days:
|
||||
{
|
||||
day1: true,
|
||||
day2: false,
|
||||
day3: false,
|
||||
day4: false,
|
||||
day5: false,
|
||||
day6: false,
|
||||
day7: false
|
||||
}
|
||||
}];
|
||||
const week = newWeek();
|
||||
week.days.day1 = true;
|
||||
const weeks = [week];
|
||||
|
||||
function fakeProps(): BulkEditorProps {
|
||||
const sequence = fakeSequence();
|
||||
|
|
|
@ -3,20 +3,12 @@ import { mount } from "enzyme";
|
|||
import { WeekGrid } from "../week_grid";
|
||||
import { WeekGridProps } from "../interfaces";
|
||||
import { Actions } from "../../../constants";
|
||||
import { newWeek } from "../../reducer";
|
||||
|
||||
describe("<WeekGrid />", () => {
|
||||
const weeks = [{
|
||||
days:
|
||||
{
|
||||
day1: true,
|
||||
day2: false,
|
||||
day3: false,
|
||||
day4: false,
|
||||
day5: false,
|
||||
day6: false,
|
||||
day7: false
|
||||
}
|
||||
}];
|
||||
const week = newWeek();
|
||||
week.days.day1 = true;
|
||||
const weeks = [week];
|
||||
|
||||
it("renders", () => {
|
||||
const props: WeekGridProps = { weeks, dispatch: jest.fn() };
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
import * as React from "react";
|
||||
import { render, mount } from "enzyme";
|
||||
import { WeekRow } from "../week_row";
|
||||
import { WeekRowProps } from "../interfaces";
|
||||
import { betterMerge } from "../../../util";
|
||||
import { newWeek } from "../../reducer";
|
||||
import { Actions } from "../../../constants";
|
||||
|
||||
describe("<WeekRow/>", () => {
|
||||
const fakeProps = (p?: Partial<WeekRowProps>): WeekRowProps =>
|
||||
betterMerge({
|
||||
dispatch: jest.fn(),
|
||||
index: 0,
|
||||
week: newWeek()
|
||||
}, p || {});
|
||||
|
||||
it("renders week 1 day numbers", () => {
|
||||
const wrapper = render(<WeekRow {...fakeProps()} />);
|
||||
expect(wrapper.text()).toEqual("Week 11234567");
|
||||
});
|
||||
|
||||
it("renders week 2 day numbers", () => {
|
||||
const wrapper = render(<WeekRow {...fakeProps({ index: 1 })} />);
|
||||
expect(wrapper.text()).toEqual("Week 2891011121314");
|
||||
});
|
||||
|
||||
it("selects day", () => {
|
||||
const p = fakeProps();
|
||||
const wrapper = mount(<WeekRow {...p} />);
|
||||
wrapper.find("input").first().simulate("click");
|
||||
expect(p.dispatch).toHaveBeenCalledWith({
|
||||
type: Actions.TOGGLE_DAY,
|
||||
payload: { week: 0, day: 1 },
|
||||
});
|
||||
});
|
||||
});
|
|
@ -6,17 +6,15 @@ import { t } from "../../i18next_wrapper";
|
|||
export function WeekRow({ index, dispatch, week }: WeekRowProps) {
|
||||
return <div className="week-row">
|
||||
<label className="week-label">{t("Week")} {index + 1}</label>
|
||||
{
|
||||
DAYS.map(function (day, i) {
|
||||
const id = `${index}-${day}`;
|
||||
return <Day day={i + 1}
|
||||
week={index}
|
||||
dispatch={dispatch}
|
||||
id={id}
|
||||
key={id}
|
||||
active={week.days[day]} />;
|
||||
})
|
||||
}
|
||||
{DAYS.map(function (day, i) {
|
||||
const id = `${index}-${day}`;
|
||||
return <Day day={i + 1}
|
||||
week={index}
|
||||
dispatch={dispatch}
|
||||
id={id}
|
||||
key={id}
|
||||
active={week.days[day]} />;
|
||||
})}
|
||||
</div>;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ export interface RegimenState {
|
|||
schedulerOpen: boolean;
|
||||
}
|
||||
|
||||
function newWeek() {
|
||||
export function newWeek(): Week {
|
||||
return {
|
||||
days: {
|
||||
day1: false,
|
||||
|
|
Loading…
Reference in New Issue