mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
Implement mocking of environment file
This commit is contained in:
@@ -2,7 +2,7 @@ import { ParkingGetterSetterRepository } from "./ParkingGetterSetterRepository";
|
||||
import { IParkingStructure } from "../../entities/ParkingRepositoryEntities";
|
||||
import { HistoricalParkingAverageQueryResult, HistoricalParkingAverageQueryArguments } from "./ParkingGetterRepository";
|
||||
import { BaseRedisRepository } from "../BaseRedisRepository";
|
||||
import { PARKING_LOGGING_INTERVAL_MS } from "./ParkingRepositoryConstants";
|
||||
import { PARKING_LOGGING_INTERVAL_MS } from "../../environment";
|
||||
|
||||
export type ParkingStructureID = string;
|
||||
|
||||
|
||||
@@ -2,34 +2,53 @@ import { Resolvers } from "../generated/graphql";
|
||||
import { ServerContext } from "../ServerContext";
|
||||
import { HistoricalParkingAverageQueryArguments } from "../repositories/parking/ParkingGetterRepository";
|
||||
import { GraphQLError } from "graphql/error";
|
||||
import {
|
||||
PARKING_HISTORICAL_AVERAGE_MAXIMUM_TIMESPAN,
|
||||
PARKING_HISTORICAL_AVERAGE_MINIMUM_INTERVAL
|
||||
} from "../environment";
|
||||
|
||||
export const ParkingStructureResolvers: Resolvers<ServerContext> = {
|
||||
ParkingStructure: {
|
||||
historicalAverages: async (parent, args, contextValue, _info) => {
|
||||
/**
|
||||
* @param errorMessage
|
||||
*/
|
||||
function throwBadUserInputError(errorMessage: string) {
|
||||
throw new GraphQLError(errorMessage, {
|
||||
extensions: {
|
||||
code: 'BAD_USER_INPUT',
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const system = contextValue.findSystemById(parent.systemId);
|
||||
|
||||
if (!args.input?.intervalMs) {
|
||||
throw new GraphQLError('No interval provided', {
|
||||
extensions: {
|
||||
code: 'BAD_USER_INPUT',
|
||||
},
|
||||
});
|
||||
throwBadUserInputError('No interval provided');
|
||||
return null;
|
||||
}
|
||||
const historicalParkingAverageQueryArguments: HistoricalParkingAverageQueryArguments = {
|
||||
const queryArguments: HistoricalParkingAverageQueryArguments = {
|
||||
from: new Date(args.input.from),
|
||||
intervalMs: args.input.intervalMs,
|
||||
to: new Date(args.input.to),
|
||||
}
|
||||
if (Number.isNaN(historicalParkingAverageQueryArguments.from.getTime()
|
||||
|| Number.isNaN(historicalParkingAverageQueryArguments.to.getTime()))) {
|
||||
throw new GraphQLError('One or more invalid dates provided', {
|
||||
extensions: {
|
||||
code: 'BAD_USER_INPUT',
|
||||
},
|
||||
});
|
||||
if (Number.isNaN(queryArguments.from.getTime()
|
||||
|| Number.isNaN(queryArguments.to.getTime()))) {
|
||||
throwBadUserInputError('One or more incorrect dates provided');
|
||||
}
|
||||
if (queryArguments.from.getTime() > queryArguments.to.getTime()) {
|
||||
throwBadUserInputError("`from` date can't be greater than the `to` date");
|
||||
}
|
||||
|
||||
const parkingAverages = await system?.parkingRepository?.getHistoricalAveragesOfParkingStructureCounts(parent.id, historicalParkingAverageQueryArguments);
|
||||
// Limit queries for improved performance
|
||||
if (queryArguments.to.getTime() - queryArguments.from.getTime() > PARKING_HISTORICAL_AVERAGE_MAXIMUM_TIMESPAN) {
|
||||
throwBadUserInputError('Maximum timespan exceeded');
|
||||
}
|
||||
if (queryArguments.intervalMs < PARKING_HISTORICAL_AVERAGE_MINIMUM_INTERVAL) {
|
||||
throwBadUserInputError('Provided interval is less than minimum interval');
|
||||
}
|
||||
|
||||
const parkingAverages = await system?.parkingRepository?.getHistoricalAveragesOfParkingStructureCounts(parent.id, queryArguments);
|
||||
if (!parkingAverages) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import { generateParkingStructures } from "../testHelpers/mockDataGenerators";
|
||||
import { HistoricalParkingAverageQueryInput } from "../../src/generated/graphql";
|
||||
import assert = require("node:assert");
|
||||
|
||||
jest.mock("../../src/environment");
|
||||
|
||||
describe("ParkingStructureResolver", () => {
|
||||
const holder = setupTestServerHolder();
|
||||
const context = setupTestServerContext();
|
||||
|
||||
Reference in New Issue
Block a user