refactor: rename drop functions for clarity and update tests
This commit is contained in:
@@ -69,18 +69,18 @@ for (const k of baseResponse) {
|
||||
hyperlinkarray.push(k.file_url);
|
||||
}
|
||||
|
||||
export async function drop() {
|
||||
export async function dropRule() {
|
||||
if (hyperlinkarray.length === 0) {
|
||||
await refresh();
|
||||
return await drop();
|
||||
return await dropRule();
|
||||
}
|
||||
return hyperlinkarray.pop()!;
|
||||
}
|
||||
|
||||
export async function drop5() {
|
||||
export async function dropRule5() {
|
||||
let tmp = "";
|
||||
for (let i = 0; i < 5; i++) {
|
||||
tmp += await drop() + "\n";
|
||||
tmp += await dropRule() + "\n";
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Bot, Message } from "npm:discordeno@18.0.1";
|
||||
import { drop5, drop, refresh } from "./api.ts";
|
||||
import { dropRule5, dropRule, refresh } from "./api.ts";
|
||||
import { logMessage } from "@root/logging.ts";
|
||||
import { defaultString } from "@root/defaultString.ts";
|
||||
|
||||
@@ -13,7 +13,7 @@ export async function rule34MessageHandler(bot: Bot, message: Message) {
|
||||
message.guildId === undefined
|
||||
) {
|
||||
bot.helpers.sendMessage(message.channelId, {
|
||||
content: defaultString(await drop()),
|
||||
content: defaultString(await dropRule()),
|
||||
});
|
||||
}
|
||||
break;
|
||||
@@ -24,7 +24,7 @@ export async function rule34MessageHandler(bot: Bot, message: Message) {
|
||||
message.guildId === undefined
|
||||
) {
|
||||
bot.helpers.sendMessage(message.channelId, {
|
||||
content: defaultString(await drop5()),
|
||||
content: defaultString(await dropRule5()),
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { assert } from "jsr:@std/assert"
|
||||
import {refresh, drop} from "@root/plugins/rule34/api.ts"
|
||||
import { assert } from "jsr:@std/assert";
|
||||
import { dropRule, refresh } from "@root/plugins/rule34/api.ts";
|
||||
|
||||
Deno.test("Test Drop", async () => {
|
||||
await refresh()
|
||||
const link = await drop()
|
||||
assert(link !== "", "Empty String was dropped!")
|
||||
})
|
||||
await refresh();
|
||||
const link = await dropRule();
|
||||
assert(link !== "", "Empty String was dropped!");
|
||||
});
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { assert } from "@std/assert/assert";
|
||||
|
||||
const apiUrl = "https://yande.re/post.json?api_version=2";
|
||||
|
||||
type APIResponse = {
|
||||
@@ -49,7 +51,9 @@ type APIResponse = {
|
||||
|
||||
let page = 1;
|
||||
|
||||
let baseRequest = await fetch(apiUrl, { headers: { "Accept": "application/json" } })
|
||||
let baseRequest = await fetch(apiUrl, {
|
||||
headers: { "Accept": "application/json" },
|
||||
})
|
||||
.then(async (response) => {
|
||||
if (!response.ok) {
|
||||
throw new Error("Network response was not ok");
|
||||
@@ -57,25 +61,26 @@ let baseRequest = await fetch(apiUrl, { headers: { "Accept": "application/json"
|
||||
return <APIResponse> await response.json();
|
||||
});
|
||||
|
||||
|
||||
const hyperlinkarray: string[] = [];
|
||||
for (const k of baseRequest.posts) {
|
||||
hyperlinkarray.push(k.file_url);
|
||||
}
|
||||
|
||||
export function setPage(newpage: number) {
|
||||
export async function setPage(newpage: number) {
|
||||
page = newpage;
|
||||
hyperlinkarray.length = 0;
|
||||
refresh();
|
||||
await refresh();
|
||||
}
|
||||
|
||||
export function getPage() {
|
||||
return page;
|
||||
}
|
||||
|
||||
|
||||
//duplicate code, also found in rule34/api.ts
|
||||
export async function refresh() {
|
||||
await fetch(`${apiUrl}&page=${page}`, { headers: { "Accept": "application/json" } })
|
||||
await fetch(`${apiUrl}&page=${page}`, {
|
||||
headers: { "Accept": "application/json" },
|
||||
})
|
||||
.then(async (response) => {
|
||||
if (!response.ok) {
|
||||
throw new Error("Network response was not ok");
|
||||
@@ -110,3 +115,14 @@ export async function dropYandere5() {
|
||||
return tmp;
|
||||
}
|
||||
|
||||
//Test Stack resize when fetching new data
|
||||
Deno.test("Refresh Stack", async () => {
|
||||
await refresh();
|
||||
const previousStack = [...hyperlinkarray];
|
||||
await new Promise((r) => setTimeout(r, 10000));
|
||||
await refresh();
|
||||
assert(
|
||||
previousStack.length <= hyperlinkarray.length,
|
||||
"Stack-size did not increase as expected!",
|
||||
);
|
||||
});
|
||||
|
||||
32
src/plugins/yandere/test.ts
Normal file
32
src/plugins/yandere/test.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { assert } from "@std/assert/assert";
|
||||
import {
|
||||
dropYandere,
|
||||
getPage,
|
||||
refresh,
|
||||
setPage,
|
||||
} from "@root/plugins/yandere/api.ts";
|
||||
import { assertEquals } from "@std/assert/equals";
|
||||
//tests
|
||||
/*
|
||||
get page,
|
||||
switch page,
|
||||
drop,
|
||||
*/
|
||||
|
||||
Deno.test("Get default Page", async () => {
|
||||
assertEquals(getPage(), 1);
|
||||
});
|
||||
|
||||
Deno.test("Switching page", async () => {
|
||||
assertEquals(getPage(), 1);
|
||||
await setPage(2);
|
||||
assertEquals(getPage(), 2);
|
||||
await setPage(100);
|
||||
assertEquals(getPage(), 100);
|
||||
});
|
||||
|
||||
Deno.test("Test Drop", async () => {
|
||||
await refresh();
|
||||
const link = await dropYandere();
|
||||
assert(link !== "", "Empty String was dropped!");
|
||||
});
|
||||
Reference in New Issue
Block a user