From e70d02fe623a2bbc9bc1c45c771bd066e1588f59 Mon Sep 17 00:00:00 2001 From: Amandus Butzer Date: Tue, 24 Jan 2023 15:27:06 +0100 Subject: [PATCH] test: Migrate ors-api-runner.spec.js - needs to be run as a component test, as it needs the App context including the store. It is therefore not in the __tests__ folder but on the same level as the script. - only tests openrouteservice API requests instead of actual class functionality - remove old spec --- src/support/ors-api-runner.cy.js | 82 ++++++++++++++++ .../integration/specs/ors-api-runner.spec.js | 98 ------------------- 2 files changed, 82 insertions(+), 98 deletions(-) create mode 100644 src/support/ors-api-runner.cy.js delete mode 100755 tests/integration/specs/ors-api-runner.spec.js diff --git a/src/support/ors-api-runner.cy.js b/src/support/ors-api-runner.cy.js new file mode 100644 index 00000000..d38339ce --- /dev/null +++ b/src/support/ors-api-runner.cy.js @@ -0,0 +1,82 @@ +import {Directions, Isochrones, PlacesSearch, ReverseGeocode, Pois} from '@/support/ors-api-runner' +import Place from '@/models/place' +import mockupPlaces from 'fixtures/places' +import constants from '@/resources/constants' +import AppLoader from '@/app-loader' +import store from '@/store/store' + +describe('OrsApiRunner test', () => { + beforeEach(() => { + new AppLoader().fetchApiInitialData() + // TODO: test actual requests and responses instead of just checking if the response has the correct structure + // store.commit('mapSettings', { + // apiKey: 'mock', + // apiBaseUrl: 'http://localhost:8080', + // endpoints: { + // directions: 'mock_endpoint' + // } + // }) + assert.isDefined(store.getters.mapSettings.apiKey, 'apiKey exists in mapSettings') + }) + it('fetches API data and calculate a route', () => { + return new Promise((resolve, reject) => { + Directions([new Place(8.34, 48.32), new Place(8.35, 48.32)]).then(response => { + expect(response.content.features.length).to.equal(1) + expect(response.content.features[0].geometry.type).to.equal('LineString') + resolve() + }).catch(error => { + reject(error) + }) + }) + }) + + it('fetches API data and calculates an isochrone', () => { + let places = [mockupPlaces.isochroneSinglePlace] + store.commit('mode', constants.modes.isochrones) + + return new Promise((resolve, reject) => { + Isochrones(places).then(response => { + expect(response.content.features.length).to.equal(1) + expect(response.content.features[0].geometry.type).to.equal('Polygon') + resolve() + }).catch(error => { + reject(error) + }) + }) + }) + + it('fetches API data and finds a place', () => { + return new Promise((resolve, reject) => { + PlacesSearch('Heidelberg').then(places => { + expect(places.length).to.be.greaterThan(10) + assert.instanceOf(places[0], Place) + resolve() + }).catch(error => { + reject(error) + }) + }) + }) + + it('fetches API data and reverse geocodes', () => { + return new Promise((resolve, reject) => { + ReverseGeocode(41.060067961642716, -8.543758392333986).then(places => { + expect(places.length).to.be.greaterThan(9) + assert.instanceOf(places[0], Place) + resolve() + }).catch(error => { + reject(error) + }) + }) + }) + + it('fetches API data and gets pois', () => { + return new Promise((resolve, reject) => { + Pois({category_group_ids: [420]}).then(response => { + expect(response.features.length).to.be.greaterThan(0) + resolve() + }).catch(error => { + reject(error) + }) + }) + }) +}) diff --git a/tests/integration/specs/ors-api-runner.spec.js b/tests/integration/specs/ors-api-runner.spec.js deleted file mode 100755 index 62c383c0..00000000 --- a/tests/integration/specs/ors-api-runner.spec.js +++ /dev/null @@ -1,98 +0,0 @@ -import { Directions, Isochrones, PlacesSearch, ReverseGeocode, Pois } from '@/support/ors-api-runner' -import Place from '@/models/place' -import mockupPlaces from '../mockups/places.js' -import constants from '@/resources/constants' -import AppLoader from '@/app-loader' -import store from '@/store/store' -import lodash from 'lodash' - -describe('OrsApiRunner test', () => { - it('fetch API data', async () => { - await new AppLoader().fetchApiInitialData() - expect(store.getters.mapSettings.apiKey).toBeDefined() - }) - it('should fetch API data and calculate a route', async () => { - await new AppLoader().fetchApiInitialData() - expect(store.getters.mapSettings.apiKey).toBeDefined() - let places = [mockupPlaces.FromToDirectionsPlaces.from, mockupPlaces.FromToDirectionsPlaces.to] - store.commit('mode', constants.modes.directions) - - return new Promise((resolve, reject) => { - Directions(places).then(response => { - expect(response.content.features.length).toEqual(1) - expect(response.content.features[0].geometry.type).toEqual('LineString') - resolve() - }).catch(result => { - let error =lodash.get(result, 'response.response.body.error') || result.response - console.log(error) - reject(error) - }) - }) - }) - - it('should fetch API data and calculate isochrone', async () => { - await new AppLoader().fetchApiInitialData() - expect(store.getters.mapSettings.apiKey).toBeDefined() - let places = [mockupPlaces.isochroneSinglePlace] - store.commit('mode', constants.modes.isochrones) - - return new Promise((resolve, reject) => { - Isochrones(places).then(response => { - expect(response.content.features.length).toEqual(1) - expect(response.content.features[0].geometry.type).toEqual('Polygon') - resolve() - }).catch(result => { - let error = lodash.get(result, 'response.response.body.error') || result.response - console.log(error) - reject(error) - }) - }) - }) - - it('should fetch API data and find places', async () => { - await new AppLoader().fetchApiInitialData() - expect(store.getters.mapSettings.apiKey).toBeDefined() - - return new Promise((resolve, reject) => { - PlacesSearch('Heidelberg').then(places => { - expect(places.length).toBeGreaterThan(10) - expect(places[0]).toBeInstanceOf(Place) - resolve() - }).catch(result => { - let error = lodash.get(result, 'response.response.error.stack') || result.response.text - reject(error) - }) - }) - }) - - it('should fetch API data and reverse geocode', async () => { - await new AppLoader().fetchApiInitialData() - expect(store.getters.mapSettings.apiKey).toBeDefined() - - return new Promise((resolve, reject) => { - ReverseGeocode(41.060067961642716, -8.543758392333986).then(places => { - expect(places.length).toBeGreaterThan(9) - expect(places[0]).toBeInstanceOf(Place) - resolve() - }).catch(result => { - let error = lodash.get(result, 'response.response.body.error') || result.response - reject(error) - }) - }) - }) - - it('should fetch API data and get pois', async () => { - await new AppLoader().fetchApiInitialData() - expect(store.getters.mapSettings.apiKey).toBeDefined() - - return new Promise((resolve, reject) => { - Pois({category_group_ids: [420]}).then(response => { - expect(response.features.length).toBeGreaterThan(0) - resolve() - }).catch(result => { - let error = lodash.get(result, 'response.response.body.error') || result.response - reject(error) - }) - }) - }) -})