DigitalConsumer.FixMyGlass/src/store/store.spec.js
2021-12-21 11:54:22 -05:00

228 lines
5.4 KiB
JavaScript

import store from "./index";
import globalMethods from "@/global-methods";
describe("Actions", () => {
it("Should return list of years retrieved", async () => {
// Arrange
let years = [];
// Act
globalMethods.callHttpClient = jest.fn();
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({ data: [2023, 2022, 2021] });
});
await store.dispatch("getVehicleYears").then((response) => {
years = response.data;
});
// Assert
expect(years[0]).toBe(2023);
});
it("Should return list of makes retrieved", async () => {
// Arrange
let makes = [];
// Act
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({ data: ["Baic", "Honda", "Ford"] });
});
await store.dispatch("getVehicleMakes", { year: 2023 }).then((response) => {
makes = response.data;
});
// Assert
expect(makes[0]).toBe("Baic");
});
it("Should return list of models retrieved", async () => {
// Arrange
let models = [];
// Act
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({ data: ["BJ40 (MEX)", "Civic", "Accord"] });
});
await store
.dispatch("getVehicleModels", { year: 2023, make: "Baic" })
.then((response) => {
models = response.data;
});
// Assert
expect(models[0]).toBe("BJ40 (MEX)");
});
it("Should return list of styles retrieved", async () => {
// Arrange
let styles = [];
// Act
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({ data: ["4 DOOR UTILITY", "2 DOOR"] });
});
await store
.dispatch("getVehicleStyles", {
year: 2023,
make: "Baic",
model: "BJ40 (MEX)",
})
.then((response) => {
styles = response.data;
});
// Assert
expect(styles[0]).toBe("4 DOOR UTILITY");
});
it("Should return data from url retrieved", async () => {
// Arrange
let routeInfo = [];
// Act
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({
data: {
Result: "Route Info Data",
},
});
});
await store
.dispatch("getRouteInfo", { pageName: "vehicle-year" })
.then((response) => {
routeInfo = response.data.Result;
});
// Assert
expect(routeInfo).toBe("Route Info Data");
});
it("Should return page data from url retrieved", async () => {
// Arrange
let pageData = [];
// Act
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({
data: {
Result: "Page Info Data",
},
});
});
await store
.dispatch("getPageData", { pageName: "vehicle-year" })
.then((response) => {
pageData = response.data.Result;
});
// Assert
expect(pageData).toBe("Page Info Data");
});
it("Should return data from url retrieved", async () => {
// Arrange
let returnData = [];
// Act
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({
data: {
Result: "2018 Honda Civic",
},
});
});
await store
.dispatch("lookupVehicleByYmms", { year: "2018", make: "Honda", model: "Civic", style: "2 Door"})
.then((response) => {
returnData = response.data.Result;
});
// Assert
expect(returnData).toBe("2018 Honda Civic");
});
it("Should return vehicle data from url retrieved", async () => {
// Arrange
let returnData = [];
// Act
globalMethods.callHttpClient.mockImplementation(() => {
return Promise.resolve({
data: {
Result: "2021 Honda Civic",
},
});
});
await store
.dispatch("lookupVehicleByVin", { vin: "12345678"})
.then((response) => {
returnData = response.data.Result;
});
// Assert
expect(returnData).toBe("2021 Honda Civic");
});
it("Should return vehicle image data from url retrieved", async () => {
// Arrange
let returnData = [];
// Act
globalMethods.callMockHttpClient = jest.fn();
globalMethods.callMockHttpClient.mockImplementation(() => {
return Promise.resolve({
data: {
Result: "2008_honda_civic.jpg",
},
});
});
await store
.dispatch("getEvoxImage", { relativeUrl: "evox_image.com"})
.then((response) => {
returnData = response.data.Result;
});
// Assert
expect(returnData).toBe("2008_honda_civic.jpg");
});
});
describe("Mutations", () => {
it("Should update the year property in the store", () => {
// Act
store.commit("updateYear", 2020);
// Assert
expect(store.state.order.vehicle.year).toBe(2020);
});
it("Should update the make property in the store", () => {
// Act
store.commit("updateMake", "Honda");
// Assert
expect(store.state.order.vehicle.make).toBe("Honda");
});
it("Should update the model property in the store", () => {
// Act
store.commit("updateModel", "Civic");
// Assert
expect(store.state.order.vehicle.model).toBe("Civic");
});
it("Should update the style property in the store", () => {
// Act
store.commit("updateStyle", "2 Door");
// Assert
expect(store.state.order.vehicle.style).toBe("2 Door");
});
});
describe("Getters", () => {
const vehicle = store.getters.vehicle;
expect(typeof vehicle).toBe('object');
});