CEC-287 Car connection status (#59)

* Car connection status

* Formatting
This commit is contained in:
John Wu
2021-06-23 14:48:19 -07:00
committed by GitHub
parent 5b37f39e74
commit a3b6b01bf3
6 changed files with 79 additions and 19 deletions

View File

@@ -39,11 +39,11 @@ export const VehicleProvider = ({ children }) => {
if (result.error) {
setVehicles([]);
throw new Error(`Get vehicles error. ${result.message}`);
} else {
setVehicles(result.data);
if (result.total) {
setTotalVehicles(result.total);
}
}
await addConnections(result.data, token);
setVehicles(result.data);
if (result.total) {
setTotalVehicles(result.total);
}
} finally {
setBusy(false);
@@ -96,6 +96,30 @@ export const VehicleProvider = ({ children }) => {
}
};
const addConnections = async (cars, token) => {
const vins = cars.map((car) => car.vin);
const result = await api.getConnections(vins, token);
if (result.error) {
throw new Error(`Get connections error. ${result.message}`);
}
cars.forEach((car) => {
car.connected = result[car.vin] || false;
});
};
const getConnections = async (vins, token) => {
try {
setBusy(true);
const result = await api.getConnections(vins, token);
if (result.error)
throw new Error(`Get connections error. ${result.message}`);
return result;
} finally {
setBusy(false);
}
};
return (
<VehicleContext.Provider
value={{
@@ -109,6 +133,7 @@ export const VehicleProvider = ({ children }) => {
getModels,
getYears,
sendCommand,
getConnections,
}}
>
{children}

View File

@@ -133,14 +133,12 @@ describe("VehicleContext", () => {
});
});
const expectedVehicleData = {
data: [
{ vin: "3C4PDCBG0ET127145" },
{ vin: "1G1FP87S3GN100062" },
{ vin: "1HGCG325XYA062256" },
{ vin: "1J4GZ78YXWC160024" },
{ vin: "2C3CCAAG8CH222800" },
{ vin: "KNADM4A39C6028108" },
{ vin: "1G11C5SL9FF153507" },
],
};
const expectedVehicleData = [
{ vin: "3C4PDCBG0ET127145", connected: true },
{ vin: "1G1FP87S3GN100062", connected: true },
{ vin: "1HGCG325XYA062256", connected: true },
{ vin: "1J4GZ78YXWC160024", connected: true },
{ vin: "2C3CCAAG8CH222800", connected: true },
{ vin: "KNADM4A39C6028108", connected: true },
{ vin: "1G11C5SL9FF153507", connected: true },
];

View File

@@ -25,11 +25,20 @@ export const useVehicleContext = () => ({
getYears: jest.fn(() => {
years = [2023, 2024];
}),
sendCommand: jest.fn((vin, command, parameters, token) => ({
vin,
sendCommand: jest.fn((vins, command, parameters, token) => ({
vins,
command,
parameters,
})),
getConnections: jest.fn((vins, token) => {
const result = {};
vins.forEach((vin) => {
result[vin] = true;
});
return result;
}),
});
export const setBusy = (val) => {