import { FeatureConfigService } from "../../../src/services/FeatureConfig.service"; import { MockedFeatureConfig } from "@ogury/feature-config-sdk"; import { FakeRequestBuilder } from "../fakeRequestBuilder"; import { expect } from "chai"; import { SplitParameter } from "@ogury/feature-config-api-client"; describe("FeatureConfigService", function () { const featureConfigService = FeatureConfigService.getInstance(); describe("getStringValue", () => { it("should get default value when there is no parameter", function () { const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getStringValue( request, "ContextAlgoExternal", "NotInList" ); expect(result_param).to.equal("NotInList"); }); it("should get existing value for parameter", function () { const mockedFeatureConf = new MockedFeatureConfig(); mockedFeatureConf.setParam("ContextAlgoExternal", "TestValue"); featureConfigService.setFeatureConfig(mockedFeatureConf); const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getStringValue( request, "ContextAlgoExternal", "NotInList" ); expect(result_param).to.equal("TestValue"); }); it("should get existing value for parameter split by ODID population", function () { const mockedFeatureConf = new MockedFeatureConfig(); mockedFeatureConf.setParamWithExperiment( "ParamForExp", "Experiment1", ["1", "2"], [50, 50], "0", SplitParameter.ODID ); featureConfigService.setFeatureConfig(mockedFeatureConf); const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getParameterValue(request, "ParamForExp", "0"); expect(result_param).to.equal("2"); const request2 = new FakeRequestBuilder() .withRandomId() .withODID("b638eae7-5a6b-492a-9e33-db8999ea6fb3") .build(); const result_param2 = featureConfigService.getParameterValue(request2, "ParamForExp", "0"); expect(result_param2).to.equal("1"); }); it("should get default value when feature config is not active", function () { featureConfigService.setFeatureConfig(null as any); const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getStringValue( request, "ContextAlgoExternal", "NotInList" ); expect(result_param).to.equal("NotInList"); }); }); describe("getIntValue", () => { it("should get default value when there is no parameter", function () { const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getIntValue(request, "ContextAlgoExternal", -5); expect(result_param).to.equal(-5); }); it("should get existing value for parameter", function () { const mockedFeatureConf = new MockedFeatureConfig(); mockedFeatureConf.setParam("ContextAlgoExternal", "125"); featureConfigService.setFeatureConfig(mockedFeatureConf); const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getIntValue(request, "ContextAlgoExternal", -5); expect(result_param).to.equal(125); }); it("should get default value if value could not be parsed to int", function () { const mockedFeatureConf = new MockedFeatureConfig(); mockedFeatureConf.setParam("ContextAlgoExternal", "aifhadsjkf"); featureConfigService.setFeatureConfig(mockedFeatureConf); const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getIntValue(request, "ContextAlgoExternal", -5); expect(result_param).to.equal(-5); }); }); describe("getFloatValue", () => { it("should get default value when there is no parameter", function () { const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getFloatValue(request, "ContextAlgoExternal", -5.5); expect(result_param).to.equal(-5.5); }); it("should get existing value for parameter", function () { const mockedFeatureConf = new MockedFeatureConfig(); mockedFeatureConf.setParam("ContextAlgoExternal", "125.1"); featureConfigService.setFeatureConfig(mockedFeatureConf); const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getFloatValue(request, "ContextAlgoExternal", -5.5); expect(result_param).to.equal(125.1); }); it("should get default value if value could not be parsed to float", function () { const mockedFeatureConf = new MockedFeatureConfig(); mockedFeatureConf.setParam("ContextAlgoExternal", "aifhadsjkf"); featureConfigService.setFeatureConfig(mockedFeatureConf); const request = new FakeRequestBuilder().withRandomId().build(); const result_param = featureConfigService.getFloatValue(request, "ContextAlgoExternal", -5.5); expect(result_param).to.equal(-5.5); }); }); });