Initial commit: gmTouringMiniApp project
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import type { PoiCategory, PoiSummary } from '@/domain/poi'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { buildMarkerIdMap, createPoiMarkers } from '@/services/map'
|
||||
|
||||
const categories: PoiCategory[] = [{
|
||||
code: 'park',
|
||||
name: '公园绿地',
|
||||
markerIcon: '/static/markers/park.png',
|
||||
selectedMarkerIcon: '/static/markers/park-selected.png',
|
||||
sortOrder: 1,
|
||||
status: 'enabled',
|
||||
}]
|
||||
|
||||
function summary(id: string): PoiSummary {
|
||||
return {
|
||||
id,
|
||||
name: id,
|
||||
categoryCode: 'park',
|
||||
categoryName: '公园绿地',
|
||||
tagCodes: ['family'],
|
||||
tags: [{ code: 'family', name: '亲子友好', sortOrder: 1, status: 'enabled' }],
|
||||
longitude: 113.9,
|
||||
latitude: 22.7,
|
||||
coordinateSystem: 'GCJ02',
|
||||
coverImage: {
|
||||
id: 'cover',
|
||||
url: '/static/poi/placeholder.png',
|
||||
source: 'test',
|
||||
sourceReference: null,
|
||||
copyrightStatus: 'cleared',
|
||||
licenseEvidence: 'test',
|
||||
reviewedBy: 'test',
|
||||
reviewedAt: '2026-07-29T00:00:00Z',
|
||||
updatedAt: '2026-07-29T00:00:00Z',
|
||||
alt: 'test',
|
||||
},
|
||||
summary: 'test',
|
||||
description: 'test description',
|
||||
address: 'test address',
|
||||
recommendationIndex: 4,
|
||||
recommendationSource: 'official_editorial',
|
||||
openingHoursText: '开放时间待确认',
|
||||
}
|
||||
}
|
||||
|
||||
describe('map marker adapter', () => {
|
||||
it('keeps numeric IDs stable when filter order changes', () => {
|
||||
const first = buildMarkerIdMap(['poi-b', 'poi-a'])
|
||||
const second = buildMarkerIdMap(['poi-a', 'poi-b'])
|
||||
expect(Array.from(first.entries())).toEqual(Array.from(second.entries()))
|
||||
})
|
||||
|
||||
it('maps selected POI to selected marker asset', () => {
|
||||
const pois = [summary('poi-a'), summary('poi-b')]
|
||||
const map = buildMarkerIdMap(pois.map(poi => poi.id))
|
||||
const markers = createPoiMarkers(pois, categories, map, 'poi-b')
|
||||
const selectedMarkerId = Array.from(map.entries())
|
||||
.find(([, poiId]) => poiId === 'poi-b')?.[0]
|
||||
const selected = markers.find(marker => marker.id === selectedMarkerId)
|
||||
expect(selected?.iconPath).toBe('/static/markers/park-selected.png')
|
||||
expect(selected?.zIndex).toBe(10)
|
||||
expect(selected?.height).toBeGreaterThan(selected?.width ?? 0)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user