mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-23 01:57:29 +00:00
255 lines
7.4 KiB
TypeScript
255 lines
7.4 KiB
TypeScript
import { knex } from "../../db";
|
|
import * as Skins from "../skins";
|
|
import TweetModel from "../TweetModel";
|
|
import UserContext from "../UserContext";
|
|
|
|
beforeEach(async () => {
|
|
await knex.migrate.latest();
|
|
});
|
|
|
|
test("empty", async () => {
|
|
expect(await Skins.getAllClassicSkins()).toEqual([]);
|
|
expect(await Skins.getClassicSkinCount()).toBe(0);
|
|
expect(await Skins.getTweetableSkinCount()).toBe(0);
|
|
expect(await Skins.getAllClassicScreenshotUrls()).toEqual([]);
|
|
expect(await Skins.getMuseumPage({ offset: 0, first: 10 })).toEqual([]);
|
|
expect(await Skins.getStats()).toEqual({
|
|
approved: 0,
|
|
rejected: 0,
|
|
nsfw: 0,
|
|
tweeted: 0,
|
|
tweetable: 0,
|
|
webUploads: 0,
|
|
uploadsAwaitingProcessing: 0,
|
|
uploadsErrored: 0,
|
|
});
|
|
|
|
expect(await Skins.getSkinToTweet()).toBe(null);
|
|
expect(Skins.getSkinToReview()).rejects.toThrow(
|
|
"Could not find any skins to review"
|
|
);
|
|
expect(await Skins.getReportedUpload()).toBe(null);
|
|
expect(await Skins.getSkinsToShoot(1000)).toEqual([]);
|
|
expect(await Skins.getUploadStatuses([])).toEqual({});
|
|
});
|
|
|
|
describe("seeded", () => {
|
|
beforeEach(async () => {
|
|
await knex.seed.run();
|
|
});
|
|
test("getAllClassicSkins", async () => {
|
|
expect(await Skins.getAllClassicSkins()).toMatchInlineSnapshot(`
|
|
Array [
|
|
Object {
|
|
"fileName": "Zelda_Amp_3.wsz",
|
|
"md5": "48bbdbbeb03d347e59b1eebda4d352d0",
|
|
},
|
|
Object {
|
|
"fileName": "path.wsz",
|
|
"md5": "a_fake_md5",
|
|
},
|
|
Object {
|
|
"fileName": "nsfw.wsz",
|
|
"md5": "a_nsfw_md5",
|
|
},
|
|
Object {
|
|
"fileName": "rejected.wsz",
|
|
"md5": "a_rejected_md5",
|
|
},
|
|
Object {
|
|
"fileName": "tweeted.wsz",
|
|
"md5": "a_tweeted_md5",
|
|
},
|
|
Object {
|
|
"fileName": "approved.wsz",
|
|
"md5": "an_approved_md5",
|
|
},
|
|
]
|
|
`);
|
|
});
|
|
test("getClassicSkinCount", async () => {
|
|
expect(await Skins.getClassicSkinCount()).toBe(6);
|
|
});
|
|
test("getTweetableSkinCount", async () => {
|
|
expect(await Skins.getTweetableSkinCount()).toBe(1);
|
|
});
|
|
test("getAllClassicScreenshotUrls", async () => {
|
|
expect(await Skins.getAllClassicScreenshotUrls()).toMatchInlineSnapshot(`
|
|
Array [
|
|
Object {
|
|
"fileName": "Zelda_Amp_3.wsz",
|
|
"md5": "48bbdbbeb03d347e59b1eebda4d352d0",
|
|
"nsfw": false,
|
|
"url": "https://r2.webampskins.org/screenshots/48bbdbbeb03d347e59b1eebda4d352d0.png",
|
|
},
|
|
Object {
|
|
"fileName": "path.wsz",
|
|
"md5": "a_fake_md5",
|
|
"nsfw": false,
|
|
"url": "https://r2.webampskins.org/screenshots/a_fake_md5.png",
|
|
},
|
|
Object {
|
|
"fileName": "nsfw.wsz",
|
|
"md5": "a_nsfw_md5",
|
|
"nsfw": true,
|
|
"url": "https://r2.webampskins.org/screenshots/a_nsfw_md5.png",
|
|
},
|
|
Object {
|
|
"fileName": "rejected.wsz",
|
|
"md5": "a_rejected_md5",
|
|
"nsfw": false,
|
|
"url": "https://r2.webampskins.org/screenshots/a_rejected_md5.png",
|
|
},
|
|
Object {
|
|
"fileName": "tweeted.wsz",
|
|
"md5": "a_tweeted_md5",
|
|
"nsfw": false,
|
|
"url": "https://r2.webampskins.org/screenshots/a_tweeted_md5.png",
|
|
},
|
|
Object {
|
|
"fileName": "approved.wsz",
|
|
"md5": "an_approved_md5",
|
|
"nsfw": false,
|
|
"url": "https://r2.webampskins.org/screenshots/an_approved_md5.png",
|
|
},
|
|
]
|
|
`);
|
|
});
|
|
test("getMuseumPage", async () => {
|
|
expect(await Skins.getMuseumPage({ offset: 0, first: 10 }))
|
|
.toMatchInlineSnapshot(`
|
|
Array [
|
|
Object {
|
|
"fileName": "tweeted.wsz",
|
|
"md5": "a_tweeted_md5",
|
|
"nsfw": false,
|
|
},
|
|
Object {
|
|
"fileName": "Zelda_Amp_3.wsz",
|
|
"md5": "48bbdbbeb03d347e59b1eebda4d352d0",
|
|
"nsfw": false,
|
|
},
|
|
Object {
|
|
"fileName": "path.wsz",
|
|
"md5": "a_fake_md5",
|
|
"nsfw": false,
|
|
},
|
|
Object {
|
|
"fileName": "approved.wsz",
|
|
"md5": "an_approved_md5",
|
|
"nsfw": false,
|
|
},
|
|
Object {
|
|
"fileName": "rejected.wsz",
|
|
"md5": "a_rejected_md5",
|
|
"nsfw": false,
|
|
},
|
|
Object {
|
|
"fileName": "nsfw.wsz",
|
|
"md5": "a_nsfw_md5",
|
|
"nsfw": true,
|
|
},
|
|
]
|
|
`);
|
|
});
|
|
test("getMuseumPage does not include skins with errors", async () => {
|
|
await knex("refreshes").insert({
|
|
skin_md5: "48bbdbbeb03d347e59b1eebda4d352d0",
|
|
error: "Whoops",
|
|
});
|
|
|
|
await Skins.computeMuseumOrder();
|
|
const page = await Skins.getMuseumPage({ offset: 0, first: 10 });
|
|
const hasZelda = page.some(
|
|
(skin) => skin.md5 === "48bbdbbeb03d347e59b1eebda4d352d0"
|
|
);
|
|
expect(hasZelda).toBe(false);
|
|
});
|
|
test("getStats", async () => {
|
|
expect(await Skins.getStats()).toMatchInlineSnapshot(`
|
|
Object {
|
|
"approved": 2,
|
|
"nsfw": 1,
|
|
"rejected": 1,
|
|
"tweetable": 1,
|
|
"tweeted": 1,
|
|
"uploadsAwaitingProcessing": 0,
|
|
"uploadsErrored": 0,
|
|
"webUploads": 0,
|
|
}
|
|
`);
|
|
});
|
|
test("getSkinToTweet", async () => {
|
|
expect(await Skins.getSkinToTweet()).toEqual({
|
|
canonicalFilename: "approved.wsz",
|
|
md5: "an_approved_md5",
|
|
});
|
|
});
|
|
test("getSkinToTweet does not include skins with errors", async () => {
|
|
await knex("refreshes").insert({
|
|
skin_md5: "an_approved_md5",
|
|
error: "Whoops",
|
|
});
|
|
expect(await Skins.getSkinToTweet()).toBe(null);
|
|
});
|
|
test("getSkinToReview", async () => {
|
|
expect(Skins.getSkinToReview()).resolves.toEqual({
|
|
filename: expect.any(String),
|
|
md5: expect.any(String),
|
|
});
|
|
});
|
|
test("getReportedUpload", async () => {
|
|
expect(await Skins.getReportedUpload()).toBe(null);
|
|
});
|
|
test("getSkinsToShoot", async () => {
|
|
expect(await Skins.getSkinsToShoot(1)).toEqual([
|
|
"48bbdbbeb03d347e59b1eebda4d352d0",
|
|
]);
|
|
});
|
|
test("getUploadStatuses", async () => {
|
|
expect(await Skins.getUploadStatuses([])).toEqual({});
|
|
});
|
|
|
|
describe("setTweetInfo", () => {
|
|
test("update", async () => {
|
|
const ctx = new UserContext();
|
|
const md5 = "a_tweeted_md5";
|
|
const likes = 420;
|
|
const retweets = 69;
|
|
const tweetId = "1333893671326871552";
|
|
expect(await Skins.setTweetInfo(md5, likes, retweets, tweetId)).toBe(
|
|
true
|
|
);
|
|
const tweet = await TweetModel.fromTweetId(ctx, "1333893671326871552");
|
|
expect(tweet?.getLikes()).toBe(420);
|
|
expect(tweet?.getRetweets()).toBe(69);
|
|
});
|
|
|
|
test("insert", async () => {
|
|
const ctx = new UserContext();
|
|
const md5 = "a_fake_md5";
|
|
const likes = 1;
|
|
const retweets = 2;
|
|
const tweetId = "12345";
|
|
expect(await Skins.setTweetInfo(md5, likes, retweets, tweetId)).toBe(
|
|
true
|
|
);
|
|
const tweet = await TweetModel.fromTweetId(ctx, "12345");
|
|
expect(tweet?.getLikes()).toBe(1);
|
|
expect(tweet?.getRetweets()).toBe(2);
|
|
});
|
|
|
|
test("insert without an md5 returns false and does not write", async () => {
|
|
const ctx = new UserContext();
|
|
const md5 = null;
|
|
const likes = 1;
|
|
const retweets = 2;
|
|
const tweetId = "12345";
|
|
expect(await Skins.setTweetInfo(md5, likes, retweets, tweetId)).toBe(
|
|
false
|
|
);
|
|
const tweet = await TweetModel.fromTweetId(ctx, "12345");
|
|
expect(tweet).toBe(null);
|
|
});
|
|
});
|
|
});
|