1// SPDX-License-Identifier: GPL-2.0-only
2// Copyright (c) 2026-present FERS Contributors (see AUTHORS.md).
4import { beforeEach, describe, expect, test } from 'bun:test';
5import { defaultGlobalParameters } from './defaults';
6import { useScenarioStore } from './index';
8 resetSyncQueueForTests,
9 setSyncQueueInvokerForTests,
13type InvokeFn = typeof import('@tauri-apps/api/core').invoke;
15describe('scenario object names', () => {
17 resetSyncQueueForTests();
18 setSyncQueueInvokerForTests((async () => []) as InvokeFn);
19 useScenarioStore.setState({
20 globalParameters: defaultGlobalParameters,
26 selectedComponentId: null,
28 currentTime: defaultGlobalParameters.start,
32 test('component creation auto-renames duplicate default names', async () => {
33 const store = useScenarioStore.getState();
35 const platform = useScenarioStore.getState().platforms[0];
39 .addPlatformComponent(platform.id, 'monostatic');
42 .addPlatformComponent(platform.id, 'monostatic');
47 .platforms[0].components.map((component) => component.name)
48 ).toEqual(['Platform 1 Monostatic', 'Platform 1 Monostatic Copy']);
50 await waitForSyncIdle();
53 test('manual duplicate component rename gets a copy suffix', async () => {
54 useScenarioStore.setState({
57 id: '1688849860263937',
62 carrier_frequency: 1e9,
67 id: '281474976710657',
71 interpolation: 'static',
74 id: '281474976710658',
91 id: '562949953421313',
108 .updateItem('281474976710657', 'components.0.name', 'Shared Name');
111 useScenarioStore.getState().platforms[0].components[0].name
112 ).toBe('Shared Name Copy');
114 await waitForSyncIdle();
117 test('default asset names avoid cross-kind conflicts', async () => {
118 useScenarioStore.setState({
121 id: '281474976710657',
125 interpolation: 'static',
128 id: '281474976710658',
145 id: '1125899906842625',
148 rcs_type: 'isotropic',
150 rcs_model: 'constant',
157 useScenarioStore.getState().addWaveform();
159 expect(useScenarioStore.getState().waveforms[0].name).toBe(
163 await waitForSyncIdle();