Skip to content

Commit

Permalink
Merge pull request #347 from RickCarlino/master
Browse files Browse the repository at this point in the history
Test Suite Updates
  • Loading branch information
RickCarlino committed Jul 21, 2017
2 parents 22f2258 + 0744957 commit 24f43c6
Show file tree
Hide file tree
Showing 19 changed files with 215 additions and 49 deletions.
2 changes: 1 addition & 1 deletion .codeclimate.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## other configuration excluded from example...
exclude_paths:
- "public/app-resources/languages"
- public/app-resources/languages/*.js
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[![Code Climate](https://codeclimate.com/github/FarmBot/farmbot-web-app/badges/gpa.svg)](https://codeclimate.com/github/FarmBot/farmbot-web-app)
[![Test Coverage](https://codeclimate.com/github/FarmBot/farmbot-web-app/badges/coverage.svg)](https://codeclimate.com/github/FarmBot/farmbot-web-app)
[![codebeat badge](https://codebeat.co/badges/7b023dc5-6509-42af-ad6e-ec0b8262ef13)](https://codebeat.co/projects/github-com-rickcarlino-farmbot-web-app-master)
[![Coverage Status](https://coveralls.io/repos/github/FarmBot/Farmbot-Web-App/badge.svg)](https://coveralls.io/github/FarmBot/Farmbot-Web-App)

# Q: Do I need this?

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"deep-freeze": "^0.0.1",
"enzyme": "^2.9.1",
"extract-text-webpack-plugin": "^2.1.2",
"farmbot": "4.0.7",
"farmbot": "4.1.0",
"farmbot-toastr": "^1.0.3",
"fastclick": "^1.0.6",
"file-loader": "^0.11.2",
Expand Down
12 changes: 6 additions & 6 deletions src/__test_support__/farm_event_calendar_support.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import {
} from "../farm_designer/farm_events/calendar/interfaces";

export const TIME = {
MONDAY: moment("2017-06-19T01:30:00.000-05:00"),
TUESDAY: moment("2017-06-20T01:30:00.000-05:00"),
WEDNESDAY: moment("2017-06-21T01:30:00.000-05:00"),
THURSDAY: moment("2017-06-22T01:30:00.000-05:00"),
FRIDAY: moment("2017-06-23T01:30:00.000-05:00"),
SATURDAY: moment("2017-06-24T01:30:00.000-05:00")
MONDAY: moment("2017-06-19T06:30:00.000-05:00"),
TUESDAY: moment("2017-06-20T06:30:00.000-05:00"),
WEDNESDAY: moment("2017-06-21T06:30:00.000-05:00"),
THURSDAY: moment("2017-06-22T06:30:00.000-05:00"),
FRIDAY: moment("2017-06-23T06:30:00.000-05:00"),
SATURDAY: moment("2017-06-24T06:30:00.000-05:00")
};

export let fake_fe = (): FarmEventWithExecutable => {
Expand Down
18 changes: 9 additions & 9 deletions src/__test_support__/resource_index_builder.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { resourceReducer } from "../resources/reducer";
import { resourceReducer, emptyState } from "../resources/reducer";
import { TaggedResource } from "../resources/tagged_resources";
import * as _ from "lodash";
import { createStore } from "redux";
import { RestResources } from "../resources/interfaces";
import { ReduxAction } from "../redux/interfaces";

let FAKE_RESOURCES: TaggedResource[] = [
export let FAKE_RESOURCES: TaggedResource[] = [
{
"kind": "device",
"body": {
Expand Down Expand Up @@ -265,14 +266,13 @@ let FAKE_RESOURCES: TaggedResource[] = [
export
function buildResourceIndex(resources: TaggedResource[] = FAKE_RESOURCES) {
const KIND: keyof TaggedResource = "kind"; // Safety first, kids.
// TODO: Figure out why Redux typings broke after the 2.4 upgrade.
let store = createStore(resourceReducer as any);
_(resources)
return _(resources)
.groupBy(KIND)
.toPairs()
.map((x: [(TaggedResource["kind"]), TaggedResource[]]) => x)
.map(y => ({ type: "RESOURCE_READY", payload: { name: y[0], data: y[1] } }))
.map(store.dispatch);

return store.getState() as RestResources;
.map(y => ({
type: "RESOURCE_READY",
payload: { name: y[0], data: y[1].map(x => x.body) }
}))
.reduce(resourceReducer, emptyState());
}
43 changes: 43 additions & 0 deletions src/__tests__/resource_index_builder_test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import {
buildResourceIndex,
FAKE_RESOURCES
} from "../__test_support__/resource_index_builder";
import { betterCompact } from "../util";
import { TaggedFarmEvent } from "../resources/tagged_resources";

const STUB_RESOURCE: TaggedFarmEvent = {
"uuid": "farm_events.0.435",
"kind": "farm_events",
"body": {
"id": 217,
"start_time": "2017-07-21T00:30:00.000Z",
"end_time": "2017-07-21T00:31:00.000Z",
"repeat": 1,
"time_unit": "never",
"executable_id": 78,
"executable_type": "Regimen",
"calendar": [
"2017-07-21T00:30:00.000Z"
]
}
};

test("buildResourceIndex - base case", () => {
let result1 = buildResourceIndex(FAKE_RESOURCES);
let { index } = result1;
const OK_LENGTH = FAKE_RESOURCES.length;
expect(index.all.length).toBe(OK_LENGTH);
expect(Object.keys(index.references).length).toBe(OK_LENGTH);
});

test("buildResourceIndex - add a FarmEvent", () => {
let db = buildResourceIndex([STUB_RESOURCE]);
let fe = db.index.references[db.index.byKind.farm_events[0]];
expect(fe).toBeTruthy();
if (fe && fe.kind === "farm_events") {
let { body } = fe;
expect(body).toEqual(STUB_RESOURCE.body);
} else {
fail("fe was falsy or not a farm event.");
}
});
4 changes: 1 addition & 3 deletions src/controls/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,6 @@ export interface JogMovementControlsProps {
export interface ToggleButtonProps {
/** Function that is executed when the toggle button is clicked */
toggleAction: () => void;
toggleval: number | string | undefined;
toggleValue: number | string | undefined;
disabled?: boolean | undefined;
}


