mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
import { assertEquals, assertRejects } from '@/deps-test.ts';
|
|
import { buildUserEvent } from '@/db/users.ts';
|
|
|
|
import event0 from '~/fixtures/events/event-0.json' assert { type: 'json' };
|
|
import event1 from '~/fixtures/events/event-1.json' assert { type: 'json' };
|
|
|
|
import { eventsDB as db } from './events.ts';
|
|
|
|
Deno.test('count filters', async () => {
|
|
assertEquals(await db.countEvents([{ kinds: [1] }]), 0);
|
|
await db.storeEvent(event1);
|
|
assertEquals(await db.countEvents([{ kinds: [1] }]), 1);
|
|
});
|
|
|
|
Deno.test('insert and filter events', async () => {
|
|
await db.storeEvent(event1);
|
|
|
|
assertEquals(await db.getEvents([{ kinds: [1] }]), [event1]);
|
|
assertEquals(await db.getEvents([{ kinds: [3] }]), []);
|
|
assertEquals(await db.getEvents([{ since: 1691091000 }]), [event1]);
|
|
assertEquals(await db.getEvents([{ until: 1691091000 }]), []);
|
|
assertEquals(
|
|
await db.getEvents([{ '#proxy': ['https://gleasonator.com/objects/8f6fac53-4f66-4c6e-ac7d-92e5e78c3e79'] }]),
|
|
[event1],
|
|
);
|
|
});
|
|
|
|
Deno.test('delete events', async () => {
|
|
await db.storeEvent(event1);
|
|
assertEquals(await db.getEvents([{ kinds: [1] }]), [event1]);
|
|
await db.deleteEvents([{ kinds: [1] }]);
|
|
assertEquals(await db.getEvents([{ kinds: [1] }]), []);
|
|
});
|
|
|
|
Deno.test('query events with local filter', async () => {
|
|
await db.storeEvent(event1);
|
|
|
|
assertEquals(await db.getEvents([{}]), [event1]);
|
|
assertEquals(await db.getEvents([{ local: true }]), []);
|
|
assertEquals(await db.getEvents([{ local: false }]), [event1]);
|
|
|
|
const userEvent = await buildUserEvent({
|
|
username: 'alex',
|
|
pubkey: event1.pubkey,
|
|
inserted_at: new Date(),
|
|
admin: false,
|
|
});
|
|
await db.storeEvent(userEvent);
|
|
|
|
assertEquals(await db.getEvents([{ kinds: [1], local: true }]), [event1]);
|
|
assertEquals(await db.getEvents([{ kinds: [1], local: false }]), []);
|
|
});
|
|
|
|
Deno.test('inserting replaceable events', async () => {
|
|
assertEquals(await db.countEvents([{ kinds: [0], authors: [event0.pubkey] }]), 0);
|
|
|
|
await db.storeEvent(event0);
|
|
await assertRejects(() => db.storeEvent(event0));
|
|
assertEquals(await db.countEvents([{ kinds: [0], authors: [event0.pubkey] }]), 1);
|
|
|
|
const changeEvent = { ...event0, id: '123', created_at: event0.created_at + 1 };
|
|
await db.storeEvent(changeEvent);
|
|
assertEquals(await db.getEvents([{ kinds: [0] }]), [changeEvent]);
|
|
});
|