mirror of
https://github.com/FoxxMD/context-mod.git
synced 2026-01-12 23:28:08 -05:00
197 lines
6.1 KiB
TypeScript
197 lines
6.1 KiB
TypeScript
import {OperatorConfig, OperatorJsonConfig} from "../src/Common/interfaces";
|
|
import Snoowrap from "snoowrap";
|
|
import Bot from "../src/Bot/index"
|
|
import {buildOperatorConfigWithDefaults} from "../src/ConfigBuilder";
|
|
import {App} from "../src/App";
|
|
import {YamlOperatorConfigDocument} from "../src/Common/Config/Operator";
|
|
import {NoopLogger} from "../src/Utils/loggerFactory";
|
|
import {ManagerEntity} from "../src/Common/Entities/ManagerEntity";
|
|
import {Bot as BotEntity} from "../src/Common/Entities/Bot";
|
|
import {SubredditResources} from "../src/Subreddit/SubredditResources";
|
|
import {Subreddit, Comment, Submission} from 'snoowrap/dist/objects';
|
|
import dayjs from 'dayjs';
|
|
|
|
const mockSnoowrap = new Snoowrap({userAgent: 'test', accessToken: 'test'});
|
|
|
|
const memoryConfig: OperatorJsonConfig = {
|
|
databaseConfig: {
|
|
connection: {
|
|
type: 'sqljs',
|
|
location: ':memory:'
|
|
}
|
|
},
|
|
logging: {
|
|
level: 'debug',
|
|
file: {
|
|
dirname: false
|
|
}
|
|
},
|
|
bots: [
|
|
{
|
|
name: 'test',
|
|
credentials: {
|
|
reddit: {
|
|
clientId: 'test',
|
|
clientSecret: 'test',
|
|
accessToken: 'test',
|
|
refreshToken: 'test'
|
|
}
|
|
}
|
|
}
|
|
]
|
|
};
|
|
|
|
let config: OperatorConfig;
|
|
let app: App;
|
|
let snoowrap: Snoowrap;
|
|
let bot: Bot;
|
|
let resource: SubredditResources;
|
|
let subreddit: Subreddit;
|
|
|
|
export const getConfig = async () => {
|
|
if (config === undefined) {
|
|
config = await buildOperatorConfigWithDefaults(memoryConfig);
|
|
}
|
|
return config;
|
|
}
|
|
|
|
export const getApp = async () => {
|
|
if (app === undefined) {
|
|
const config = await getConfig();
|
|
app = new App({...config, fileConfig: {document: new YamlOperatorConfigDocument('')}});
|
|
await app.initDatabase();
|
|
}
|
|
return app;
|
|
}
|
|
|
|
export const getSnoowrap = async () => {
|
|
if (snoowrap === undefined) {
|
|
const bot = await getBot();
|
|
snoowrap = bot.client;
|
|
}
|
|
return snoowrap;
|
|
}
|
|
|
|
export const getBot = async () => {
|
|
if (bot === undefined) {
|
|
await getApp();
|
|
const config = await getConfig();
|
|
bot = new Bot(config.bots[0], NoopLogger);
|
|
await bot.cacheManager.set('test', {
|
|
logger: NoopLogger,
|
|
subreddit: bot.client.getSubreddit('test'),
|
|
client: bot.client,
|
|
statFrequency: 'minute',
|
|
managerEntity: new ManagerEntity(),
|
|
botEntity: new BotEntity()
|
|
});
|
|
}
|
|
return bot;
|
|
}
|
|
|
|
export const getResource = async () => {
|
|
if (resource === undefined) {
|
|
const bot = await getBot();
|
|
resource = bot.cacheManager.get('test') as SubredditResources;
|
|
}
|
|
return resource;
|
|
}
|
|
|
|
// @ts-ignore
|
|
export const getSubreddit = async () => {
|
|
if (subreddit === undefined) {
|
|
const snoo = await getSnoowrap();
|
|
subreddit = new Subreddit({id: 't3_test', name: 'test'}, snoo, true);
|
|
}
|
|
// @ts-ignore
|
|
return subreddit;
|
|
}
|
|
|
|
export const sampleActivity = {
|
|
moddable: {
|
|
commentRemovedByMod: (snoowrap = mockSnoowrap) => {
|
|
return new Submission({
|
|
can_mod_post: true,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed_by_category: 'mod'
|
|
}, snoowrap, true);
|
|
},
|
|
activityRemovedByMod: (snoowrap = mockSnoowrap) => {
|
|
return new Submission({
|
|
can_mod_post: true,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed_by_category: 'mod'
|
|
}, snoowrap, true)
|
|
},
|
|
activityFilteredByAutomod: (snoowrap = mockSnoowrap) => {
|
|
return new Submission({
|
|
can_mod_post: true,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed_by_category: 'automod_filtered'
|
|
}, snoowrap, true);
|
|
},
|
|
commentFiltered: (snoowrap = mockSnoowrap) => {
|
|
return new Comment({
|
|
can_mod_post: true,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed: false,
|
|
replies: ''
|
|
}, snoowrap, true)
|
|
},
|
|
commentRemoved: (snoowrap = mockSnoowrap) => {
|
|
return new Comment({
|
|
can_mod_post: true,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed: true,
|
|
replies: ''
|
|
}, snoowrap, true);
|
|
},
|
|
submissionDeleted: (snoowrap = mockSnoowrap) => {
|
|
return new Submission({
|
|
can_mod_post: true,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed_by_category: 'deleted'
|
|
}, snoowrap, true);
|
|
},
|
|
commentDeleted: (snoowrap = mockSnoowrap) => {
|
|
return new Comment({
|
|
can_mod_post: true,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed: false,
|
|
replies: '',
|
|
author: {
|
|
name: '[deleted]'
|
|
}
|
|
}, snoowrap, true);
|
|
}
|
|
},
|
|
public: {
|
|
submissionRemoved: (snoowrap = mockSnoowrap) => {
|
|
return new Submission({
|
|
can_mod_post: false,
|
|
removed_by_category: 'moderator'
|
|
}, snoowrap, true)
|
|
},
|
|
submissionDeleted: (snoowrap = mockSnoowrap) => {
|
|
return new Submission({
|
|
can_mod_post: false,
|
|
removed_by_category: 'deleted'
|
|
}, snoowrap, true);
|
|
},
|
|
commentRemoved: (snoowrap = mockSnoowrap) => {
|
|
return new Comment({
|
|
can_mod_post: false,
|
|
body: '[removed]',
|
|
replies: ''
|
|
}, snoowrap, true)
|
|
},
|
|
activityRemoved: (snoowrap = mockSnoowrap) => {
|
|
return new Submission({
|
|
can_mod_post: false,
|
|
banned_at_utc: dayjs().subtract(10, 'minutes').unix(),
|
|
removed_by_category: 'moderator'
|
|
}, snoowrap, true);
|
|
}
|
|
}
|
|
}
|