import 'hydrooj/src/loader'; import { connect, dispose } from './db'; const DOMAIN_ID = 'system'; const TITLE = 'dummy_title'; const CONTENT = 'dummy_content'; const CONTENT_1 = 'another_dummy_content'; const UID = 22; const PNAME = 'aaa'; describe('Model.Problem', () => { let problem: typeof import('hydrooj/src/model/problem').default; beforeAll(async () => { await connect(); problem = require('hydrooj/src/model/problem').default; }); test('add_get', async () => { const pid = await problem.add(DOMAIN_ID, PNAME, TITLE, CONTENT, UID); expect(pid).toBeTruthy(); const 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); const pdoc1 = await problem.get(DOMAIN_ID, pid); expect(pdoc1).toStrictEqual(pdoc); 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); }); test('edit', async () => { const pid = await problem.add(DOMAIN_ID, PNAME, TITLE, CONTENT, UID); const pdoc = await problem.edit(DOMAIN_ID, pid, { content: CONTENT_1 }); expect(pdoc.content).toStrictEqual(CONTENT_1); }); /* FIXME doesn't work as storage isn't mocked yet test('del', async () => { const pid = await problem.add(DOMAIN_ID, PNAME, TITLE, CONTENT, UID); let pdocs = await problem.getMulti(DOMAIN_ID, {}).toArray(); let count = pdocs.length; await problem.del(DOMAIN_ID, pid); pdocs = await problem.getMulti(DOMAIN_ID, {}).toArray(); expect(pdocs.length).toStrictEqual(count - 1); }) */ afterAll(dispose); });