Skip to content

Commit 9ad006d

Browse files
committed
fix: fix existing tests
1 parent 1e4c2d0 commit 9ad006d

File tree

4 files changed

+31
-14
lines changed

4 files changed

+31
-14
lines changed

src/parser/diningParser.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,20 @@ export default class DiningParser {
1616
"https://apps.studentaffairs.cmu.edu/dining/conceptinfo/Specials";
1717
static readonly DINING_SOUPS_URL =
1818
"https://apps.studentaffairs.cmu.edu/dining/conceptinfo/Soups";
19-
locationOverwrites: ILocationCoordinateOverwrites;
20-
timeSlotOverwrites: IAllTimeOverwrites;
19+
locationCoordinateOverwrites: ILocationCoordinateOverwrites = {};
20+
timeSlotOverwrites: IAllTimeOverwrites = {};
2121

22-
constructor(
23-
locationOverwrites: ILocationCoordinateOverwrites,
24-
timeSlotOverwrites: IAllTimeOverwrites
25-
) {
26-
this.locationOverwrites = locationOverwrites;
27-
this.timeSlotOverwrites = timeSlotOverwrites;
22+
constructor(overwrites?: {
23+
locationCoordinateOverwrites?: ILocationCoordinateOverwrites;
24+
timeSlotOverwrites?: IAllTimeOverwrites;
25+
}) {
26+
if (overwrites?.locationCoordinateOverwrites !== undefined) {
27+
this.locationCoordinateOverwrites =
28+
overwrites.locationCoordinateOverwrites;
29+
}
30+
if (overwrites?.timeSlotOverwrites !== undefined) {
31+
this.timeSlotOverwrites = overwrites.timeSlotOverwrites;
32+
}
2833
}
2934

3035
async process(): Promise<ILocation[]> {
@@ -39,7 +44,7 @@ export default class DiningParser {
3944
);
4045
builder.setSoup(soups);
4146
builder.setSpecials(specials);
42-
builder.overwriteLocationCoordinates(this.locationOverwrites);
47+
builder.overwriteLocationCoordinates(this.locationCoordinateOverwrites);
4348
}
4449

4550
return locationBuilders.map((builder) => builder.build());

src/server.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ let cachedLocations: ILocation[] = [];
1616
async function reload(): Promise<void> {
1717
const now = new Date();
1818
console.log(`Reloading Dining API: ${now}`);
19-
const parser = new DiningParser(
19+
const parser = new DiningParser({
2020
locationCoordinateOverwrites,
21-
timeSlotOverwrites
22-
);
21+
timeSlotOverwrites,
22+
});
2323
const locationMerger = new LocationMerger();
2424

2525
for (let i = 0; i < env.NUMBER_OF_SCRAPES; i++) {

tests/integration.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import locationCoordinateOverwrites from "overwrites/locationCoordinateOverwrites";
12
import DiningParser from "../src/parser/diningParser";
23

34
import { expectedLocationData } from "./expectedData";
@@ -26,7 +27,9 @@ test("the whole thing, including locationOverwrites", async () => {
2627
? `html/concepts/${conceptId}.html`
2728
: "html/blank.html",
2829
});
29-
const parser = new DiningParser();
30+
const parser = new DiningParser({
31+
locationCoordinateOverwrites: locationCoordinateOverwrites,
32+
});
3033
const parsedLocationData = await parser.process();
3134
expect(parsedLocationData).toStrictEqual(expectedLocationData);
3235
});

tests/mockAxios.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { DateTime } from "luxon";
12
import { getFileContent, last } from "./utils";
23
import axios from "axios";
34

@@ -19,14 +20,19 @@ export function mockAxiosGETMethod({
1920
specialsHTML,
2021
soupsHTML,
2122
conceptHTML,
23+
serverDate,
2224
}: {
2325
conceptListHTML?: string;
2426
specialsHTML?: string;
2527
soupsHTML?: string;
2628
conceptHTML?: (id: string) => string | undefined;
29+
serverDate?: DateTime<true>;
2730
}) {
2831
(axios.get as jest.Mock).mockImplementation(async (url: string) => {
29-
return { data: getHTML(url) };
32+
return {
33+
data: getHTML(url),
34+
headers: { date: (serverDate ?? DateTime.now()).toRFC2822() },
35+
};
3036
});
3137

3238
const getHTML = (url: string) => {
@@ -48,11 +54,13 @@ export function mockAxiosGETMethodWithFilePaths({
4854
specialsFilePath,
4955
soupsFilePath,
5056
getConceptFilePath,
57+
serverDate,
5158
}: {
5259
conceptListFilePath?: string;
5360
specialsFilePath?: string;
5461
soupsFilePath?: string;
5562
getConceptFilePath?: (conceptId: string) => string;
63+
serverDate?: DateTime<true>;
5664
}) {
5765
mockAxiosGETMethod({
5866
conceptListHTML: getFileContent(conceptListFilePath),
@@ -62,5 +70,6 @@ export function mockAxiosGETMethodWithFilePaths({
6270
getConceptFilePath
6371
? getFileContent(getConceptFilePath(conceptId))
6472
: undefined,
73+
serverDate,
6574
});
6675
}

0 commit comments

Comments
 (0)