mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-13 15:51:00 +00:00
39 lines
1.9 KiB
TypeScript
39 lines
1.9 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import { isEffectivelyOffline } from '../sync/networkMode';
|
|
import { GL_MAPS_THROUGH_APP_SCHEMES } from './glSchemes';
|
|
import { installOfflineProtocol, offlineStyle } from './offlineTiles';
|
|
import { glTileStoreActive, mapboxTileCacheRequest, tileCacheActive } from './tileCache';
|
|
|
|
vi.mock('./platform', () => ({ isNativeIos: vi.fn(() => true), isNativeApp: vi.fn(() => true) }));
|
|
vi.mock('./capabilities', () => ({ hasNativeFeature: vi.fn(() => true) }));
|
|
vi.mock('../sync/networkMode', () => ({ isEffectivelyOffline: vi.fn(() => false) }));
|
|
|
|
const STYLE = 'https://tiles.openfreemap.org/styles/positron';
|
|
|
|
beforeEach(() => {
|
|
vi.stubGlobal('caches', { open: vi.fn() });
|
|
vi.mocked(isEffectivelyOffline).mockReturnValue(false);
|
|
});
|
|
|
|
describe('GL maps and the app schemes', () => {
|
|
it('FE-NATIVE-GLSCHEME-001: online in the iOS app the GL maps load straight from their servers, the raster store stays', () => {
|
|
expect(GL_MAPS_THROUGH_APP_SCHEMES).toBe(false);
|
|
expect(offlineStyle(STYLE)).toBe(STYLE);
|
|
const tile = 'https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/1/1/1.vector.pbf';
|
|
expect(mapboxTileCacheRequest(tile, 'Tile')).toEqual({ url: tile });
|
|
expect(glTileStoreActive()).toBe(false);
|
|
expect(tileCacheActive()).toBe(true);
|
|
});
|
|
|
|
it('FE-NATIVE-GLSCHEME-002: offline, or set to be, the MapLibre basemap reads the stored copy through the protocol', () => {
|
|
const addProtocol = vi.fn();
|
|
installOfflineProtocol({ addProtocol });
|
|
expect(addProtocol).toHaveBeenCalledWith('trek-offline', expect.any(Function));
|
|
|
|
vi.mocked(isEffectivelyOffline).mockReturnValue(true);
|
|
expect(offlineStyle(STYLE)).toBe('trek-offline://tiles.openfreemap.org/styles/positron');
|
|
// Mapbox never goes through the store: offline it gives way to the stored MapLibre basemap.
|
|
expect(glTileStoreActive()).toBe(false);
|
|
});
|
|
});
|