Skip to content

Commit

Permalink
add tests for point field type
Browse files Browse the repository at this point in the history
  • Loading branch information
alisonelizabeth committed Sep 21, 2020
1 parent 569eb8a commit 5dd47fc
Show file tree
Hide file tree
Showing 3 changed files with 168 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { act } from 'react-dom/test-utils';

import { componentHelpers, MappingsEditorTestBed } from '../helpers';

const { setup, getMappingsEditorDataFactory } = componentHelpers.mappingsEditor;

// Parameters automatically added to the point datatype when saved (with the default values)
export const defaultPointParameters = {
type: 'point',
ignore_malformed: false,
ignore_z_value: true,
};

describe('Mappings editor: point datatype', () => {
/**
* Variable to store the mappings data forwarded to the consumer component
*/
let data: any;
let onChangeHandler: jest.Mock = jest.fn();
let getMappingsEditorData = getMappingsEditorDataFactory(onChangeHandler);
let testBed: MappingsEditorTestBed;

beforeAll(() => {
jest.useFakeTimers();
});

afterAll(() => {
jest.useRealTimers();
});

beforeEach(() => {
onChangeHandler = jest.fn();
getMappingsEditorData = getMappingsEditorDataFactory(onChangeHandler);
});

test('initial view and default parameters values', async () => {
const defaultMappings = {
properties: {
myField: {
type: 'point',
},
},
};

const updatedMappings = { ...defaultMappings };

await act(async () => {
testBed = setup({ value: defaultMappings, onChange: onChangeHandler });
});
testBed.component.update();

const {
component,
actions: { startEditField, updateFieldAndCloseFlyout },
} = testBed;

// Open the flyout to edit the field
await startEditField('myField');

// Save the field and close the flyout
await updateFieldAndCloseFlyout();

// It should have the default parameters values added
updatedMappings.properties.myField = defaultPointParameters;

({ data } = await getMappingsEditorData(component));
expect(data).toEqual(updatedMappings);
});

describe('meta parameter', () => {
const defaultMappings = {
properties: {
myField: {
type: 'point',
},
},
};

const updatedMappings = { ...defaultMappings };

const metaParameter = {
meta: {
my_metadata: 'foobar',
},
};

beforeEach(async () => {
await act(async () => {
testBed = setup({ value: defaultMappings, onChange: onChangeHandler });
});
testBed.component.update();
});

test('valid meta object', async () => {
const {
component,
actions: {
startEditField,
updateFieldAndCloseFlyout,
showAdvancedSettings,
toggleFormRow,
updateJsonEditor,
},
} = testBed;

// Open the flyout to edit the field
await startEditField('myField');
await showAdvancedSettings();

// Enable the meta parameter and add value
toggleFormRow('metaParameter');
await act(async () => {
updateJsonEditor('metaParameterEditor', metaParameter.meta);
});
component.update();

// Save the field and close the flyout
await updateFieldAndCloseFlyout();

// It should have the default parameters values added, plus metadata
updatedMappings.properties.myField = {
...defaultPointParameters,
...metaParameter,
};

({ data } = await getMappingsEditorData(component));
expect(data).toEqual(updatedMappings);
});

test('strip empty string', async () => {
const {
component,
actions: { startEditField, updateFieldAndCloseFlyout, showAdvancedSettings, toggleFormRow },
} = testBed;

// Open the flyout to edit the field
await startEditField('myField');
await showAdvancedSettings();

// Enable the meta parameter
toggleFormRow('metaParameter');

// Save the field and close the flyout without adding any values to meta parameter
await updateFieldAndCloseFlyout();

// It should have the default parameters values added
updatedMappings.properties.myField = defaultPointParameters;

({ data } = await getMappingsEditorData(component));
expect(data).toEqual(updatedMappings);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,10 @@ const createActions = (testBed: TestBed<TestSubjects>) => {
const getCheckboxValue = (testSubject: TestSubjects): boolean =>
find(testSubject).props().checked;

const toggleFormRow = (formRowName: string) => {
form.toggleEuiSwitch(`${formRowName}.formRowToggle`);
};

return {
selectTab,
getFieldAt,
Expand All @@ -252,6 +256,7 @@ const createActions = (testBed: TestBed<TestSubjects>) => {
getComboBoxValue,
getToggleValue,
getCheckboxValue,
toggleFormRow,
};
};

Expand Down Expand Up @@ -365,4 +370,6 @@ export type TestSubjects =
| 'searchQuoteAnalyzer-custom'
| 'searchQuoteAnalyzer-toggleCustomButton'
| 'searchQuoteAnalyzer-custom.input'
| 'useSameAnalyzerForSearchCheckBox.input';
| 'useSameAnalyzerForSearchCheckBox.input'
| 'metaParameterEditor'
| string;
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,15 @@ export const MetaParameter: FunctionComponent<Props> = ({ defaultToggleValue })
}),
href: documentationService.getMetaLink(),
}}
data-test-subj="metaParameter"
>
<UseField
path="meta"
config={getFieldConfig('meta')}
component={JsonEditorField}
componentProps={{
euiCodeEditorProps: {
['data-test-subj']: 'metaParameterEditor',
height: '300px',
'aria-label': i18n.translate('xpack.idxMgmt.mappingsEditor.metaParameterAriaLabel', {
defaultMessage: 'metadata field data editor',
Expand Down

0 comments on commit 5dd47fc

Please sign in to comment.