44 */
55import { describe , it , expect , vi } from 'vitest'
66import { Navigation , getNavigation } from '../lib/navigation/navigation'
7- import { View } from '../lib/navigation/view'
8-
9- const mockView = ( id = 'view' , order = 1 ) => new View ( { id, order, name : 'View' , icon : '<svg></svg>' , getContents : ( ) => Promise . reject ( new Error ( ) ) } )
7+ import { mockView } from './view.spec'
108
119describe ( 'getNavigation' , ( ) => {
1210 it ( 'creates a new navigation if needed' , ( ) => {
@@ -40,23 +38,31 @@ describe('getNavigation', () => {
4038describe ( 'Navigation' , ( ) => {
4139 it ( 'Can register a view' , async ( ) => {
4240 const navigation = new Navigation ( )
43- const view = mockView ( )
41+ const { view } = mockView ( )
4442 navigation . register ( view )
4543
4644 expect ( navigation . views ) . toEqual ( [ view ] )
4745 } )
4846
47+ it ( 'Throws when trying to register invalid view' , async ( ) => {
48+ const navigation = new Navigation ( )
49+ expect ( ( ) => {
50+ // @ts -expect-error mocking to test invalid input
51+ navigation . register ( { id : 'someid' } )
52+ } ) . toThrowError ( )
53+ } )
54+
4955 it ( 'Throws when registering the same view twice' , async ( ) => {
5056 const navigation = new Navigation ( )
51- const view = mockView ( )
57+ const { view } = mockView ( )
5258 navigation . register ( view )
5359 expect ( ( ) => navigation . register ( view ) ) . toThrow ( / a l r e a d y r e g i s t e r e d / )
5460 expect ( navigation . views ) . toEqual ( [ view ] )
5561 } )
5662
5763 it ( 'Emits update event after registering a view' , async ( ) => {
5864 const navigation = new Navigation ( )
59- const view = mockView ( )
65+ const { view } = mockView ( )
6066 const listener = vi . fn ( )
6167
6268 navigation . addEventListener ( 'update' , listener )
@@ -68,7 +74,7 @@ describe('Navigation', () => {
6874
6975 it ( 'Can remove a view' , async ( ) => {
7076 const navigation = new Navigation ( )
71- const view = mockView ( )
77+ const { view } = mockView ( )
7278 navigation . register ( view )
7379 expect ( navigation . views ) . toEqual ( [ view ] )
7480 navigation . remove ( view . id )
@@ -77,7 +83,7 @@ describe('Navigation', () => {
7783
7884 it ( 'Emits update event after removing a view' , async ( ) => {
7985 const navigation = new Navigation ( )
80- const view = mockView ( )
86+ const { view } = mockView ( )
8187 const listener = vi . fn ( )
8288 navigation . register ( view )
8389 navigation . addEventListener ( 'update' , listener )
@@ -98,7 +104,7 @@ describe('Navigation', () => {
98104
99105 it ( 'Can set a view as active' , async ( ) => {
100106 const navigation = new Navigation ( )
101- const view = mockView ( )
107+ const { view } = mockView ( )
102108 navigation . register ( view )
103109
104110 expect ( navigation . active ) . toBe ( null )
@@ -109,7 +115,7 @@ describe('Navigation', () => {
109115
110116 it ( 'Emits event when setting a view as active' , async ( ) => {
111117 const navigation = new Navigation ( )
112- const view = mockView ( )
118+ const { view } = mockView ( )
113119 navigation . register ( view )
114120
115121 // add listener
0 commit comments