const { START_LOCATION_NORMALIZED } = require('../src/types')
const { normalizeRouteRecord } = require('./utils')
+/** @type {RouteComponent} */
const component = null
/** @typedef {import('../src/types').RouteRecord} RouteRecord */
*
* @param {RouteRecord | RouteRecord[]} record Record or records we are testing the matcher against
* @param {MatcherLocation} location location we want to reolve against
- * @param {Partial<MatcherLocationNormalized & { component: any }>} resolved Expected resolved location given by the matcher
- * @param {MatcherLocationNormalized | (MatcherLocationNormalized & { matched: Array<MatchedRouteRecord | Exclude<RouteRecord, { redirect: any}>> })} [start] Optional currentLocation used when resolving
+ * @param {Partial<import('../src/types').Override<MatcherLocationNormalized, { matched: Array<Exclude<RouteRecord, { redirect: any}>> }>>} resolved Expected resolved location given by the matcher
+ * @param {import('../src/types').Override<MatcherLocationNormalized, { matched: Array<Exclude<RouteRecord, { redirect: any}>> }>} [start] Optional currentLocation used when resolving
*/
function assertRecordMatch(
record,
}
if ('redirect' in record) {
+ throw new Error('not handled')
} else {
// use one single record
if (!('matched' in resolved))
resolved.matched = record.map(normalizeRouteRecord)
+ else resolved.matched = resolved.matched.map(normalizeRouteRecord)
}
// allows not passing params
resolved.params = resolved.params || {}
}
- if (!('matched' in resolved)) resolved.matched = []
-
const startCopy = {
...start,
matched: start.matched.map(normalizeRouteRecord),
name: 'Home',
params: {},
path: '/home',
- matched: [normalizeRouteRecord(record)],
+ matched: [record],
}
)
})
path: '/users/ed/m/user',
name: undefined,
params: { id: 'ed', role: 'user' },
- matched: [record].map(normalizeRouteRecord),
+ matched: [record],
}
)
})
path: '/users/ed/m/user',
name: 'UserEdit',
params: { id: 'ed', role: 'user' },
- matched: [record].map(normalizeRouteRecord),
+ matched: [record],
}
)
})
path: '/users/ed/m/user',
name: undefined,
params: { id: 'ed', role: 'user' },
- matched: [record].map(normalizeRouteRecord),
+ matched: [record],
}
)
})
name: 'home',
params: {},
path: '/',
- matched: [record].map(normalizeRouteRecord),
+ matched: [record],
}
// the property should be non enumerable
Object.defineProperty(start, 'matched', { enumerable: false })
- expect(assertErrorMatch(record, {}, start)).toMatchInlineSnapshot(
+ expect(
+ assertErrorMatch(
+ record,
+ {},
+ { ...start, matched: start.matched.map(normalizeRouteRecord) }
+ )
+ ).toMatchInlineSnapshot(
`[Error: No match for {"name":"home","params":{},"path":"/"}]`
)
})
name: 'child-b',
path: '/foo/b',
params: {},
- matched: [
- Foo,
- { ...ChildB, path: `${Foo.path}/${ChildB.path}` },
- ].map(normalizeRouteRecord),
+ matched: [Foo, { ...ChildB, path: `${Foo.path}/${ChildB.path}` }],
}
)
})
Foo,
{ ...Nested, path: `${Foo.path}` },
{ ...NestedNested, path: `${Foo.path}` },
- ].map(normalizeRouteRecord),
+ ],
}
)
})
...NestedChildA,
path: `${Foo.path}/${Nested.path}/${NestedChildA.path}`,
},
- ].map(normalizeRouteRecord),
+ ],
}
)
})
...NestedChildA,
path: `${Foo.path}/${Nested.path}/${NestedChildA.path}`,
},
- ].map(normalizeRouteRecord),
+ ],
}
)
})
...NestedChildA,
path: `${Foo.path}/${Nested.path}/${NestedChildA.path}`,
},
- ].map(normalizeRouteRecord),
+ ],
},
{
name: 'nested-child-a',
...NestedChildWithParam,
path: `${Foo.path}/${NestedWithParam.path}/${NestedChildWithParam.path}`,
},
- ].map(normalizeRouteRecord),
+ ],
}
)
})
...NestedChildWithParam,
path: `${Foo.path}/${NestedWithParam.path}/${NestedChildWithParam.path}`,
},
- ].map(normalizeRouteRecord),
+ ],
}
)
})