2 changes: 1 addition & 1 deletion src/controls/peripherals/peripheral_list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export function PeripheralList(props: PeripheralListProps) {
</Col>
<Col xs={4}>
<ToggleButton
toggleval={value}
toggleValue={value}
toggleAction={() => p.body.pin && pinToggle(p.body.pin)} />
</Col>
</Row>
Expand Down
4 changes: 2 additions & 2 deletions src/controls/toggle_button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class ToggleButton extends React.Component<ToggleButtonProps, {}> {
"undefined": "🚫",
"-1": "🚫"
};
let togval = String(this.props.toggleval);
let togval = String(this.props.toggleValue);
return captions[togval] || "---";
}

Expand All @@ -35,7 +35,7 @@ export class ToggleButton extends React.Component<ToggleButtonProps, {}> {
"undefined": yellowCSS
};

return cssClasses[String(this.props.toggleval)] || yellowCSS;
return cssClasses[String(this.props.toggleValue)] || yellowCSS;
}

render() {
Expand Down
6 changes: 3 additions & 3 deletions src/devices/components/boolean_mcu_input_group.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,21 @@ export function BooleanMCUInputGroup(props: BooleanMCUInputGroupProps) {
<Col xs={2}>
<ToggleButton
disabled={disableX}
toggleval={mcu_params[x]}
toggleValue={mcu_params[x]}
toggleAction={() => settingToggle(x, bot)}
/>
</Col>
<Col xs={2}>
<ToggleButton
disabled={disableY}
toggleval={mcu_params[y]}
toggleValue={mcu_params[y]}
toggleAction={() => settingToggle(y, bot)}
/>
</Col>
<Col xs={2}>
<ToggleButton
disabled={disableZ}
toggleval={mcu_params[z]}
toggleValue={mcu_params[z]}
toggleAction={() => settingToggle(z, bot)}
/>
</Col>
Expand Down
9 changes: 5 additions & 4 deletions src/devices/components/hardware_settings/motors.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { MotorsProps } from "../interfaces";
import { Row, Col } from "../../../ui/index";
import { Header } from "./header";
import { Collapse } from "@blueprintjs/core";
import { McuInputBox } from "../mcu_input_box";

export function Motors({ dispatch, bot }: MotorsProps) {

Expand All @@ -33,8 +34,8 @@ export function Motors({ dispatch, bot }: MotorsProps) {
<SpacePanelToolTip tooltip={t(ToolTips.MAX_MOVEMENT_RETRIES)} />
</Col>
<Col xs={6}>
<BotConfigInputBox
setting="max_movement_retries"
<McuInputBox
setting="param_mov_nr_retry"
bot={bot}
dispatch={dispatch} />
</Col>
Expand Down Expand Up @@ -122,7 +123,7 @@ export function Motors({ dispatch, bot }: MotorsProps) {
</Col>
<Col xs={2}>
<ToggleButton
toggleval={mcu_params.movement_secondary_motor_x}
toggleValue={mcu_params.movement_secondary_motor_x}
toggleAction={() =>
settingToggle("movement_secondary_motor_x", bot)}
/>
Expand All @@ -137,7 +138,7 @@ export function Motors({ dispatch, bot }: MotorsProps) {
</Col>
<Col xs={2}>
<ToggleButton
toggleval={mcu_params.movement_secondary_motor_invert_x}
toggleValue={mcu_params.movement_secondary_motor_invert_x}
toggleAction={() =>
settingToggle("movement_secondary_motor_invert_x", bot)}
/>
Expand Down
2 changes: 1 addition & 1 deletion src/devices/components/os_update_button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export let OsUpdateButton = ({ bot }: BotProp) => {
<p>{t("Auto Updates?")}</p>
</Col>
<Col xs={1}>
<ToggleButton toggleval={toggleVal}
<ToggleButton toggleValue={toggleVal}
toggleAction={() => {
let os_auto_update = !osUpdateBool ? 1 : 0;
// TODO: This no longer needs to be a thunk
Expand Down
6 changes: 6 additions & 0 deletions src/devices/timezones/__tests__/tz_list_test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { list } from "../tz_list";

test("TZ List presence", () => {
// Not the most useful test. Might catch accidental erasure, though.
expect(list.length).toBe(588);
});
112 changes: 112 additions & 0 deletions src/farm_designer/farm_events/__tests__/map_state_to_props_test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { fakeState } from "../../../__test_support__/fake_state";
import { mapResourcesToCalendar } from "../map_state_to_props";
import { ResourceIndex } from "../../../resources/interfaces";
import { buildResourceIndex } from "../../../__test_support__/resource_index_builder";
import { TaggedResource } from "../../../resources/tagged_resources";
import * as moment from "moment";

describe("mapResourcesToCalendar()", () => {
it("returns a `Calendar` instance when given a resource index and unix time.",
() => {
pending();
// 19 JULY 17 16:30
const TWO_O_EIGHT = 1500664092110;
let wow = fakeResources();
let ri = buildResourceIndex(wow);
let results = mapResourcesToCalendar(ri.index, TWO_O_EIGHT).getAll();
expect(results.length).toBe(1);
let item1 = results[0];
expect(item1.month).toBe("Jul");
expect(item1.day).toBe(17);
});
});

function fakeResources(): TaggedResource[] {
return [
{
"kind": "farm_events",
"body": {
"id": 76,
"start_time": "2017-07-19T21:20:00.000",
"end_time": "2017-07-21T20:57:00.000",
"repeat": 1,
"time_unit": "daily",
"executable_id": 25,
"executable_type": "Regimen",
"calendar": [

]
},
"uuid": "farm_events.76.2"
},
{
"kind": "regimens",
"body": {
"id": 25,
"name": "Every 4 hours",
"color": "gray",
"device_id": 49,
"regimen_items": [
{
"id": 86,
"regimen_id": 25,
"sequence_id": 52,
"time_offset": 300000
},
{
"id": 87,
"regimen_id": 25,
"sequence_id": 52,
"time_offset": 14700000
},
{
"id": 88,
"regimen_id": 25,
"sequence_id": 52,
"time_offset": 29100000
},
{
"id": 89,
"regimen_id": 25,
"sequence_id": 52,
"time_offset": 43500000
},
{
"id": 90,
"regimen_id": 25,
"sequence_id": 52,
"time_offset": 57900000
},
{
"id": 91,
"regimen_id": 25,
"sequence_id": 52,
"time_offset": 50400000
},
{
"id": 92,
"regimen_id": 25,
"sequence_id": 52,
"time_offset": 72000000
}
]
},
"uuid": "regimens.25.49"
},
{
"kind": "sequences",
"body": {
"id": 52,
"name": "Goto 0, 0, 0 123",
"color": "gray",
"body": [],
"args": {
"is_outdated": false,
"version": 4
},
"kind": "sequence"
},
"uuid": "sequences.52.52"
}
];
}
2 changes: 1 addition & 1 deletion src/farm_designer/farm_events/calendar/selectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export function joinFarmEventsToExecutable(input: ResourceIndex): FarmEventWithE
}
}
} else {
throw new Error("Opps...");
throw new Error("Farmevent had no ID");
}
}));
}

0 comments on commit 24f43c6

Please sign in to comment.