Experiment updates.

This commit is contained in:
Jeremy Zimmerman 2022-11-17 14:23:05 -05:00
parent d92977fddc
commit c6055d569c
2 changed files with 158 additions and 3 deletions

View file

@ -3,14 +3,14 @@ import { useMainStore } from "@/store";
export default {
methods: {
hasSettingEqualTo(settingName, settingValue) {
return useMainStore.experimentSettings[settingName] == settingValue;
return useMainStore().experimentSettings[settingName] == settingValue;
},
hasSetting(settingName) {
return Object.hasOwn( useMainStore.experimentSettings, settingName);
return Object.hasOwn( useMainStore().experimentSettings, settingName);
},
getSettingValue(settingName) {
return this.hasSetting(settingName)
? useMainStore.experimentSettings[settingName]
? useMainStore().experimentSettings[settingName]
: null;
},
},

View 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 };
}