Skip to content
Snippets Groups Projects
Commit b25ba3fe authored by Tifenn Guillas's avatar Tifenn Guillas
Browse files

WIP: Tests on criterion functions

parent e51d34ab
No related branches found
No related tags found
2 merge requests!29Develop,!8Resolve "Add tests for instance store module"
import { Observable } from 'rxjs';
import { ConeSearchEffects } from '../effects/cone-search.effects';
import { EffectsMetadata, getEffectsMetadata } from '@ngrx/effects';
import { ConeSearchService } from '../services/cone-search.service';
import { ToastrService } from 'ngx-toastr';
import { TestBed } from '@angular/core/testing';
import { provideMockActions } from '@ngrx/effects/testing';
import { criterionToString, stringToCriterion } from './';
// import { criterionToString, getCriterionStr, getHost } from './criterion.model';
import {
FieldCriterion,
JsonCriterion,
SelectMultipleCriterion,
BetweenCriterion,
Criterion,
ListCriterion
} from '.';
import { Attribute, Option, RendererConfig } from '../../../metamodel/models';
// import {
// BetweenCriterion,
// FieldCriterion,
// JsonCriterion,
// SelectMultipleCriterion,
// ListCriterion
// } from './criterion';
describe('CriterionModel', () => {
it('#criterionToString should convert criterion object to string', () => {
let betweenCriterion: BetweenCriterion = { id: 1, type: 'between', min: 'un', max: null };
let expected = '1::gte::un';
expect(criterionToString(betweenCriterion)).toEqual(expected);
betweenCriterion = { id: 1, type: 'between', min: null, max: 'deux' };
expected = '1::lte::deux';
expect(criterionToString(betweenCriterion)).toEqual(expected);
betweenCriterion = { id: 1, type: 'between', min: 'un', max: 'deux' };
expected = '1::bw::un|deux';
expect(criterionToString(betweenCriterion)).toEqual(expected);
const fieldCriterion = { id: 1, type: 'field', operator: 'eq', value: 'value' } as FieldCriterion;
expected = '1::eq::value';
expect(criterionToString(fieldCriterion)).toEqual(expected);
const listCriterion = { id: 1, type: 'list', values: ['un', 'deux'] } as ListCriterion;
expected = '1::in::un|deux';
expect(criterionToString(listCriterion)).toEqual(expected);
const jsonCriterion = { id: 1, type: 'json', path: 'path', operator: 'eq', value: 'value' } as JsonCriterion;
expected = '1::js::path|eq|value';
expect(criterionToString(jsonCriterion)).toEqual(expected);
const selectMultipleCriterion = { id: 1, type: 'multiple', options: [{ label: 'un', value: '1', display: 1 }, { label: 'deux', value: '2', display: 2 }] } as SelectMultipleCriterion;
expected = '1::in::1|2';
expect(criterionToString(selectMultipleCriterion)).toEqual(expected);
});
// id: 1,
// name: 'myAttribute',
// label: 'my attribute',
// form_label: 'My Attribute',
// output_display: 1,
// criteria_display: 1,
// search_type: 'field',
// operator: 'eq',
// type: 'field',
// min: 'one', // optional
// max: 'two', // optional
// display_detail: 1,
// options: [{ label: 'option1', value: 'one', display: 1 }, { label: 'option2', value: 'two', display: 2 }] // optional
it.only('#stringToCriterion should convert string criterion into object', () => {
let attribute: Attribute = {
id: 1,
name: 'myAttribute',
label: 'my attribute',
form_label: 'My Attribute',
output_display: 1,
criteria_display: 1,
search_type: 'field',
operator: 'eq',
type: 'field',
display_detail: 1
};
let expected: Criterion = { id: 1, type: 'field', operator: 'neq', value: 'otherValue' } as FieldCriterion;
expect(stringToCriterion(attribute, ['', 'neq', 'otherValue'])).toEqual(expected);
attribute = {
id: 1,
name: 'myAttribute',
label: 'my attribute',
form_label: 'My Attribute',
output_display: 1,
criteria_display: 1,
search_type: 'field',
operator: 'eq',
type: 'field',
min: 'value',
display_detail: 1
};
expected = { id: 1, type: 'field', operator: 'eq', value: 'value' } as FieldCriterion;
expect(stringToCriterion(attribute)).toEqual(expected);
attribute = {
id: 1,
name: 'myAttribute',
label: 'my attribute',
form_label: 'My Attribute',
output_display: 1,
criteria_display: 1,
search_type: 'list',
operator: 'eq',
type: 'field',
display_detail: 1
};
expected = { id: 1, type: 'list', values: ['one', 'two'] } as ListCriterion;
expect(stringToCriterion(attribute, ['', '', 'one|two'])).toEqual(expected);
attribute = {
id: 1,
name: 'myAttribute',
label: 'my attribute',
form_label: 'My Attribute',
output_display: 1,
criteria_display: 1,
search_type: 'list',
operator: 'eq',
type: 'field',
min: 'valueA|valueB',
display_detail: 1
};
expected = { id: 1, type: 'list', values: ['valueA', 'valueB'] } as ListCriterion;
expect(stringToCriterion(attribute)).toEqual(expected);
attribute = {
id: 1,
name: 'myAttribute',
label: 'my attribute',
form_label: 'My Attribute',
output_display: 1,
criteria_display: 1,
search_type: 'between',
operator: 'eq',
type: 'field',
min: 'one',
max: 'two',
display_detail: 1
};
expected = { id: 1, type: 'between', min: 'valueA', max: 'valueB' } as BetweenCriterion;
expect(stringToCriterion(attribute, ['', 'bw', 'valueA|valueB'])).toEqual(expected);
expected = { id: 1, type: 'between', min: 'valueA', max: null } as BetweenCriterion;
expect(stringToCriterion(attribute, ['', 'gte', 'valueA'])).toEqual(expected);
expected = { id: 1, type: 'between', min: null, max: 'valueB' } as BetweenCriterion;
expect(stringToCriterion(attribute, ['', 'lte', 'valueB'])).toEqual(expected);
expected = { id: 1, type: 'between', min: 'one', max: 'two' } as BetweenCriterion;
expect(stringToCriterion(attribute)).toEqual(expected);
attribute = {
id: 1,
name: 'myAttribute',
label: 'my attribute',
form_label: 'My Attribute',
output_display: 1,
criteria_display: 1,
search_type: 'select-multiple',
operator: 'eq',
type: 'field',
min: 'one|two',
display_detail: 1,
options: [{ label: 'one', value: '1', display: 1 }, { label: 'two', value: '2', display: 2 }, { label: 'three', value: '3', display: 3 }]
};
expected = { id: 1, type: 'multiple', options: [{ label: 'one', value: '1', display: 1 }, { label: 'two', value: '2', display: 2 }] } as SelectMultipleCriterion;
expect(stringToCriterion(attribute)).toEqual(expected);
});
// it('#getPrettyCriterion should print criterion correctly', () => {
// const fieldCriterion = { id: 1, type: 'field', operator: 'eq', value: 'value' } as FieldCriterion;
// let expectedPrintedCriterion = '= value';
// expect(getPrettyCriterion(fieldCriterion)).toEqual(expectedPrintedCriterion);
// const jsonCriterion = { id: 1, type: 'json', path: 'path', operator: 'eq', value: 'value' } as JsonCriterion;
// expectedPrintedCriterion = 'path eq value';
// expect(getPrettyCriterion(jsonCriterion)).toEqual(expectedPrintedCriterion);
// const selectMultipleCriterion = { id: 1, type: 'multiple', options: [{label: 'un', value: '1', display: 1}, {label: 'deux', value: '2', display: 2}] } as SelectMultipleCriterion;
// expectedPrintedCriterion = '[un,deux]';
// expect(getPrettyCriterion(selectMultipleCriterion)).toEqual(expectedPrintedCriterion);
// let betweenCriterion = { id: 1, type: 'between', min: 'un', max: null } as BetweenCriterion;
// expectedPrintedCriterion = '>= un';
// expect(getPrettyCriterion(betweenCriterion)).toEqual(expectedPrintedCriterion);
// betweenCriterion = { id: 1, type: 'between', min: null, max: 'deux' } as BetweenCriterion;
// expectedPrintedCriterion = '<= deux';
// expect(getPrettyCriterion(betweenCriterion)).toEqual(expectedPrintedCriterion);
// betweenCriterion = { id: 1, type: 'between', min: 'un', max: 'deux' } as BetweenCriterion;
// expectedPrintedCriterion = '∈ [un;deux]';
// expect(getPrettyCriterion(betweenCriterion)).toEqual(expectedPrintedCriterion);
// const listCriterion = { id: 1, type: 'list', values: ['un', 'deux'] } as ListCriterion;
// expectedPrintedCriterion = '= [un,deux]';
// expect(getPrettyCriterion(listCriterion)).toEqual(expectedPrintedCriterion);
// const notCriterion = {id: 1, type: null} as Criterion;
// expectedPrintedCriterion = 'Criterion type not valid!';
// expect(getPrettyCriterion(notCriterion)).toEqual(expectedPrintedCriterion);
// });
});
...@@ -66,6 +66,17 @@ export const criterionToString = (criterion: Criterion): string => { ...@@ -66,6 +66,17 @@ export const criterionToString = (criterion: Criterion): string => {
return str; return str;
} }
/**
* Returns criterion object from serialized criterion notation.
*
* @param {Attribute} attribute - The criterion to transform.
* @param {string[]} params - The criterion parameters.
*
* @return Criterion
*
* @example
* stringToCriterion(myAttribute, ['firstParameter', 'secondParameter'])
*/
export const stringToCriterion = (attribute: Attribute, params: string[] = null): Criterion => { export const stringToCriterion = (attribute: Attribute, params: string[] = null): Criterion => {
switch (attribute.search_type) { switch (attribute.search_type) {
case 'field': case 'field':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment