Loading public/javascript/redmic/modules/search/FacetsImpl.js +8 −2 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ define([ _initialize: function() { this._originalAggregationGroupsDefinition = this.aggs; this._groupsOrder = Object.keys(this.aggs); this._updateAgreggationGroupsDefinitions(this.aggs); }, _defineFacetsSubscriptions: function() { Loading @@ -91,9 +91,15 @@ define([ return; } this._updateAgreggationGroupsDefinitions(newAggs); this._getFacets(); }, _updateAgreggationGroupsDefinitions: function(newAggs) { this.aggs = newAggs; this._groupsOrder = Object.keys(newAggs); this._selectionByAggregationGroup = {}; this._getFacets(); }, _getFacets: function(aggs) { Loading tests/_intern-unit.js +1 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ module.exports = function(args) { // Funcionalidades básicas suitesPrefix + 'redmic/base/testRedmicLocalStorage' , suitesPrefix + 'redmic/base/testCredentials' , suitesPrefix + 'redmic/base/testMediator' // Otros , suitesPrefix + 'redmic/map/testOpenLayers' Loading @@ -31,7 +32,6 @@ module.exports = function(args) { , suitesPrefix + 'app/base/models/test_Model' // Módulos , suitesPrefix + 'redmic/base/testMediator' , suitesPrefix + 'redmic/modules/base/test_Module' , suitesPrefix + 'redmic/modules/store/testRestManager' , suitesPrefix + 'redmic/modules/layout/wizard/testWizard' Loading tests/unit/redmic/modules/search/testFacetsImpl.js +127 −8 Original line number Diff line number Diff line Loading @@ -28,13 +28,84 @@ define([ }); }, beforeEach: function() { facets._nestedAggs = {}; facets._facetsInstances = {}; facets._updateAgreggationGroupsDefinitions(facets._originalAggregationGroupsDefinition); }, afterEach: function() { Mediator.publish(facets.getChannel('RESET')); }, after: function() { Mediator.publish(facets.getChannel('DESTROY')); }, tests: { Should_AddFacetsGroup_When_FacetsDataWasRequested: function() { Should_PublishAddToQueryToObtainAggregationData_When_GetFacetsMethodIsCalled: function() { var dfd = this.async(timeout); Mediator.once(facets._buildChannel(facets.queryChannel, facets.actions.ADD_TO_QUERY), dfd.callback(function(req) { assert.property(req, 'query', 'El objeto de publicación no contiene la propiedad esperada'); assert.property(req.query, 'aggs', 'El objeto de petición no contiene la propiedad esperada'); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire': { buckets: [{ key: 'Species distribution', doc_count: 1 }] } }); })); facets._getFacets(); }, Should_SelectElementFromFacets_When_FacetsChangeEventIsReceived: function() { var dfd = this.async(timeout); Mediator.once(facets._buildChannel(facets.queryChannel, facets.actions.ADD_TO_QUERY), dfd.callback(function() { assert.lengthOf(Object.keys(facets._selectionByAggregationGroup), 0, 'Había una selección previa'); facets._onFacetChangeEvent({'themeInspire.name': ['Species distribution']}, 'themeInspire'); assert.lengthOf(Object.keys(facets._selectionByAggregationGroup), 1, 'No había un único grupo de agregación seleccionado'); assert.property(facets._selectionByAggregationGroup, 'themeInspire', 'La clave del grupo de agregación seleccionado no es la esperada'); assert.lengthOf(Object.keys(facets._selectionByAggregationGroup.themeInspire), 1, 'No había un único valor seleccionado dentro del grupo de agregación'); assert.include(facets._selectionByAggregationGroup.themeInspire, 'Species distribution', 'El valor seleccionado dentro del grupo de agregación no es el esperado'); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire': { buckets: [{ key: 'Species distribution', doc_count: 1 }] } }); })); facets._getFacets(); }, Should_AddFacetsInstance_When_FacetsDataIsReceived: function() { var dfd = this.async(timeout); Loading @@ -43,12 +114,15 @@ define([ Mediator.once(facets._buildChannel(facets.loadingChannel, facets.actions.LOADED), dfd.callback(function() { facets._onFacetChangeEvent({'themeInspire.name': ['Species distribution']}, 'themeInspire'); assert.lengthOf(Object.keys(facets._facetsInstances), 1, 'No había una única instancia de grupo de agregación creada'); assert.lengthOf(Object.keys(facets._facetsInstances), 1); assert.property(facets._facetsInstances, 'themeInspire', 'La clave del grupo de agregación instanciado no es la esperada'); })); assert.lengthOf(Object.keys(facets._facetsInstances), 0); assert.lengthOf(Object.keys(facets._facetsInstances), 0, 'Ya existía alguna instancia de grupo de agregación'); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire': { Loading @@ -60,17 +134,62 @@ define([ }); }); facets._getFacets(); }, Should_ReplaceFacetsDefinitionsAndInstances_When_FacetsAreUpdated: function() { var dfd = this.async(timeout); Mediator.once(facets._buildChannel(facets.queryChannel, facets.actions.ADD_TO_QUERY), function() { assert.lengthOf(Object.keys(facets.aggs), 1, 'No había una única definición de grupo de agregación tras actualizar'); assert.property(facets.aggs, 'themeInspire2', 'La clave del grupo de agregación definido no es la esperada tras actualizar'); assert.lengthOf(Object.keys(facets._groupsOrder), 1, 'No había un único elemento en la ordenación de grupos de agregación tras actualizar'); assert.include(facets._groupsOrder, 'themeInspire2', 'La clave en la ordenación de grupos de agregación no es la esperada tras actualizar'); Mediator.once(facets._buildChannel(facets.loadingChannel, facets.actions.LOADED), dfd.callback(function() { assert.lengthOf(Object.keys(facets._facetsInstances), 1, 'No había una única instancia de grupo de agregación creada tras actualizar'); assert.property(facets._facetsInstances, 'themeInspire2', 'La clave del grupo de agregación instanciado no es la esperada tras actualizar'); })); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire2': { buckets: [{ key: 'Species distribution 2', doc_count: 1 }] } }); }); assert.lengthOf(Object.keys(facets.aggs), 1, 'No había una única definición de grupo de agregación'); assert.property(facets.aggs, 'themeInspire', 'La clave del grupo de agregación definido no es la esperada'); Mediator.publish(facets.getChannel('UPDATE_FACETS'), { aggs: { themeInspire: { themeInspire2: { terms: { field: 'themeInspire.name' field: 'themeInspire2.name' } } } }); }, } } }); }); Loading
public/javascript/redmic/modules/search/FacetsImpl.js +8 −2 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ define([ _initialize: function() { this._originalAggregationGroupsDefinition = this.aggs; this._groupsOrder = Object.keys(this.aggs); this._updateAgreggationGroupsDefinitions(this.aggs); }, _defineFacetsSubscriptions: function() { Loading @@ -91,9 +91,15 @@ define([ return; } this._updateAgreggationGroupsDefinitions(newAggs); this._getFacets(); }, _updateAgreggationGroupsDefinitions: function(newAggs) { this.aggs = newAggs; this._groupsOrder = Object.keys(newAggs); this._selectionByAggregationGroup = {}; this._getFacets(); }, _getFacets: function(aggs) { Loading
tests/_intern-unit.js +1 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ module.exports = function(args) { // Funcionalidades básicas suitesPrefix + 'redmic/base/testRedmicLocalStorage' , suitesPrefix + 'redmic/base/testCredentials' , suitesPrefix + 'redmic/base/testMediator' // Otros , suitesPrefix + 'redmic/map/testOpenLayers' Loading @@ -31,7 +32,6 @@ module.exports = function(args) { , suitesPrefix + 'app/base/models/test_Model' // Módulos , suitesPrefix + 'redmic/base/testMediator' , suitesPrefix + 'redmic/modules/base/test_Module' , suitesPrefix + 'redmic/modules/store/testRestManager' , suitesPrefix + 'redmic/modules/layout/wizard/testWizard' Loading
tests/unit/redmic/modules/search/testFacetsImpl.js +127 −8 Original line number Diff line number Diff line Loading @@ -28,13 +28,84 @@ define([ }); }, beforeEach: function() { facets._nestedAggs = {}; facets._facetsInstances = {}; facets._updateAgreggationGroupsDefinitions(facets._originalAggregationGroupsDefinition); }, afterEach: function() { Mediator.publish(facets.getChannel('RESET')); }, after: function() { Mediator.publish(facets.getChannel('DESTROY')); }, tests: { Should_AddFacetsGroup_When_FacetsDataWasRequested: function() { Should_PublishAddToQueryToObtainAggregationData_When_GetFacetsMethodIsCalled: function() { var dfd = this.async(timeout); Mediator.once(facets._buildChannel(facets.queryChannel, facets.actions.ADD_TO_QUERY), dfd.callback(function(req) { assert.property(req, 'query', 'El objeto de publicación no contiene la propiedad esperada'); assert.property(req.query, 'aggs', 'El objeto de petición no contiene la propiedad esperada'); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire': { buckets: [{ key: 'Species distribution', doc_count: 1 }] } }); })); facets._getFacets(); }, Should_SelectElementFromFacets_When_FacetsChangeEventIsReceived: function() { var dfd = this.async(timeout); Mediator.once(facets._buildChannel(facets.queryChannel, facets.actions.ADD_TO_QUERY), dfd.callback(function() { assert.lengthOf(Object.keys(facets._selectionByAggregationGroup), 0, 'Había una selección previa'); facets._onFacetChangeEvent({'themeInspire.name': ['Species distribution']}, 'themeInspire'); assert.lengthOf(Object.keys(facets._selectionByAggregationGroup), 1, 'No había un único grupo de agregación seleccionado'); assert.property(facets._selectionByAggregationGroup, 'themeInspire', 'La clave del grupo de agregación seleccionado no es la esperada'); assert.lengthOf(Object.keys(facets._selectionByAggregationGroup.themeInspire), 1, 'No había un único valor seleccionado dentro del grupo de agregación'); assert.include(facets._selectionByAggregationGroup.themeInspire, 'Species distribution', 'El valor seleccionado dentro del grupo de agregación no es el esperado'); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire': { buckets: [{ key: 'Species distribution', doc_count: 1 }] } }); })); facets._getFacets(); }, Should_AddFacetsInstance_When_FacetsDataIsReceived: function() { var dfd = this.async(timeout); Loading @@ -43,12 +114,15 @@ define([ Mediator.once(facets._buildChannel(facets.loadingChannel, facets.actions.LOADED), dfd.callback(function() { facets._onFacetChangeEvent({'themeInspire.name': ['Species distribution']}, 'themeInspire'); assert.lengthOf(Object.keys(facets._facetsInstances), 1, 'No había una única instancia de grupo de agregación creada'); assert.lengthOf(Object.keys(facets._facetsInstances), 1); assert.property(facets._facetsInstances, 'themeInspire', 'La clave del grupo de agregación instanciado no es la esperada'); })); assert.lengthOf(Object.keys(facets._facetsInstances), 0); assert.lengthOf(Object.keys(facets._facetsInstances), 0, 'Ya existía alguna instancia de grupo de agregación'); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire': { Loading @@ -60,17 +134,62 @@ define([ }); }); facets._getFacets(); }, Should_ReplaceFacetsDefinitionsAndInstances_When_FacetsAreUpdated: function() { var dfd = this.async(timeout); Mediator.once(facets._buildChannel(facets.queryChannel, facets.actions.ADD_TO_QUERY), function() { assert.lengthOf(Object.keys(facets.aggs), 1, 'No había una única definición de grupo de agregación tras actualizar'); assert.property(facets.aggs, 'themeInspire2', 'La clave del grupo de agregación definido no es la esperada tras actualizar'); assert.lengthOf(Object.keys(facets._groupsOrder), 1, 'No había un único elemento en la ordenación de grupos de agregación tras actualizar'); assert.include(facets._groupsOrder, 'themeInspire2', 'La clave en la ordenación de grupos de agregación no es la esperada tras actualizar'); Mediator.once(facets._buildChannel(facets.loadingChannel, facets.actions.LOADED), dfd.callback(function() { assert.lengthOf(Object.keys(facets._facetsInstances), 1, 'No había una única instancia de grupo de agregación creada tras actualizar'); assert.property(facets._facetsInstances, 'themeInspire2', 'La clave del grupo de agregación instanciado no es la esperada tras actualizar'); })); Mediator.publish(facets._buildChannel(facets.queryChannel, facets.actions.AVAILABLE_FACETS), { 'sterms#themeInspire2': { buckets: [{ key: 'Species distribution 2', doc_count: 1 }] } }); }); assert.lengthOf(Object.keys(facets.aggs), 1, 'No había una única definición de grupo de agregación'); assert.property(facets.aggs, 'themeInspire', 'La clave del grupo de agregación definido no es la esperada'); Mediator.publish(facets.getChannel('UPDATE_FACETS'), { aggs: { themeInspire: { themeInspire2: { terms: { field: 'themeInspire.name' field: 'themeInspire2.name' } } } }); }, } } }); });