Commit 02eceddd authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Actualiza orden de Facets tras cambiarlos, testea

parent 35b8164d
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ define([
		_initialize: function() {

			this._originalAggregationGroupsDefinition = this.aggs;
			this._groupsOrder = Object.keys(this.aggs);
			this._updateAgreggationGroupsDefinitions(this.aggs);
		},

		_defineFacetsSubscriptions: function() {
@@ -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) {
+1 −1
Original line number Diff line number Diff line
@@ -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'
@@ -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'
+127 −8
Original line number Diff line number Diff line
@@ -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);

@@ -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': {
@@ -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'
							}
						}
					}
				});
			},

			}
		}
	});
});