feat: schedule next airing episode
happens when new title is saved, or when new episode internal route is run successfully
This commit is contained in:
16
src/mocks/anilist/nextAiringEpisode.ts
Normal file
16
src/mocks/anilist/nextAiringEpisode.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { HttpResponse, graphql } from "msw";
|
||||
|
||||
export function getAnilistNextAiringEpisode() {
|
||||
return graphql.query(
|
||||
"GetNextEpisodeAiringAt",
|
||||
({ variables: { titleId } }) => {
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
Media: {
|
||||
nextAiringEpisode: null,
|
||||
},
|
||||
},
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import { getAnifySources } from "./anify/sources";
|
||||
import { getAnifyTitle } from "./anify/title";
|
||||
import { deleteAnilistMediaListEntry } from "./anilist/deleteMediaListEntry";
|
||||
import { getAnilistMediaListEntry } from "./anilist/mediaListEntry";
|
||||
import { getAnilistNextAiringEpisode } from "./anilist/nextAiringEpisode";
|
||||
import { getAnilistSearchResults } from "./anilist/search";
|
||||
import { getAnilistTitle } from "./anilist/title";
|
||||
import { updateAnilistWatchStatus } from "./anilist/updateWatchStatus";
|
||||
@@ -14,6 +15,7 @@ import { mockFcmMessageResponse } from "./fcm";
|
||||
export const handlers = [
|
||||
deleteAnilistMediaListEntry(),
|
||||
getAnilistMediaListEntry(),
|
||||
getAnilistNextAiringEpisode(),
|
||||
getAnilistSearchResults(),
|
||||
getAnilistTitle(),
|
||||
updateAnilistWatchStatus(),
|
||||
|
||||
@@ -2,9 +2,14 @@ import { SignatureError } from "@upstash/qstash";
|
||||
|
||||
import { mock } from "bun:test";
|
||||
|
||||
class MockQstashMessages {
|
||||
delete = mock();
|
||||
}
|
||||
|
||||
class MockQstashClient {
|
||||
batchJSON = mock();
|
||||
publishJSON = mock();
|
||||
publishJSON = mock().mockResolvedValue({ messageId: "123" });
|
||||
messages = new MockQstashMessages();
|
||||
}
|
||||
|
||||
class MockQstashReceiver {
|
||||
|
||||
Reference in New Issue
Block a user