Cleaned up old Attendees model. Updated tests.
This commit is contained in:
parent
64ce97c74d
commit
d804a48b49
9 changed files with 75 additions and 285 deletions
|
|
@ -12,17 +12,11 @@ export async function syncPull() {
|
|||
const data = await api.sync.pull(since)
|
||||
|
||||
await db.transaction('rw',
|
||||
[db.event, db.attendees, db.participants, db.tickets, db.departments, db.volunteers, db.shifts, db.volunteer_shifts],
|
||||
[db.event, db.participants, db.tickets, db.departments, db.volunteers, db.shifts, db.volunteer_shifts],
|
||||
async () => {
|
||||
if (data.event) {
|
||||
await db.event.put(data.event)
|
||||
}
|
||||
if (data.attendees?.length) {
|
||||
await db.attendees.bulkPut(data.attendees)
|
||||
// Purge hard-deleted records from Dexie
|
||||
const deleted = data.attendees.filter(a => a.deleted_at).map(a => a.id)
|
||||
if (deleted.length) await db.attendees.bulkDelete(deleted)
|
||||
}
|
||||
if (data.participants?.length) {
|
||||
await db.participants.bulkPut(data.participants)
|
||||
const deleted = data.participants.filter(p => p.deleted_at).map(p => p.id)
|
||||
|
|
@ -82,9 +76,6 @@ export function startSSE(onEvent) {
|
|||
try {
|
||||
const payload = JSON.parse(e.data)
|
||||
if (payload.event === 'checkin') {
|
||||
if (payload.data?.type === 'attendee' && payload.data?.attendee) {
|
||||
await db.attendees.put(payload.data.attendee)
|
||||
}
|
||||
if (payload.data?.type === 'ticket' && payload.data?.ticket) {
|
||||
await db.tickets.put(payload.data.ticket)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,30 +18,31 @@ function mockFetch(body = {}, status = 200) {
|
|||
}
|
||||
|
||||
describe('syncPull', () => {
|
||||
it('writes attendees to Dexie', async () => {
|
||||
it('writes participants to Dexie', async () => {
|
||||
mockFetch({
|
||||
server_time: '2026-03-01T12:00:00Z',
|
||||
attendees: [{ id: 1, name: 'Titania' }],
|
||||
participants: [{ id: 1, preferred_name: 'Titania', email: 'titania@example.com' }],
|
||||
tickets: [],
|
||||
departments: [],
|
||||
volunteers: [],
|
||||
shifts: [],
|
||||
volunteer_shifts: [],
|
||||
})
|
||||
// Import fresh to reset syncing guard
|
||||
const { syncPull } = await import('./sync.js')
|
||||
await syncPull()
|
||||
|
||||
const a = await db.attendees.get(1)
|
||||
expect(a.name).toBe('Titania')
|
||||
const p = await db.participants.get(1)
|
||||
expect(p.preferred_name).toBe('Titania')
|
||||
expect(await getLastSync()).toBe('2026-03-01T12:00:00Z')
|
||||
})
|
||||
|
||||
it('deletes soft-deleted attendees from Dexie', async () => {
|
||||
await db.attendees.put({ id: 1, name: 'Titania' })
|
||||
it('deletes soft-deleted participants from Dexie', async () => {
|
||||
await db.participants.put({ id: 1, preferred_name: 'Titania', email: 'titania@example.com' })
|
||||
|
||||
mockFetch({
|
||||
server_time: '2026-03-01T13:00:00Z',
|
||||
attendees: [{ id: 1, name: 'Titania', deleted_at: '2026-03-01T12:30:00Z' }],
|
||||
participants: [{ id: 1, preferred_name: 'Titania', deleted_at: '2026-03-01T12:30:00Z' }],
|
||||
tickets: [],
|
||||
departments: [],
|
||||
volunteers: [],
|
||||
shifts: [],
|
||||
|
|
@ -50,8 +51,8 @@ describe('syncPull', () => {
|
|||
const { syncPull } = await import('./sync.js')
|
||||
await syncPull()
|
||||
|
||||
const a = await db.attendees.get(1)
|
||||
expect(a).toBeUndefined()
|
||||
const p = await db.participants.get(1)
|
||||
expect(p).toBeUndefined()
|
||||
})
|
||||
|
||||
it('deletes soft-deleted volunteer_shifts from Dexie', async () => {
|
||||
|
|
@ -59,7 +60,8 @@ describe('syncPull', () => {
|
|||
|
||||
mockFetch({
|
||||
server_time: '2026-03-01T13:00:00Z',
|
||||
attendees: [],
|
||||
participants: [],
|
||||
tickets: [],
|
||||
departments: [],
|
||||
volunteers: [],
|
||||
shifts: [],
|
||||
|
|
@ -75,7 +77,8 @@ describe('syncPull', () => {
|
|||
it('sets lastSync timestamp', async () => {
|
||||
mockFetch({
|
||||
server_time: '2026-03-02T00:00:00Z',
|
||||
attendees: [],
|
||||
participants: [],
|
||||
tickets: [],
|
||||
departments: [],
|
||||
volunteers: [],
|
||||
shifts: [],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue