DigitalConsumer.ISS/src/mixins/experiment-mixin.spec.js
2024-04-25 11:36:54 -04:00

157 lines
4.2 KiB
JavaScript

import experimentMixin from '@/mixins/experiment-mixin';
import { shallowMount } from '@vue/test-utils';
import { getMountOptions } from '@/helpers/unit-test-helper.js';
import { useMainStore } from '@/store';
/** @ignore */
function setupMocks({ experimentSettings }) {
const store = useMainStore();
const mocks = getMountOptions({});
const testExperimentSettings = {
Setting1: 'Value1',
Setting2: 'Value2',
Setting3: 'Value3',
Setting4: 'Value1',
Setting5: 'Value2',
Setting6: 'Value3'
};
const mockExperimentData = [
{
settings: experimentSettings ?? testExperimentSettings,
isActive: true,
variationName: 'test',
universeName: 'testUniverse'
}
];
store.applicationUser.experiments = mockExperimentData;
const mockComponent = {
template: '<div></div>',
mixins: [experimentMixin]
};
const wrapper = shallowMount(mockComponent, mocks);
return { wrapper };
}
describe('experiment-mixin', () => {
describe('hasSettingEqualTo', () => {
test('setting exists and value matches => return true', () => {
// Arrange
const { wrapper } = setupMocks({});
// Act
const result = wrapper.vm.hasSettingEqualTo('Setting2', 'Value2');
// Assert
expect(result).toEqual(true);
});
test('setting exists and value does not match => return false', () => {
// Arrange
const { wrapper } = setupMocks({});
// Act
const result = wrapper.vm.hasSettingEqualTo('Setting2', 'Value3');
// Assert
expect(result).toEqual(false);
});
test('setting does not exist => return false', () => {
// Arrange
const { wrapper } = setupMocks({});
// Act
const result = wrapper.vm.hasSettingEqualTo('SettingBoogly', 'Woogly');
// Assert
expect(result).toEqual(false);
});
test('there are no settings => return false', () => {
// Arrange
const { wrapper } = setupMocks({ experimentSettings: {} });
// Act
const result = wrapper.vm.hasSettingEqualTo('Setting2', 'Value3');
// Assert
expect(result).toEqual(false);
});
});
describe('hasSetting', () => {
test('has setting => return true', () => {
// Arrange
const { wrapper } = setupMocks({});
// Act
const result = wrapper.vm.hasSetting('Setting4');
// Assert
expect(result).toEqual(true);
});
test('does not have setting => return false', () => {
// Arrange
const { wrapper } = setupMocks({});
// Act
const result = wrapper.vm.hasSetting('BooglyWoogly');
// Assert
expect(result).toEqual(false);
});
test('experimentSettings is empty => return false', () => {
// Arrange
const { wrapper } = setupMocks({ experimentSettings: {} });
// Act
const result = wrapper.vm.hasSetting('Setting4');
// Assert
expect(result).toEqual(false);
});
});
describe('getSettingValue', () => {
test('has setting => return correct value', () => {
// Arrange
const { wrapper } = setupMocks({});
// Act
const result = wrapper.vm.getSettingValue('Setting3');
// Assert
expect(result).toEqual('Value3');
});
test('does not have setting => return null', () => {
// Arrange
const { wrapper } = setupMocks({});
// Act
const result = wrapper.vm.getSettingValue('Hello');
// Assert
expect(result).toBeNull();
});
test('experimentSettings is empty => return null', () => {
// Arrange
const { wrapper } = setupMocks({ experimentSettings: {} });
// Act
const result = wrapper.vm.getSettingValue('Hello');
// Assert
expect(result).toBeNull();
});
});
});