@dynamic-data/lyft-mockups
Version:
Dynamic Data Faker for Lyft
272 lines (233 loc) • 8.03 kB
JavaScript
import { getRandomString, getRandomInt, pickRandomValue, randomUUID, getRandBool, randomCurrency } from '@dynamic-data/utils';
import MOCK from '@dynamic-data/lyft-data';
var RideModel = {
display_name: function display_name(ride_type) {
switch (ride_type) {
case "lyft":
return "Lyft";
case "lyft_line":
return "Lyft Line";
case "lyft_plus":
return "Lyft Plus";
case "lyft_luxsuv":
return "Lyft Lux SUV";
case "lyft_premier":
return "Lyft Premier";
case "lyft_lux":
return "Lyft Lux";
default:
return getRandomString(getRandomInt(5, 15));
}
},
ride_type: function ride_type() {
return pickRandomValue(["lyft", "lyft_line", "lyft_plus", "lyft_luxsuv", "lyft_lux", "lyft_premier"]);
},
eta_seconds: function eta_seconds() {
return getRandomInt(0, 1000);
},
estimated_cost_cents_max: function estimated_cost_cents_max() {
return getRandomInt(10, 500);
},
estimated_cost_cents_min: function estimated_cost_cents_min() {
return getRandomInt(10, 500);
},
estimated_distance_miles: function estimated_distance_miles() {
return getRandomInt(10, 5000);
},
estimated_duration_seconds: function estimated_duration_seconds() {
return getRandomInt(10, 500);
},
cost_token: function cost_token() {
return randomUUID();
},
is_valid_estimate: function is_valid_estimate() {
return getRandBool();
}
};
var RideTypesModel = {
display_name: function display_name(ride_type) {
switch (ride_type) {
case "lyft":
return "Lyft";
case "lyft_line":
return "Lyft Line";
case "lyft_plus":
return "Lyft Plus";
case "lyft_luxsuv":
return "Lyft Lux SUV";
case "lyft_premier":
return "Lyft Premier";
case "lyft_lux":
return "Lyft Lux";
default:
return getRandomString(getRandomInt(5, 15));
}
},
ride_type: function ride_type() {
return pickRandomValue(["lyft", "lyft_line", "lyft_plus", "lyft_luxsuv", "lyft_lux", "lyft_premier"]);
},
image_url: function image_url() {
return "https://cdn.lyft.com/assets/car_plus.png";
},
pricing_details: function pricing_details() {
return {
base_charge: getRandomInt(0, 1000),
cost_per_mile: getRandomInt(0, 100),
cost_per_minute: getRandomInt(0, 100),
cost_minimum: getRandomInt(0, 700),
trust_and_service: getRandomInt(0, 300),
currency: randomCurrency("SIMPLE WEST ISO-4217").code,
cancel_penalty_amount: getRandomInt(0, 1000)
};
},
seats: function seats() {
return getRandomInt(0, 6);
}
};
var NearbyDriversModel = {
locations: function locations() {
return {
lat: 37.7746225247,
lng: -122.455451083
};
},
ride_type: function ride_type() {
return pickRandomValue(["lyft", "lyft_line", "lyft_plus"]);
}
};
var dataModels = {
DriverETA: {
data: MOCK.driverETA,
mockup: RideModel
},
NearbyDrivers: {
data: MOCK.nearby_drivers,
mockup: NearbyDriversModel
},
RideEstimates: {
data: MOCK.rideEstimates,
mockup: RideModel
},
RideTypes: {
data: MOCK.rideTypes,
mockup: RideTypesModel
}
};
function getModelCSVHeader(dataModel) {
return dataModels[dataModel].data[0].split("\t");
}
function getDriverETAMockupData(dataType, dataModel, dataDate) {
var mockupData = {};
var mockupModel = dataModels[dataModel].mockup;
if (dataType === "SYNC") {
mockupData = dataModels[dataModel].data;
}
if (dataType === "ASYNC") {
var mockupDataRow = dataModels[dataModel].data[1].split("\t");
var mockupDataHeader = dataModels[dataModel].data[0].split("\t");
mockupDataHeader.forEach(function (k, i) {
mockupData[k] = mockupDataRow[i];
});
}
mockupData["eta_estimates"] = [mockupData["eta_estimates"][0]];
for (var index = 0; index < mockupData["eta_estimates"].length; index++) {
["ride_type", "display_name", "eta_seconds", "is_valid_estimate"].forEach(function (key, i) {
switch (key) {
case "display_name":
mockupData["eta_estimates"][index][key] = mockupModel[key](mockupData["eta_estimates"][index]["ride_type"]);
break;
default:
mockupData["eta_estimates"][index][key] = mockupModel[key]();
break;
}
});
}
return mockupData;
}
function getNearbyDriversMockupData(dataType, dataModel, dataDate) {
var mockupData = {};
var mockupModel = dataModels[dataModel].mockup;
if (dataType === "SYNC") {
mockupData = dataModels[dataModel].data;
}
if (dataType === "ASYNC") {
var mockupDataRow = dataModels[dataModel].data[1].split("\t");
var mockupDataHeader = dataModels[dataModel].data[0].split("\t");
mockupDataHeader.forEach(function (k, i) {
mockupData[k] = mockupDataRow[i];
});
}
mockupData["nearby_drivers"] = [mockupData["nearby_drivers"][0]];
mockupData["nearby_drivers"][0]["drivers"] = [mockupData["nearby_drivers"][0]["drivers"][0]];
for (var index = 0; index < mockupData["nearby_drivers"][0]["drivers"].length; index++) {
["locations", "ride_type"].forEach(function (key, i) {
switch (key) {
case "locations":
mockupData["nearby_drivers"][0]["drivers"][index][key] = [mockupData["nearby_drivers"][0]["drivers"][index][key][0]];
mockupData["nearby_drivers"][0]["drivers"][index][key][0] = mockupModel[key]();
break;
default:
mockupData["nearby_drivers"][0]["drivers"][index][key] = mockupModel[key]();
break;
}
});
}
return mockupData;
}
function getRideEstimatesMockupData(dataType, dataModel, dataDate) {
var mockupData = {};
var mockupModel = dataModels[dataModel].mockup;
if (dataType === "SYNC") {
mockupData = dataModels[dataModel].data;
}
if (dataType === "ASYNC") {
var mockupDataRow = dataModels[dataModel].data[1].split("\t");
var mockupDataHeader = dataModels[dataModel].data[0].split("\t");
mockupDataHeader.forEach(function (k, i) {
mockupData[k] = mockupDataRow[i];
});
}
mockupData["cost_estimates"] = [mockupData["cost_estimates"][0]];
for (var index = 0; index < mockupData["cost_estimates"].length; index++) {
["ride_type", "display_name", "estimated_cost_cents_max", "estimated_cost_cents_min", "estimated_distance_miles", "estimated_duration_seconds", "cost_token", "is_valid_estimate"].forEach(function (key, i) {
switch (key) {
case "display_name":
mockupData["cost_estimates"][index][key] = mockupModel[key](mockupData["cost_estimates"][index]["ride_type"]);
break;
default:
mockupData["cost_estimates"][index][key] = mockupModel[key]();
break;
}
});
}
return mockupData;
}
function getRideTypesMockupData(dataType, dataModel, dataDate) {
var mockupData = {};
var mockupModel = dataModels[dataModel].mockup;
if (dataType === "SYNC") {
mockupData = dataModels[dataModel].data;
}
if (dataType === "ASYNC") {
var mockupDataRow = dataModels[dataModel].data[1].split("\t");
var mockupDataHeader = dataModels[dataModel].data[0].split("\t");
mockupDataHeader.forEach(function (k, i) {
mockupData[k] = mockupDataRow[i];
});
}
mockupData["ride_types"] = [mockupData["ride_types"][0]];
for (var index = 0; index < mockupData["ride_types"].length; index++) {
["ride_type", "display_name", "image_url", "pricing_details", "seats"].forEach(function (key, i) {
switch (key) {
case "display_name":
mockupData["ride_types"][index][key] = mockupModel[key](mockupData["ride_types"][index]["ride_type"]);
break;
default:
mockupData["ride_types"][index][key] = mockupModel[key]();
break;
}
});
}
return mockupData;
}
export { getDriverETAMockupData, getModelCSVHeader, getNearbyDriversMockupData, getRideEstimatesMockupData, getRideTypesMockupData };