import "angular-mocks"; import "angular-multimocks/app/package/js/angular-multimocks"; import * as _ from "lodash"; import { APILoggingInterceptor } from './common/interceptors/APILoggingInterceptor'; import { multimockResponse } from './common/entities/Multimocks'; import { quote, paygQuote, saveQuoteRequest } from './common/entities/Quote.fixture'; import { addresses } from './common/entities/Address.fixture'; import { suppliers, supplierTariffs } from './common/entities/Suppliers.fixture'; import { areaEligibilityResponse, availableAppointmentsResponse, meterEligibilityResponse } from './common/entities/Eligibility.fixture'; import {onboardingStatusResponse} from "./common/entities/Onboarding.fixture"; import { config } from './common/entities/ApplicationConfig.fixture'; declare var angular: angular.IAngularStatic; let mockData = { "_default": [ require("quick-quote-4tariffs.json"), require("full-quote.json"), require("full-quote-v2.json"), require("trusted-quote-estimated.json"), require("trusted-quote-usage-based.json"), require("movein-quote.json"), require("current-supplies.json"), require("addresses.json"), require("username-exists.json"), require("switch.json"), require("acquisition.json"), require("meter-details-empty.json"), require("area-eligibility.json"), require("appointment.json"), require("meter-eligibility-igt.json"), require("suppliers.json"), require("save-quote.json"), require("retrieve-saved-quote.json"), require("region.json"), require("agent-login.json"), require("agent-user.json"), require("trustpilot-business-unit-web-links.json"), require("trustpilot-business-unit.json"), require("tariffs-electricity.json"), require("tariffs-gas.json"), require("onboarding-status-successful.json"), multimockResponse("/address/addresses", "GET", 200, addresses, 1000), multimockResponse("/quote/quick-quote", "GET", 200, quote, 1000), multimockResponse("/quote/usage-based-quote", "GET", 200, quote, 1000), multimockResponse("/quote/estimated-quote", "GET", 200, quote, 1000), multimockResponse("/quote/suppliers", "GET", 200, suppliers, 500), multimockResponse("/quote/supplier-tariffs", "GET", 200, supplierTariffs, 500), multimockResponse("/onboarding-status", "GET", 200, onboardingStatusResponse, 500) ], "quote409": [ multimockResponse("/quote/usage-based-quote", "GET", 409), multimockResponse("/quote/estimated-quote", "GET", 409) ], "paym3tariffs": [ require("quick-quote.json") ], "paymAddressNotEligible": [ require("meter-eligibility-not-eligible.json") ], "payg": [ require("quick-quote-payg.json"), require("retrieve-payg-saved-quote.json"), require("meter-eligibility-no-igt.json"), require("area-eligibility.json"), require("appointment.json"), multimockResponse("/quote/quick-quote", "GET", 200, paygQuote, 1000), multimockResponse("/quote/save-quote", "POST", 200, saveQuoteRequest, 1000), multimockResponse("/smart-meter-booking/eligibility/area", "GET", 200, areaEligibilityResponse, 500), multimockResponse("/smart-meter-booking/eligibility/meter/details", "GET", 200, meterEligibilityResponse, 500), multimockResponse("/smart-meter-booking/available-appointments", "GET", 200, availableAppointmentsResponse, 500) ], "paygAddressNotEligible": [ require("quick-quote-payg.json"), require("retrieve-payg-saved-quote.json"), require("meter-eligibility-not-eligible.json"), multimockResponse("/smart-meter-booking/eligibility/meter/details", "GET", 200, { ...meterEligibilityResponse, isEligible: false }, 500) ], "paygPlusAreaNotEligible": [ require("quick-quote-payg.json"), require("retrieve-payg-saved-quote.json"), require("meter-eligibility-no-igt.json"), require("area-eligibility-false.json"), require("appointment.json"), multimockResponse("/smart-meter-booking/eligibility/meter/details", "GET", 200, meterEligibilityResponse, 500), multimockResponse("/smart-meter-booking/eligibility/area", "GET", 200, {isEligible: false}, 500) ], "paygPlusHasSmartMeter": [ require("quick-quote-payg.json"), require("retrieve-payg-saved-quote.json"), require("meter-eligibility-has-smart-meter.json"), multimockResponse("/smart-meter-booking/eligibility/meter/details", "GET", 200, { ...meterEligibilityResponse, smartMeterRequired: false }, 500), ], "paygNoAppointment": [ require("quick-quote-payg.json"), require("retrieve-payg-saved-quote.json"), require("meter-eligibility-no-igt.json"), require("area-eligibility.json"), require("appointment-none.json"), multimockResponse("/smart-meter-booking/eligibility/area", "GET", 200, areaEligibilityResponse, 500), multimockResponse("/smart-meter-booking/eligibility/meter/details", "GET", 200, meterEligibilityResponse, 500), multimockResponse("/smart-meter-booking/available-appointments", "GET", 200, { ...availableAppointmentsResponse, appointmentAvailability: 'None'}, 500) ], "paygNotOnboarding": [ require("quick-quote-payg.json"), require("retrieve-payg-saved-quote.json"), require("meter-eligibility-no-igt.json"), require("area-eligibility.json"), require("appointment.json"), require("acquisition-noOnboarding.json") ], "loginError": [ require("agent-login-error.json") ], "regionError": [ require("region-error.json"), multimockResponse("/quote/quick-quote", "GET", 428) ], "fullQuoteEconomy7": [ require("full-quote-v2-economy7.json") ], "moveInDualNoEconomic7": [ require("movein-quote-dual-noeconomic7.json") ], "moveInQuoteError": [ require("movein-quote-no-meter-found-error.json") ], "moveInQuoteErrorGasMeter": [ require("movein-quote-gas-meter-found-error.json") ], "moveInQuoteErrorMultipleMeter": [ require("movein-quote-multiple-meter-found-error.json") ], "moveInQuoteErrorPaygMeter": [ require("movein-quote-payg-meter-found-error.json") ], "moveInQuoteNoRegister": [ require("movein-quote-noregister.json") ], "quickQuote422": [ require("quick-quote-422.json"), multimockResponse("/quote/quick-quote", "GET", 422) ], "quickQuote428": [ require("quick-quote-428.json"), multimockResponse("/quote/quick-quote", "GET", 428) ], "userExist": [ require("userName-exist-true.json") ], "addressLookupError": [ require("address-lookup-error.json") ], "meterDetailsFound": [ require("meter-details-found.json") ], "switchError": [ require("acquisition-error.json") ], "switchErrorAccountNumber": [ require("acquisition-error-account-number.json") ], "switchNoOnboarding": [ require("acquisition-existedUser.json") ], "switchErrorEmail": [ require("acquisition-error-email.json") ], "switchQuoteExpired": [ require("switch-error-expiredquote.json") ], "onboardingUnsuccessful": [ require("onboarding-status-failed.json") ], "error400": [ require("quick-quote-400.json"), multimockResponse("/quote/quick-quote", "GET", 400) ], "trustpilotFailure": [ multimockResponse("https://api.trustpilot.com/v1/business-units/.*/web-links", "GET", 400) ] }; // TODO: Temporary piece of logic to add default responses in to all other scenarios, unless they are overridden. // Better would be to add the specific responses required to all the relevant scenarios. function mergeScenarios(parentScenario: any[], childScenario: any[]) { let all = childScenario.concat(parentScenario); return _.uniqBy(all, resource => resource.uri + resource.httpMethod); } angular.module("qs.demo", ["qs", "scenario"]) .config(function (multimocksDataProvider) { for (let scenario in mockData) { if (scenario !== '_default') mockData[scenario] = mergeScenarios(mockData['_default'], mockData[scenario]); } multimocksDataProvider.setMockData(mockData); }) .config(function ($httpProvider: ng.IHttpProvider) { $httpProvider.interceptors.push(() => new APILoggingInterceptor); }) .run(function ($httpBackend: angular.IHttpBackendService, mixpanel: Mixpanel) { $httpBackend.whenGET(/\/dist\//).passThrough(); $httpBackend.whenGET(new RegExp('.*s3.*')).passThrough(); mixpanel.set_config({ debug: true }); }); // Set up the config module (which the JS app depends on) angular.module("ovo.qs.app-config", []).constant('APP_CONFIG', config);