整改点位搜索数据加载与分类逻辑
This commit is contained in:
76
tests/unit/navAssetsAdapter.spec.ts
Normal file
76
tests/unit/navAssetsAdapter.spec.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { toMuseumPoi } from '@/data/adapters/navAssetsAdapter'
|
||||
import { resolvePoiCategory } from '@/domain/poiCategories'
|
||||
import type { StaticNavPoiPayload } from '@/data/providers/staticNavAssetsProvider'
|
||||
|
||||
const createStaticPoi = (name: string, iconType = 'elevator'): StaticNavPoiPayload => ({
|
||||
id: `poi-${name}`,
|
||||
name,
|
||||
floorId: 'L1',
|
||||
primaryCategory: 'basic_service_facility',
|
||||
primaryCategoryZh: '基础服务设施',
|
||||
iconType,
|
||||
categories: [{
|
||||
topCategory: 'basic_service_facility',
|
||||
topCategoryZh: '基础服务设施',
|
||||
subcategory: iconType,
|
||||
iconType
|
||||
}],
|
||||
positionGltf: [1, 0, 1]
|
||||
})
|
||||
|
||||
const createTouringPoi = (name: string, iconType = 'exhibition'): StaticNavPoiPayload => ({
|
||||
...createStaticPoi(name, iconType),
|
||||
primaryCategory: 'touring_poi',
|
||||
primaryCategoryZh: '展厅与参观点',
|
||||
categories: [{
|
||||
topCategory: 'touring_poi',
|
||||
topCategoryZh: '展厅与参观点',
|
||||
subcategory: iconType,
|
||||
iconType
|
||||
}]
|
||||
})
|
||||
|
||||
describe('static nav POI adapter', () => {
|
||||
it('repairs legacy static facility icons from visitor-facing names', () => {
|
||||
const stairs = toMuseumPoi(createStaticPoi('西侧楼梯'))
|
||||
const escalator = toMuseumPoi(createStaticPoi('中央扶梯'))
|
||||
const nursing = toMuseumPoi(createStaticPoi('母婴室', 'toilet'))
|
||||
const restroom = toMuseumPoi(createStaticPoi('无障碍洗手间', 'elevator'))
|
||||
|
||||
expect(stairs.primaryCategory.iconType).toBe('stairs')
|
||||
expect(resolvePoiCategory(stairs)).toBeNull()
|
||||
expect(escalator.primaryCategory.iconType).toBe('escalator')
|
||||
expect(resolvePoiCategory(escalator)?.id).toBe('escalator')
|
||||
expect(nursing.primaryCategory.iconType).toBe('mother_baby_room')
|
||||
expect(resolvePoiCategory(nursing)?.id).toBe('nursing-room')
|
||||
expect(restroom.primaryCategory.iconType).toBe('accessible_toilet')
|
||||
expect(resolvePoiCategory(restroom)?.id).toBe('restroom')
|
||||
})
|
||||
|
||||
it('repairs static generic restroom icons for service facilities without misclassifying tea rooms', () => {
|
||||
const serviceDesk = toMuseumPoi(createStaticPoi('服务台', 'restroom'))
|
||||
const locker = toMuseumPoi(createStaticPoi('存包处', 'restroom'))
|
||||
const teaRoom = toMuseumPoi(createStaticPoi('茶水间', 'restroom'))
|
||||
|
||||
expect(resolvePoiCategory(serviceDesk)?.id).toBe('service-center')
|
||||
expect(resolvePoiCategory(locker)?.id).toBe('service-center')
|
||||
expect(resolvePoiCategory(teaRoom)).toBeNull()
|
||||
})
|
||||
|
||||
it('splits generic touring fallback records into their visitor-facing semantic kinds', () => {
|
||||
const cinema = toMuseumPoi(createTouringPoi('巨幕影院'))
|
||||
const ticketOffice = toMuseumPoi(createTouringPoi('展厅售票点'))
|
||||
|
||||
expect(cinema).toMatchObject({
|
||||
kind: 'space',
|
||||
primaryCategory: { id: 'space_theater', iconType: 'theater' }
|
||||
})
|
||||
expect(resolvePoiCategory(cinema)?.id).toBe('cinema')
|
||||
expect(ticketOffice).toMatchObject({
|
||||
kind: 'facility',
|
||||
primaryCategory: { id: 'basic_service_facility', iconType: 'ticket_office' }
|
||||
})
|
||||
expect(resolvePoiCategory(ticketOffice)?.id).toBe('ticket-office')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user