UNPKG

mapillary-js

Version:

WebGL JavaScript library for displaying street level imagery from mapillary.com

512 lines (368 loc) 18.4 kB
import {empty as observableEmpty, Observable, Subject} from "rxjs"; import { PointGeometry, SpotTag, Tag, TagComponent, } from "../../../src/Component"; import {Transform} from "../../../src/Geo"; import { Container, Navigator, } from "../../../src/Viewer"; import {ContainerMockCreator} from "../../helper/ContainerMockCreator.spec"; import {NavigatorMockCreator} from "../../helper/NavigatorMockCreator.spec"; import {TransformHelper} from "../../helper/TransformHelper.spec"; describe("TagComponent.ctor", () => { it("should be defined", () => { const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); expect(tagComponent).toBeDefined(); }); }); describe("TagComponent.deactivate", () => { it("should deactivate properly", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, new NavigatorMockCreator().create()); tagComponent.activate(); tagComponent.deactivate(); }); }); describe("TagComponent.add", () => { it("should add a single tag when deactivated", () => { const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry: PointGeometry = new PointGeometry([0.5, 0.5]); const tag: SpotTag = new SpotTag("id", geometry, {}); tagComponent.add([tag]); const result: Tag = tagComponent.get(tag.id); expect(result).toBeDefined(); expect(result.id).toBe(tag.id); }); it("should add multiple tags when deactivated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeDefined(); expect(result1.id).toBe(tag1.id); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeDefined(); expect(result2.id).toBe(tag2.id); }); it("should add a single tag when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry: PointGeometry = new PointGeometry([0.5, 0.5]); const tag: SpotTag = new SpotTag("id", geometry, {}); tagComponent.add([tag]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result: Tag = tagComponent.get(tag.id); expect(result).toBeDefined(); expect(result.id).toBe(tag.id); }); it("should add multiple tags when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeDefined(); expect(result1.id).toBe(tag1.id); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeDefined(); expect(result2.id).toBe(tag2.id); }); }); describe("TagComponent.getAll", () => { it("should get a single tag when deactivated", () => { const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry: PointGeometry = new PointGeometry([0.5, 0.5]); const tag: SpotTag = new SpotTag("id", geometry, {}); tagComponent.add([tag]); const result: Tag[] = tagComponent.getAll(); expect(result.length).toBe(1); expect(result[0].id).toBe(tag.id); }); it("should get multiple tags when deactivated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); const result: Tag[] = tagComponent.getAll(); expect(result.length).toBe(2); const ids: string[] = result.map((tag: Tag): string => { return tag.id; }); expect(ids.indexOf(tag1.id)).not.toBe(-1); expect(ids.indexOf(tag2.id)).not.toBe(-1); }); it("should get a single tag when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry: PointGeometry = new PointGeometry([0.5, 0.5]); const tag: SpotTag = new SpotTag("id", geometry, {}); tagComponent.add([tag]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result: Tag[] = tagComponent.getAll(); expect(result.length).toBe(1); expect(result[0].id).toBe(tag.id); }); it("should add multiple tags when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result: Tag[] = tagComponent.getAll(); expect(result.length).toBe(2); const ids: string[] = result.map((tag: Tag): string => { return tag.id; }); expect(ids.indexOf(tag1.id)).not.toBe(-1); expect(ids.indexOf(tag2.id)).not.toBe(-1); }); }); describe("TagComponent.remove", () => { it("should remove a single tag when deactivated", () => { const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry: PointGeometry = new PointGeometry([0.5, 0.5]); const tag: SpotTag = new SpotTag("id", geometry, {}); tagComponent.add([tag]); tagComponent.remove([tag.id]); const result: Tag = tagComponent.get(tag.id); expect(result).toBeUndefined(); }); it("should remove multiple tags when deactivated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); tagComponent.remove([tag1.id, tag2.id]); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeUndefined(); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeUndefined(); }); it("should remove one of multiple tags when deactivated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); tagComponent.remove([tag1.id]); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeUndefined(); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeDefined(); }); it("should remove a single tag when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry: PointGeometry = new PointGeometry([0.5, 0.5]); const tag: SpotTag = new SpotTag("id", geometry, {}); tagComponent.add([tag]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result1: Tag = tagComponent.get(tag.id); expect(result1).toBeDefined(); tagComponent.remove([tag.id]); const result2: Tag = tagComponent.get(tag.id); expect(result2).toBeUndefined(); }); it("should remove multiple tags when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeDefined(); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeDefined(); tagComponent.remove([tag1.id, tag2.id]); const result3: Tag = tagComponent.get(tag1.id); expect(result3).toBeUndefined(); const result4: Tag = tagComponent.get(tag2.id); expect(result4).toBeUndefined(); }); it("should remove one of multiple tags when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeDefined(); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeDefined(); tagComponent.remove([tag1.id]); const result3: Tag = tagComponent.get(tag1.id); expect(result3).toBeUndefined(); const result4: Tag = tagComponent.get(tag2.id); expect(result4).toBeDefined(); }); }); describe("TagComponent.removeAll", () => { it("should remove multiple tags when deactivated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, new ContainerMockCreator().create(), new NavigatorMockCreator().create()); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); tagComponent.removeAll(); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeUndefined(); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeUndefined(); }); it("should remove multiple tags when activated", () => { const containerMock: Container = new ContainerMockCreator().create(); (<jasmine.Spy>containerMock.mouseService.filtered$).and.returnValue(observableEmpty()); const navigatorMock: Navigator = new NavigatorMockCreator().create(); const tagComponent: TagComponent = new TagComponent( TagComponent.componentName, containerMock, navigatorMock); tagComponent.activate(); const geometry1: PointGeometry = new PointGeometry([0.5, 0.5]); const tag1: SpotTag = new SpotTag("id1", geometry1, {}); const geometry2: PointGeometry = new PointGeometry([0.5, 0.5]); const tag2: SpotTag = new SpotTag("id2", geometry2, {}); tagComponent.add([tag1, tag2]); (<Subject<Transform>>navigatorMock.stateService.currentTransform$) .next(new TransformHelper().createTransform()); const result1: Tag = tagComponent.get(tag1.id); expect(result1).toBeDefined(); const result2: Tag = tagComponent.get(tag2.id); expect(result2).toBeDefined(); tagComponent.removeAll(); const result3: Tag = tagComponent.get(tag1.id); expect(result3).toBeUndefined(); const result4: Tag = tagComponent.get(tag2.id); expect(result4).toBeUndefined(); }); });