CEC-1183/CEC-1201 fleet vehicles forms (#130)

* working fleet vehicles forms

* snapshots and api tests
This commit is contained in:
Drew Taylor
2022-03-22 14:15:49 -07:00
committed by GitHub
parent 4daf171b1e
commit 4af3c70ec7
24 changed files with 2112 additions and 41 deletions

View File

@@ -15,6 +15,11 @@ const checkFleetResults = (error, busy, fleets) => {
expect(screen.getByTestId("fleets").innerHTML).toEqual(fleets);
};
const checkFleetVehicleResults = (error, busy, vehicles) => {
checkBaseResults(error, busy);
expect(screen.getByTestId("fleet-vehicles").innerHTML).toEqual(vehicles);
}
const checkBaseResults = (error, busy) => {
expect(screen.getByTestId("error").innerHTML).toEqual(error);
expect(screen.getByTestId("busy").innerHTML).toEqual(busy);
@@ -271,10 +276,208 @@ describe("FleetContext", () => {
checkBaseResults("", "false");
});
});
describe("getFleetVehicles", () => {
beforeEach(() => {
const TestComp = () => {
const { busy, error, fleetVehicles, getFleetVehicles } = useFleetContext();
return (
<>
<div data-testid="error">{error}</div>
<div data-testid="busy">{busy.toString()}</div>
<div data-testid="fleet-vehicles">{JSON.stringify(fleetVehicles)}</div>
<button
data-testid="getFleetVehicles"
onClick={() => getFleetVehicles("US-WEST")}
/>
</>
);
};
render(
<FleetProvider>
<TestComp />
</FleetProvider>
);
});
afterEach(() => {
cleanup();
});
it("initial state", () => {
checkFleetVehicleResults("", "false", "[]");
});
it("getFleetVehicles", async () => {
fireEvent.click(screen.getByTestId("getFleetVehicles"));
await waitFor(() =>
expect(screen.getByTestId("fleet-vehicles").innerHTML).not.toBe("[]")
);
checkFleetVehicleResults("", "false", JSON.stringify(expectedFleetVehiclesData));
});
});
describe("addFleetVehicle", () => {
beforeEach(async () => {
const TestComp = () => {
const { busy, addFleetVehicle } = useFleetContext();
const { message, setMessage } = useStatusContext();
const add = async (name, vehicle) => {
try {
await addFleetVehicle(name, vehicle);
} catch (e) {
setMessage(e.message);
}
};
return (
<>
<div data-testid="error">{message}</div>
<div data-testid="busy">{busy.toString()}</div>
<button data-testid="addFleetVehicleNull" onClick={() => add(null)} />
<button data-testid="addFleetVehicleNoName" onClick={() => add({})} />
<button
data-testid="addFleetVehicle"
onClick={() =>
add("US-TEST", { vin: "TESTVIN1234567890" })
}
/>
</>
);
};
render(
<StatusProvider>
<FleetProvider>
<TestComp />
</FleetProvider>
</StatusProvider>
);
});
afterEach(() => {
cleanup();
});
it("initial state", () => {
checkBaseResults("", "false");
});
it("addFleetVehicleNull", async () => {
fireEvent.click(screen.getByTestId("addFleetVehicleNull"));
await waitFor(() =>
expect(screen.getByTestId("busy").innerHTML).toEqual("false")
);
checkBaseResults("Invalid name", "false");
});
it("addFleetVehicleNoName", async () => {
fireEvent.click(screen.getByTestId("addFleetVehicleNoName"));
await waitFor(() =>
expect(screen.getByTestId("busy").innerHTML).toEqual("false")
);
checkBaseResults("Invalid name", "false");
});
it("addFleetVehicle", async () => {
fireEvent.click(screen.getByTestId("addFleetVehicle"));
await waitFor(() =>
expect(screen.getByTestId("busy").innerHTML).toEqual("false")
);
checkBaseResults("", "false");
});
});
describe("deleteFleetVehicle", () => {
beforeEach(async () => {
const TestComp = () => {
const { busy, deleteFleetVehicle } = useFleetContext();
const { message, setMessage } = useStatusContext();
const deleteFV = async (name, vehicle) => {
try {
await deleteFleetVehicle(name, vehicle);
} catch (e) {
setMessage(e.message);
}
};
return (
<>
<div data-testid="error">{message}</div>
<div data-testid="busy">{busy.toString()}</div>
<button data-testid="deleteFleetVehicleNull" onClick={() => deleteFV("US-WEST", null)} />
<button data-testid="deleteFleetVehicleInvalid" onClick={() => deleteFV("US-WEST", "INVALID")} />
<button
data-testid="deleteFleetVehicle"
onClick={() =>
deleteFV("US-WEST", { vin: "USWESTVIN12345678" })
}
/>
</>
);
};
render(
<StatusProvider>
<FleetProvider>
<TestComp />
</FleetProvider>
</StatusProvider>
);
});
afterEach(() => {
cleanup();
});
it("initial state", () => {
checkBaseResults("", "false");
});
it("deleteFleetVehicleNull", async () => {
fireEvent.click(screen.getByTestId("deleteFleetVehicleNull"));
await waitFor(() =>
expect(screen.getByTestId("busy").innerHTML).toEqual("false")
);
checkBaseResults("Cannot read property 'vin' of null", "false");
});
it("deleteFleetVehicleNonexistent", async () => {
fireEvent.click(screen.getByTestId("deleteFleetVehicleInvalid"));
await waitFor(() =>
expect(screen.getByTestId("busy").innerHTML).toEqual("false")
);
checkBaseResults("Invalid VIN", "false");
});
it("deleteFleetVehicle", async () => {
fireEvent.click(screen.getByTestId("deleteFleetVehicle"));
await waitFor(() =>
expect(screen.getByTestId("busy").innerHTML).toEqual("false")
);
checkBaseResults("", "false");
});
});
});
const expectedFleetsData = [
{ name: "US-WEST", log_level: "info", canbus: { enabled: true } },
{ name: "US-CENTRAL", log_level: "warn", canbus: { enabled: false } },
{ name: "US-EAST", log_level: "error", canbus: { enabled: true } },
{
name: "US-WEST",
log_level: "info",
canbus: { enabled: true },
vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"]
},
{
name: "US-CENTRAL",
log_level: "warn",
canbus: { enabled: false },
vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"]
},
{
name: "US-EAST",
log_level: "error",
canbus: { enabled: true },
vehicles: ["USEASTVIN12345678", "USEASTVIN12345679", "USEASTVIN12345670"]
},
];
const expectedFleetVehiclesData = ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"]