chore: svelte-check cleanup — fix Svelte 5 patterns in events/pres_mgmt, badges, launcher, and tests
Source changes (0 errors, 175 warnings after): - api_post__crud_obj_v3: add backward-compat migration aliases (for_obj_type/id, obj_type/id) to nested CRUD funcs - ae_events__event_device/presenter/session: make event_id/presentation_id optional; fall back to store value - element_ae_obj_field_editor_v3: import type Snippet properly; mark current_value as $bindable() - ae_comp__badge_obj_view: fix $derived(() => false) → $derived(false) for show_receipt/show_tickets - badge templates: pass explicit event_id param to delete/update calls - launcher/+page: capture URL params as stable consts; pass event_id to update_ae_obj__event_device - ae_comp__event_device_obj_li: wrap setInterval in $effect; onDestroy cleanup always registered - ae_comp__event_device_obj_li_wrapper: move console.log to $effect; fix self-closing tag - presenter form/menu/view/list: add missing event_presentation_id to all update/delete calls - reports/locations/presenter/+page: move store assignments into $effect + untrack; ae_acct → $derived - session/+page: add Comp_event_presenter_form_agree import; cast for type compat - session_view: wrap <img onclick> in <button> for accessibility/validity - ae_comp__event_presentation_obj_li: remove unneeded event_id/session_id from create_ae_obj__event_presenter - ae_comp__event_session_obj_li: make lq prop optional; add plain-array fallback prop - location/+page: refactor to $derived ae_acct, $effect+untrack for stores, simplified session/file sections - location_page_menu: add optional data prop; export interface Tests: - Rename ae_events__event_badge.spec.ts → ae_events__event_badge.test.ts (extended coverage) - All test files: 'warn' → 'warning' (Playwright API), addInitScript array-destructure pattern, import type fixes - ae_defaults: remove duplicate hide_app_cfg key; meaningful sponsorship cfg_id placeholder - create_event_badge.spec: fix import path to use $lib alias - event_presenter.test: fix test URL to use /presenter/:id route NOTE: location/+page.svelte — Element_manage_event_file_li_wrap no longer receives allow_basic/allow_moderator (now default false); file list shows but management actions may be restricted. Follow-up needed to restore auth__kv-based access.
This commit is contained in:
108
src/lib/ae_events/ae_events__event_badge.test.ts
Normal file
108
src/lib/ae_events/ae_events__event_badge.test.ts
Normal file
@@ -0,0 +1,108 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
|
||||
// Use hoist-safe factories for vi.mock
|
||||
vi.mock('$lib/api/api', () => ({
|
||||
api: {
|
||||
create_nested_obj_v3: vi.fn(),
|
||||
update_nested_obj_v3: vi.fn(),
|
||||
delete_nested_ae_obj_v3: vi.fn(),
|
||||
search_ae_obj_v3: vi.fn()
|
||||
}
|
||||
}));
|
||||
vi.mock('$lib/ae_core/core__idb_dexie', () => ({ db_save_ae_obj_li__ae_obj: vi.fn() }));
|
||||
vi.mock('$lib/ae_events/db_events', () => ({ db_events: { badge: { get: vi.fn(), delete: vi.fn() } } }));
|
||||
vi.mock('$lib/ae_events/ae_events__event_badge_template', () => ({ load_ae_obj_id__event_badge_template: vi.fn() }));
|
||||
|
||||
import { create_ae_obj__event_badge } from './ae_events__event_badge';
|
||||
|
||||
describe('create_ae_obj__event_badge', () => {
|
||||
it('calls api.create_nested_obj_v3 with the correct params and returns the result', async () => {
|
||||
const mocked = await import('$lib/api/api');
|
||||
const mockCreateNested = mocked.api.create_nested_obj_v3 as any;
|
||||
|
||||
const fakeResult = { event_badge_id: 'eb123', full_name: 'Test User' };
|
||||
mockCreateNested.mockResolvedValue(fakeResult);
|
||||
|
||||
const api_cfg = { base_url: 'http://localhost', headers: {} };
|
||||
const event_id = 'evt1';
|
||||
const data_kv = { full_name_override: 'Test User', email: 't@example.com' };
|
||||
|
||||
const result = await create_ae_obj__event_badge({ api_cfg, event_id, data_kv, try_cache: false });
|
||||
|
||||
expect(mockCreateNested).toHaveBeenCalled();
|
||||
expect(mockCreateNested).toHaveBeenCalledWith({
|
||||
api_cfg,
|
||||
parent_type: 'event',
|
||||
parent_id: event_id,
|
||||
child_type: 'event_badge',
|
||||
fields: data_kv,
|
||||
return_obj: true,
|
||||
log_lvl: 0
|
||||
});
|
||||
|
||||
expect(result).toEqual(fakeResult);
|
||||
});
|
||||
});
|
||||
|
||||
describe('update_ae_obj__event_badge', () => {
|
||||
it('calls api.update_nested_obj_v3 with correct params and returns result', async () => {
|
||||
const mocked = await import('$lib/api/api');
|
||||
const mockUpdate = mocked.api.update_nested_obj_v3 as any;
|
||||
const fakeResult = { event_badge_id: 'eb999', full_name: 'Updated' };
|
||||
mockUpdate.mockResolvedValue(fakeResult);
|
||||
|
||||
const { update_ae_obj__event_badge } = await import('./ae_events__event_badge');
|
||||
const api_cfg = { base_url: 'http://localhost', headers: {} };
|
||||
const res = await update_ae_obj__event_badge({ api_cfg, event_id: 'evt1', event_badge_id: 'eb999', data_kv: { full_name_override: 'Updated' }, try_cache: false });
|
||||
|
||||
expect(mockUpdate).toHaveBeenCalled();
|
||||
expect(mockUpdate).toHaveBeenCalledWith({
|
||||
api_cfg,
|
||||
parent_type: 'event',
|
||||
parent_id: 'evt1',
|
||||
child_type: 'event_badge',
|
||||
child_id: 'eb999',
|
||||
fields: { full_name_override: 'Updated' },
|
||||
return_obj: true,
|
||||
log_lvl: 0
|
||||
});
|
||||
expect(res).toEqual(fakeResult);
|
||||
});
|
||||
});
|
||||
|
||||
describe('delete_ae_obj_id__event_badge', () => {
|
||||
it('calls api.delete_nested_ae_obj_v3 and deletes from local DB when try_cache true', async () => {
|
||||
const mocked = await import('$lib/api/api');
|
||||
const mockDelete = mocked.api.delete_nested_ae_obj_v3 as any;
|
||||
mockDelete.mockResolvedValue({ success: true });
|
||||
|
||||
const db = await import('$lib/ae_events/db_events');
|
||||
const dbDelete = db.db_events.badge.delete as any;
|
||||
|
||||
const { delete_ae_obj_id__event_badge } = await import('./ae_events__event_badge');
|
||||
|
||||
const api_cfg = { base_url: 'http://localhost', headers: {} };
|
||||
const res = await delete_ae_obj_id__event_badge({ api_cfg, event_id: 'evt1', event_badge_id: 'ebDel', try_cache: true });
|
||||
|
||||
expect(mockDelete).toHaveBeenCalled();
|
||||
expect(dbDelete).toHaveBeenCalledWith('ebDel');
|
||||
expect(res).toEqual({ success: true });
|
||||
});
|
||||
});
|
||||
|
||||
describe('search__event_badge', () => {
|
||||
it('calls api.search_ae_obj_v3 and returns list (handles data envelope)', async () => {
|
||||
const mocked = await import('$lib/api/api');
|
||||
const mockSearch = mocked.api.search_ae_obj_v3 as any;
|
||||
const fakeList = [{ event_badge_id: 'eb1' }, { event_badge_id: 'eb2' }];
|
||||
mockSearch.mockResolvedValue({ data: fakeList });
|
||||
|
||||
const { search__event_badge } = await import('./ae_events__event_badge');
|
||||
const api_cfg = { base_url: 'http://localhost', headers: {} };
|
||||
const res = await search__event_badge({ api_cfg, event_id: 'evt1', fulltext_search_qry_str: 'Test', try_cache: false });
|
||||
|
||||
expect(mockSearch).toHaveBeenCalled();
|
||||
expect(Array.isArray(res)).toBe(true);
|
||||
expect((res as any).length).toBe(2);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user