[FAILING] Fix up some (not all) issues in buildReourceIndex

This commit is contained in:
Rick Carlino 2017-07-21 11:12:14 -05:00
parent ca13d52b0d
commit d75b93e514
5 changed files with 54 additions and 12 deletions

View file

@ -1,11 +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": {
@ -266,15 +266,11 @@ 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<RestResources>(resourceReducer as any);
store.subscribe(() => console.log("!!!!"));
let actions = _(resources)
let state = _(resources)
.groupBy(KIND)
.toPairs()
.map((x: [(TaggedResource["kind"]), TaggedResource[]]) => x)
.map(y => ({ type: "RESOURCE_READY", payload: { name: y[0], data: y[1] } }));
actions.map(a => store.dispatch(a));
debugger;
return store.getState() as RestResources;
.map(y => ({ type: "RESOURCE_READY", payload: { name: y[0], data: y[1] } }))
.reduce(resourceReducer, emptyState());
return state;
}

View file

@ -0,0 +1,41 @@
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", () => {
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);
let result2 = buildResourceIndex([STUB_RESOURCE]);
let fe = result2.index.references[result2.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.");
}
});

View file

@ -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);
});

View file

@ -13,7 +13,6 @@ describe("mapResourcesToCalendar()", () => {
let wow = fakeResources();
let ri = buildResourceIndex(wow);
let results = mapResourcesToCalendar(ri.index, FOUR_THIRTY).getAll();
expect(true).toBeFalsy();
});
});

View file

@ -47,7 +47,7 @@ export function joinFarmEventsToExecutable(input: ResourceIndex): FarmEventWithE
}
}
} else {
throw new Error("Opps...");
throw new Error("Farmevent had no ID");
}
}));
}