Skip to content

Commit 16b66e6

Browse files
authored
Merge pull request #283 from splitio/FME-8365-api-integrations-tests
updated api class and integrations tests
2 parents 390b250 + 18a7af6 commit 16b66e6

File tree

6 files changed

+94
-22
lines changed

6 files changed

+94
-22
lines changed

src/Splitio/Services/Impressions/Classes/ImpressionsSdkApiClient.cs

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,50 @@ public async Task SendBulkImpressionsCountAsync(List<ImpressionsCountModel> impr
7777
// Public for tests
7878
public static string ConvertToJson(List<KeyImpression> impressions)
7979
{
80-
var impressionsPerFeature =
81-
impressions
82-
.GroupBy(item => item.Feature)
83-
.Select(group => new { f = group.Key, i = group.Select(x => new { k = x.KeyName, t = x.Treatment, m = x.Time, c = x.ChangeNumber, r = x.Label, b = x.BucketingKey }) });
80+
List<Dictionary<String, Object>> impressionsPerFeature = new List<Dictionary<String, Object>>();
81+
List<Dictionary<String, Object>> currentFeatureImps = new List<Dictionary<String, Object>>();
82+
String currentFeature = "";
83+
Dictionary<String, Object> impRecord = new Dictionary<String, Object>();
84+
Boolean first = true;
85+
foreach (KeyImpression impression in impressions.OrderBy(i => i.Feature))
86+
{
87+
if (first)
88+
{
89+
currentFeature = impression.Feature;
90+
first = false;
91+
}
8492

93+
if (impression.Feature != currentFeature)
94+
{
95+
impressionsPerFeature.Add(new Dictionary<String, Object>
96+
{
97+
{ "f", currentFeature },
98+
{ "i", currentFeatureImps }
99+
});
100+
currentFeatureImps = new List<Dictionary<String, Object>>();
101+
}
102+
impRecord = new Dictionary<String, Object>
103+
{
104+
{ "k", impression.KeyName },
105+
{ "t", impression.Treatment },
106+
{ "m", impression.Time },
107+
{ "c", impression.ChangeNumber },
108+
{ "r", impression.Label },
109+
{ "b", impression.BucketingKey }
110+
};
111+
if (impression.Properties != null)
112+
{
113+
impRecord.Add("properties", impression.Properties);
114+
}
115+
currentFeatureImps.Add(impRecord);
116+
currentFeature = impression.Feature;
117+
}
118+
impressionsPerFeature.Add(new Dictionary<String, Object>
119+
{
120+
{ "f", currentFeature },
121+
{ "i", currentFeatureImps }
122+
});
123+
85124
return JsonConvert.SerializeObject(impressionsPerFeature);
86125
}
87126

tests/Splitio.Integration-tests/PollingClientTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,6 @@ public void GetTreatments_ValidateDedupeImpressions_Debug()
347347
Assert.AreEqual(0, impressionCounts.Count);
348348
}
349349

350-
// TODO: None mode is not supported yet.
351-
[Ignore]
352350
[TestMethod]
353351
public void GetTreatments_WithImpressionsInNoneMode()
354352
{

tests/Splitio.Tests.Common/BaseAsyncClientTests.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,17 +172,24 @@ public async Task GetTreatment_BetweenSemverMatcher()
172172
var client = splitFactory.Client();
173173

174174
client.BlockUntilReady(10000);
175+
EvaluationOptions evaluationOption = new EvaluationOptions(
176+
new Dictionary<string, object> {
177+
{ "prop1", "val1" }
178+
}
179+
);
175180

176181
// Act.
177-
var result1 = await client.GetTreatmentAsync("mauro_test", "semver_between", new Dictionary<string, object> { { "version", "2.0.0" } });
182+
var result1 = await client.GetTreatmentAsync("mauro_test", "semver_between", new Dictionary<string, object> { { "version", "2.0.0" } }, evaluationOptions: evaluationOption);
178183
var result2 = await client.GetTreatmentAsync("mauro_test2", "semver_between", new Dictionary<string, object> { { "version", "3.0.0" } });
179184
client.Destroy();
180185

181186
// Assert.
182187
Assert.AreEqual("on", result1);
183188
Assert.AreEqual("off", result2);
184189

185-
var impressionExpected1 = Helper.GetImpressionExpected("semver_between", "mauro_test");
190+
var impExp = Helper.GetImpressionExpected("semver_between", "mauro_test");
191+
KeyImpression impressionExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
192+
impressionExpected1.Properties = "{\"prop1\":\"val1\"}";
186193
var impressionExpected2 = Helper.GetImpressionExpected("semver_between", "mauro_test2");
187194

188195
//Validate impressions sent to the be.

tests/Splitio.Tests.Common/BaseIntegrationTests.cs

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
using Microsoft.VisualStudio.TestTools.UnitTesting;
1+
using HandlebarsDotNet.Features;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
23
using Splitio.Domain;
34
using Splitio.Services.Client.Classes;
45
using Splitio.Services.Impressions.Interfaces;
56
using Splitio.Tests.Common.Resources;
67
using System.Collections.Generic;
78
using System.Linq;
9+
using System.Reflection.Emit;
810

911
namespace Splitio.Tests.Common
1012
{
@@ -361,7 +363,9 @@ public void GetTreatment_WithtBUR_WithMultipleCalls_ReturnsTreatments()
361363
Assert.AreEqual("on", result3);
362364
Assert.AreEqual("off", result4);
363365

364-
var impressionExpected1 = GetImpressionExpected("FACUNDO_TEST", "nico_test");
366+
var impExp = GetImpressionExpected("FACUNDO_TEST", "nico_test");
367+
KeyImpression impressionExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
368+
impressionExpected1.Properties = "{\"prop1\":\"val1\"}";
365369
var impressionExpected2 = GetImpressionExpected("FACUNDO_TEST", "mauro_test");
366370
var impressionExpected3 = GetImpressionExpected("Test_Save_1", "1");
367371
var impressionExpected4 = GetImpressionExpected("Test_Save_1", "24");
@@ -516,7 +520,9 @@ public void GetTreatmentWithConfig_WithtBUR_WithMultipleCalls_ReturnsTreatments(
516520
Assert.AreEqual("{\"version\":\"v2\"}", result3.Config);
517521
Assert.AreEqual("{\"version\":\"v1\"}", result4.Config);
518522

519-
var impExpected1 = GetImpressionExpected("FACUNDO_TEST", "nico_test");
523+
var impExp = GetImpressionExpected("FACUNDO_TEST", "nico_test");
524+
KeyImpression impExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
525+
impExpected1.Properties = "{\"prop1\":\"val1\"}";
520526
var impExpected2 = GetImpressionExpected("FACUNDO_TEST", "mauro_test");
521527
var impExpected3 = GetImpressionExpected("MAURO_TEST", "mauro");
522528
var impExpected4 = GetImpressionExpected("MAURO_TEST", "test");
@@ -635,9 +641,15 @@ public void GetTreatments_WithtBUR_ReturnsTreatments()
635641
Assert.AreEqual("off", result["MAURO_TEST"]);
636642
Assert.AreEqual("off", result["Test_Save_1"]);
637643

638-
var impExpected1 = GetImpressionExpected("FACUNDO_TEST", "nico_test");
639-
var impExpected2 = GetImpressionExpected("MAURO_TEST", "nico_test");
640-
var impExpected3 = GetImpressionExpected("Test_Save_1", "nico_test");
644+
var impExp = GetImpressionExpected("FACUNDO_TEST", "nico_test");
645+
KeyImpression impExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
646+
impExpected1.Properties = "{\"prop1\":\"val1\"}";
647+
impExp = GetImpressionExpected("MAURO_TEST", "nico_test");
648+
KeyImpression impExpected2 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
649+
impExpected2.Properties = "{\"prop1\":\"val1\"}";
650+
impExp = GetImpressionExpected("Test_Save_1", "nico_test");
651+
KeyImpression impExpected3 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
652+
impExpected3.Properties = "{\"prop1\":\"val1\"}";
641653

642654
//Validate impressions sent to the be.
643655
AssertSentImpressions(3, impExpected1, impExpected2, impExpected3);
@@ -761,9 +773,15 @@ public void GetTreatmentsWithConfig_WithtBUR_ReturnsTreatments()
761773
Assert.AreEqual("{\"version\":\"v1\"}", result["MAURO_TEST"].Config);
762774
Assert.IsNull(result["Test_Save_1"].Config);
763775

764-
var impExpected1 = GetImpressionExpected("FACUNDO_TEST", "nico_test");
765-
var impExpected2 = GetImpressionExpected("MAURO_TEST", "nico_test");
766-
var impExpected3 = GetImpressionExpected("Test_Save_1", "nico_test");
776+
var impExp = GetImpressionExpected("FACUNDO_TEST", "nico_test");
777+
KeyImpression impExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
778+
impExpected1.Properties = "{\"prop1\":\"val1\"}";
779+
impExp = GetImpressionExpected("MAURO_TEST", "nico_test");
780+
KeyImpression impExpected2 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
781+
impExpected2.Properties = "{\"prop1\":\"val1\"}";
782+
impExp = GetImpressionExpected("Test_Save_1", "nico_test");
783+
KeyImpression impExpected3 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
784+
impExpected3.Properties = "{\"prop1\":\"val1\"}";
767785

768786
//Validate impressions sent to the be.
769787
AssertSentImpressions(3, impExpected1, impExpected2, impExpected3);
@@ -902,8 +920,10 @@ public void GetTreatmentsWithConfigByFlagSets_WithoutFlagSetsInConfig()
902920
Assert.AreEqual("{\"color\":\"green\"}", treatment.Value.Config);
903921

904922
//Validate impressions sent to the be.
905-
var impressionExpected = new KeyImpression("nico_test", "FACUNDO_TEST", "on", 0, 1506703262916, "whitelisted", null, false, null, false);
906-
923+
var impExp = new KeyImpression("nico_test", "FACUNDO_TEST", "on", 0, 1506703262916, "whitelisted", null, false, null, false);
924+
KeyImpression impressionExpected = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
925+
impressionExpected.Properties = "{\"prop1\":\"val1\"}";
926+
907927
AssertSentImpressions(1, impressionExpected);
908928
AssertImpressionListener(1, impressionListener);
909929
Helper.AssertImpression(impressionListener.Get("FACUNDO_TEST", "nico_test"), impressionExpected);
@@ -964,7 +984,9 @@ public void GetTreatmentsByFlagSets_WithoutFlagSetsInConfig()
964984
Assert.AreEqual("FACUNDO_TEST", treatment.Key);
965985
Assert.AreEqual("on", treatment.Value);
966986

967-
var impExpected1 = GetImpressionExpected("FACUNDO_TEST", "nico_test");
987+
var impExp = GetImpressionExpected("FACUNDO_TEST", "nico_test");
988+
KeyImpression impExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
989+
impExpected1.Properties = "{\"prop1\":\"val1\"}";
968990

969991
//Validate impressions sent to the be.
970992
AssertSentImpressions(1, impExpected1);
@@ -1028,7 +1050,9 @@ public void GetTreatmentsWithConfigByFlagSet_WithoutFlagSetsInConfig()
10281050
Assert.AreEqual("on", treatment.Value.Treatment);
10291051
Assert.AreEqual("{\"color\":\"green\"}", treatment.Value.Config);
10301052

1031-
var impExpected1 = GetImpressionExpected("FACUNDO_TEST", "nico_test");
1053+
var impExp = GetImpressionExpected("FACUNDO_TEST", "nico_test");
1054+
KeyImpression impExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
1055+
impExpected1.Properties = "{\"prop1\":\"val1\"}";
10321056

10331057
//Validate impressions sent to the be.
10341058
AssertSentImpressions(1, impExpected1);
@@ -1091,7 +1115,9 @@ public void GetTreatmentsByFlagSet_WithoutFlagSetsInConfig()
10911115
Assert.AreEqual("FACUNDO_TEST", treatment.Key);
10921116
Assert.AreEqual("on", treatment.Value);
10931117

1094-
var impExpected1 = GetImpressionExpected("FACUNDO_TEST", "nico_test");
1118+
var impExp = GetImpressionExpected("FACUNDO_TEST", "nico_test");
1119+
KeyImpression impExpected1 = new KeyImpression(impExp.KeyName, impExp.Feature, impExp.Treatment, impExp.Time, impExp.ChangeNumber, impExp.Label, impExp.BucketingKey, impExp.ImpressionsDisabled, impExp.PreviousTime, impExp.Optimized);
1120+
impExpected1.Properties = "{\"prop1\":\"val1\"}";
10951121

10961122
//Validate impressions sent to the be.
10971123
AssertSentImpressions(1, impExpected1);

tests/Splitio.Tests.Common/Resources/InMemoryHelper.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public static void AssertSentImpressions(int sentImpressionsCount, HttpClientMoc
107107
.Where(si => expectedImp.KeyName == si.K)
108108
.Where(si => expectedImp.Label == si.R)
109109
.Where(si => expectedImp.Treatment == si.T)
110+
.Where(si => expectedImp.Properties == si.PROPERTIES)
110111
.Any());
111112
}
112113
}

tests/Splitio.Tests.Common/Resources/KeyImpressionBackend.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class ImpressionData
1414
public string B { get; set; }
1515
public string T { get; set; }
1616
public string R { get; set; }
17+
public string PROPERTIES { get; set; }
1718
public long? C { get; set; }
1819
public long? M { get; set; }
1920
}

0 commit comments

Comments
 (0)