From d2b498072e0dcd5df1e7f448aca4545f9d2a4cc0 Mon Sep 17 00:00:00 2001 From: kjgarza Date: Tue, 17 Mar 2020 10:11:09 +0100 Subject: [PATCH] test for geolocation addresses https://github.com/datacite/bracco/issues/330 --- tests/acceptance/client_admin/doi-test.js | 17 +++++++++- tests/acceptance/staff_admin/doi-test.js | 8 ++--- tests/factories/doi.js | 7 ++++ .../components/doi-geo-location-test.js | 19 +++++++++++ .../components/doi-geo-locations-test.js | 34 +++++++++++++++++++ 5 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 tests/integration/components/doi-geo-location-test.js create mode 100644 tests/integration/components/doi-geo-locations-test.js diff --git a/tests/acceptance/client_admin/doi-test.js b/tests/acceptance/client_admin/doi-test.js index 74cf6cec0..557900dda 100644 --- a/tests/acceptance/client_admin/doi-test.js +++ b/tests/acceptance/client_admin/doi-test.js @@ -4,7 +4,7 @@ import { currentURL, // findAll, visit, - // fillIn, + fillIn, // waitFor, // click, // typeIn, @@ -108,6 +108,21 @@ module('Acceptance | client_admin | repository', function(hooks) { assert.dom('[doi-subject]').includesText('Materials engineering'); }); + test('visiting the Form and adding geoLocationPlace', async function(assert) { + await authenticateSession({ + uid: 'datacite.rph', + name: 'Alfred Wegener Institute', + role_id: 'client_admin', + provider_id: 'datacite', + client_id: 'datacite.rph', + }); + await visit('repositories/datacite.rph/dois/new'); + + await fillIn('[data-test-geo-location-place]', 'Amsterdam, Novoravis hotel'); + + assert.dom('[data-test-geo-location-place]').hasValue('Amsterdam, Novoravis hotel'); + }); + test('visiting the Form and entering new subject', async function(assert) { await authenticateSession({ uid: 'datacite.rph', diff --git a/tests/acceptance/staff_admin/doi-test.js b/tests/acceptance/staff_admin/doi-test.js index eeedca8c1..691f20589 100644 --- a/tests/acceptance/staff_admin/doi-test.js +++ b/tests/acceptance/staff_admin/doi-test.js @@ -64,7 +64,7 @@ module('Acceptance | staff_admin | admin', function(hooks) { // }); test('new DOI form for repository RPH', async function(assert) { - assert.expect(17); + assert.expect(18); await visit('/repositories/datacite.rph/dois/new'); @@ -79,7 +79,7 @@ module('Acceptance | staff_admin | admin', function(hooks) { assert.dom('[data-test-given-name]').exists(); assert.dom('[data-test-family-name]').exists(); assert.dom('[data-test-name]').exists(); - + assert.dom('[data-test-geo-location-place]').exists(); assert.dom('[data-test-title]').exists(); assert.dom('input#publisher-field').exists(); assert.dom('input#publication-year-field').exists(); @@ -110,7 +110,7 @@ module('Acceptance | staff_admin | admin', function(hooks) { }); test('edit DOI form for repository RPH', async function(assert) { - assert.expect(17); + assert.expect(18); await visit('/dois/10.70048%2Fe605-dg05/edit'); @@ -125,7 +125,7 @@ module('Acceptance | staff_admin | admin', function(hooks) { assert.dom('[data-test-given-name]').exists(); assert.dom('[data-test-family-name]').exists(); assert.dom('[data-test-name]').exists(); - + assert.dom('[data-test-geo-location-place]').exists(); assert.dom('[data-test-title]').exists(); assert.dom('input#publisher-field').exists(); assert.dom('input#publication-year-field').exists(); diff --git a/tests/factories/doi.js b/tests/factories/doi.js index ab71b6254..3d42fe3bb 100644 --- a/tests/factories/doi.js +++ b/tests/factories/doi.js @@ -10,6 +10,7 @@ FactoryGuy.define('doi', { contributors: FactoryGuy.hasMany('contributor'), titles: FactoryGuy.hasMany('title'), descriptions: FactoryGuy.hasMany('description'), + geoLocations: FactoryGuy.hasMany('geoLocation'), subjects: FactoryGuy.hasMany('subject'), publisher: 'Royal Society of Chemistry', types: { @@ -67,6 +68,12 @@ FactoryGuy.define('description', { }, }); +FactoryGuy.define('geoLocation', { + default: { + geoLocationPlace: 'Mexico', + }, +}); + FactoryGuy.define('subject', { default: { subject: 'Clinical medicine', diff --git a/tests/integration/components/doi-geo-location-test.js b/tests/integration/components/doi-geo-location-test.js new file mode 100644 index 000000000..7a6bfd118 --- /dev/null +++ b/tests/integration/components/doi-geo-location-test.js @@ -0,0 +1,19 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +// import { selectChoose } from 'ember-power-select/test-support'; +import { setupFactoryGuy, make } from 'ember-data-factory-guy'; + +module('Integration | Component | doi geo-location', function(hooks) { + setupRenderingTest(hooks); + setupFactoryGuy(hooks); + + test('it renders', async function(assert) { + this.set('model', make('doi')); + this.set('fragment', make('geoLocation')); + await render(hbs`{{doi-geo-location model=model fragment=fragment index=0}}`); + + assert.dom('*').hasText('GeoLocation Place (optional) Description of a geographic location.'); + }); +}); diff --git a/tests/integration/components/doi-geo-locations-test.js b/tests/integration/components/doi-geo-locations-test.js new file mode 100644 index 000000000..5115f4c46 --- /dev/null +++ b/tests/integration/components/doi-geo-locations-test.js @@ -0,0 +1,34 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { setupFactoryGuy, make } from 'ember-data-factory-guy'; +import { render, fillIn, click } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | doi geo-locations', function(hooks) { + setupRenderingTest(hooks); + setupFactoryGuy(hooks); + + test('it renders', async function(assert) { + this.set('model', make('doi')); + await render(hbs`{{doi-geo-locations model=model}}`); + await click('#add-geolocation'); + let geoLocations = this.element.querySelectorAll('input.geo-location-place-field'); + + await fillIn(geoLocations[0], 'Chihuahahu, Mexico, 1890'); + assert.dom(geoLocations[0]).hasValue('Chihuahahu, Mexico, 1890'); + }); + + test('add multiple values', async function(assert) { + this.set('model', make('doi')); + await render(hbs`{{doi-geo-locations model=model}}`); + await click('#add-geolocation'); + await click('#add-geolocation'); + let geoLocations = this.element.querySelectorAll('input.geo-location-place-field'); + + await fillIn(geoLocations[0], 'motzstrasse 56, berlin'); + await fillIn(geoLocations[1], 'Chihuahahu, Mexico, 1890'); + + assert.dom(geoLocations[0]).hasValue('motzstrasse 56, berlin'); + assert.dom(geoLocations[1]).hasValue('Chihuahahu, Mexico, 1890'); + }); +});