Experiment updates.
This commit is contained in:
parent
d92977fddc
commit
c6055d569c
2 changed files with 158 additions and 3 deletions
|
|
@ -3,14 +3,14 @@ import { useMainStore } from "@/store";
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
methods: {
|
||||||
hasSettingEqualTo(settingName, settingValue) {
|
hasSettingEqualTo(settingName, settingValue) {
|
||||||
return useMainStore.experimentSettings[settingName] == settingValue;
|
return useMainStore().experimentSettings[settingName] == settingValue;
|
||||||
},
|
},
|
||||||
hasSetting(settingName) {
|
hasSetting(settingName) {
|
||||||
return Object.hasOwn( useMainStore.experimentSettings, settingName);
|
return Object.hasOwn( useMainStore().experimentSettings, settingName);
|
||||||
},
|
},
|
||||||
getSettingValue(settingName) {
|
getSettingValue(settingName) {
|
||||||
return this.hasSetting(settingName)
|
return this.hasSetting(settingName)
|
||||||
? useMainStore.experimentSettings[settingName]
|
? useMainStore().experimentSettings[settingName]
|
||||||
: null;
|
: null;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
155
src/mixins/experiment-mixin.spec.js
Normal file
155
src/mixins/experiment-mixin.spec.js
Normal file
|
|
@ -0,0 +1,155 @@
|
||||||
|
import experimentMixin from "@/mixins/experiment-mixin";
|
||||||
|
import { shallowMount } from "@vue/test-utils";
|
||||||
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
|
import { useMainStore } from "@/store";
|
||||||
|
|
||||||
|
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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
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,
|
||||||
|
variationName: "test",
|
||||||
|
universeName: "testUniverse",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
store.applicationUser.experiments = mockExperimentData;
|
||||||
|
|
||||||
|
const mockComponent = {
|
||||||
|
template: "<div></div>",
|
||||||
|
mixins: [experimentMixin],
|
||||||
|
};
|
||||||
|
|
||||||
|
const wrapper = shallowMount(mockComponent, mocks);
|
||||||
|
|
||||||
|
return { wrapper };
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue