add db mock
parent
d01034bca8
commit
09ced5cdff
@ -0,0 +1,12 @@
|
||||
module.exports = {
|
||||
mongodbMemoryServerOptions: {
|
||||
binary: {
|
||||
version: '4.0.3',
|
||||
skipMD5: true
|
||||
},
|
||||
instance: {
|
||||
dbName: 'jest'
|
||||
},
|
||||
autoStart: false
|
||||
}
|
||||
};
|
@ -0,0 +1,31 @@
|
||||
/* eslint-disable import/no-mutable-exports */
|
||||
import { EventEmitter } from 'events';
|
||||
import mongodb, { Db, MongoClient } from 'mongodb';
|
||||
|
||||
export let db: Db = null;
|
||||
export let client: MongoClient = null;
|
||||
|
||||
export const bus = new EventEmitter();
|
||||
|
||||
mongodb.MongoClient.connect(
|
||||
// @ts-ignore
|
||||
global.__MONGO_URI__,
|
||||
{ useNewUrlParser: true, useUnifiedTopology: true },
|
||||
).then((c) => {
|
||||
// @ts-ignore
|
||||
db = c.db(global.__MONGO_DB_NAME__);
|
||||
client = c;
|
||||
bus.emit('connect');
|
||||
});
|
||||
|
||||
export function collection(c: string) {
|
||||
return db.collection(c);
|
||||
}
|
||||
|
||||
export function getClient() {
|
||||
return client;
|
||||
}
|
||||
|
||||
export function getDb() {
|
||||
return db;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
import 'hydrooj/src/utils';
|
||||
|
||||
jest.mock('hydrooj/src/service/db');
|
||||
|
||||
export async function connect() {
|
||||
await new Promise((resolve) => {
|
||||
const db = require('hydrooj/src/service/db');
|
||||
db.bus.once('connect', resolve);
|
||||
});
|
||||
const script = require('../src/script/upgrade0_1');
|
||||
await script.run();
|
||||
}
|
||||
|
||||
export async function dispose() {
|
||||
const db = require('hydrooj/src/service/db');
|
||||
await db.getClient().close();
|
||||
await db.getDb().close();
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
import 'hydrooj';
|
||||
import { connect, dispose } from './db';
|
||||
|
||||
const DOMAIN_ID = 'system';
|
||||
const TITLE = 'dummy_title';
|
||||
const CONTENT = 'dummy_content';
|
||||
const UID = 22;
|
||||
const PNAME = 'aaa';
|
||||
|
||||
describe('Model.Problem', () => {
|
||||
let problem: typeof import('hydrooj/src/model/problem');
|
||||
|
||||
beforeAll(async () => {
|
||||
await connect();
|
||||
problem = require('hydrooj/src/model/problem');
|
||||
});
|
||||
|
||||
test('add_get', async () => {
|
||||
const pid = await problem.add(DOMAIN_ID, PNAME, TITLE, CONTENT, UID);
|
||||
let pdoc = await problem.get(DOMAIN_ID, PNAME);
|
||||
expect(pdoc.domainId).toStrictEqual(DOMAIN_ID);
|
||||
expect(pdoc.title).toStrictEqual(TITLE);
|
||||
expect(pdoc.content).toStrictEqual(CONTENT);
|
||||
expect(pdoc.owner).toStrictEqual(UID);
|
||||
expect(pdoc.docId).toStrictEqual(pid);
|
||||
expect(pdoc.pid).toStrictEqual(PNAME);
|
||||
pdoc = await problem.get(DOMAIN_ID, pid);
|
||||
expect(pdoc.domainId).toStrictEqual(DOMAIN_ID);
|
||||
expect(pdoc.title).toStrictEqual(TITLE);
|
||||
expect(pdoc.content).toStrictEqual(CONTENT);
|
||||
expect(pdoc.owner).toStrictEqual(UID);
|
||||
expect(pdoc.docId).toStrictEqual(pid);
|
||||
expect(pdoc.pid).toStrictEqual(PNAME);
|
||||
const pdocs = await problem.getMulti(DOMAIN_ID, {}).toArray();
|
||||
expect(pdocs.length).toStrictEqual(1);
|
||||
expect(pdocs[0].docId).toStrictEqual(pid);
|
||||
expect(pdocs[0].title).toStrictEqual(TITLE);
|
||||
});
|
||||
|
||||
afterAll(dispose);
|
||||
})
|
Loading…
Reference in New Issue