Skip to content

Commit ec1c9e0

Browse files
test(audience-sdk): derive enum-derived test wire strings from ToLowercaseString
Final test sweep: tests asserting on enum-derived wire strings stop hardcoding the lowercase forms and read them from the matching ToLowercaseString extension instead, so a wire-rename on an enum member touches one place. - MessageBuilderTests, ImmutableAudienceTests, JsonReaderTests, JsonTests, TypedEventTests, ConsentSyncTests, SessionTests, OfflineResilienceTests: ConsentLevel / IdentityType / ProgressionStatus / ResourceFlow assertions read via ToLowercaseString. - SessionTests pause-rollover thresholds derive from Session.PauseTimeoutMs. - DeleteDataTests query-string asserts use the constants introduced in earlier slices.
1 parent 3eca19e commit ec1c9e0

8 files changed

Lines changed: 167 additions & 163 deletions

File tree

src/Packages/Audience/Tests/Runtime/Core/SessionTests.cs

Lines changed: 48 additions & 48 deletions
Large diffs are not rendered by default.

src/Packages/Audience/Tests/Runtime/DeleteDataTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ public void DeleteData_WithUserId_FiresDelete_WithUserIdQuery()
8484

8585
Assert.IsNotNull(deleteRequest, "expected a DELETE request");
8686
StringAssert.Contains(Constants.DataPath, deleteRequest.RequestUri!.ToString());
87-
StringAssert.Contains("userId=player-42", deleteRequest.RequestUri.Query);
88-
Assert.IsTrue(deleteRequest.Headers.Contains("x-immutable-publishable-key"),
87+
StringAssert.Contains($"{MessageFields.UserId}=player-42", deleteRequest.RequestUri.Query);
88+
Assert.IsTrue(deleteRequest.Headers.Contains(Constants.PublishableKeyHeader),
8989
"publishable key header must be attached");
9090
}
9191

@@ -107,7 +107,7 @@ public void DeleteData_NoUserId_WithExistingAnonymousId_FiresDelete_WithAnonymou
107107
if (r.Method == HttpMethod.Delete) { deleteRequest = r; break; }
108108

109109
Assert.IsNotNull(deleteRequest);
110-
StringAssert.Contains($"anonymousId={seeded}", deleteRequest.RequestUri!.Query);
110+
StringAssert.Contains($"{MessageFields.AnonymousId}={seeded}", deleteRequest.RequestUri!.Query);
111111
}
112112

113113
[Test]

src/Packages/Audience/Tests/Runtime/Events/MessageBuilderTests.cs

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public void Track_RequiredFieldsPresent()
1515
{
1616
var result = MessageBuilder.Track("level_complete", "anon-1", null, PackageVersion);
1717

18-
Assert.AreEqual("track", result[MessageFields.Type]);
18+
Assert.AreEqual(MessageTypes.Track, result[MessageFields.Type]);
1919
Assert.IsTrue(result.ContainsKey(MessageFields.MessageId));
2020
Assert.IsTrue(result.ContainsKey(MessageFields.EventTimestamp));
2121
Assert.IsTrue(result.ContainsKey(MessageFields.Context));
@@ -53,31 +53,34 @@ public void Track_NonNullUserId_PresentInDict()
5353
[Test]
5454
public void Identify_TypeAndIdentityFieldsPresent()
5555
{
56-
var result = MessageBuilder.Identify("anon-42", "user-42", "steam", PackageVersion);
56+
var result = MessageBuilder.Identify("anon-42", "user-42", IdentityType.Steam.ToLowercaseString(), PackageVersion);
5757

58-
Assert.AreEqual("identify", result[MessageFields.Type]);
58+
Assert.AreEqual(MessageTypes.Identify, result[MessageFields.Type]);
5959
Assert.AreEqual("anon-42", result[MessageFields.AnonymousId]);
6060
Assert.AreEqual("user-42", result[MessageFields.UserId]);
61-
Assert.AreEqual("steam", result[MessageFields.IdentityType]);
61+
Assert.AreEqual(IdentityType.Steam.ToLowercaseString(), result[MessageFields.IdentityType]);
6262
}
6363

6464
[Test]
6565
public void Alias_AllFourFieldsPresent()
6666
{
67-
var result = MessageBuilder.Alias("from-id", "email", "to-id", "steam", PackageVersion);
67+
var result = MessageBuilder.Alias(
68+
"from-id", IdentityType.Email.ToLowercaseString(),
69+
"to-id", IdentityType.Steam.ToLowercaseString(),
70+
PackageVersion);
6871

69-
Assert.AreEqual("alias", result[MessageFields.Type]);
72+
Assert.AreEqual(MessageTypes.Alias, result[MessageFields.Type]);
7073
Assert.AreEqual("from-id", result[MessageFields.FromId]);
71-
Assert.AreEqual("email", result[MessageFields.FromType]);
74+
Assert.AreEqual(IdentityType.Email.ToLowercaseString(), result[MessageFields.FromType]);
7275
Assert.AreEqual("to-id", result[MessageFields.ToId]);
73-
Assert.AreEqual("steam", result[MessageFields.ToType]);
76+
Assert.AreEqual(IdentityType.Steam.ToLowercaseString(), result[MessageFields.ToType]);
7477
}
7578

7679
[Test]
7780
public void AllMessages_ContextContainsLibraryAndLibraryVersion()
7881
{
7982
var track = MessageBuilder.Track("evt", null, null, PackageVersion);
80-
var identify = MessageBuilder.Identify(null, "u1", "steam", PackageVersion);
83+
var identify = MessageBuilder.Identify(null, "u1", IdentityType.Steam.ToLowercaseString(), PackageVersion);
8184
var alias = MessageBuilder.Alias("f", "t1", "t", "t2", PackageVersion);
8285

8386
foreach (var msg in new[] { track, identify, alias })
@@ -92,12 +95,12 @@ public void AllMessages_ContextContainsLibraryAndLibraryVersion()
9295
public void AllMessages_SurfaceIsUnity()
9396
{
9497
var track = MessageBuilder.Track("evt", null, null, PackageVersion);
95-
var identify = MessageBuilder.Identify(null, "u1", "steam", PackageVersion);
98+
var identify = MessageBuilder.Identify(null, "u1", IdentityType.Steam.ToLowercaseString(), PackageVersion);
9699
var alias = MessageBuilder.Alias("f", "t1", "t", "t2", PackageVersion);
97100

98-
Assert.AreEqual("unity", track[MessageFields.Surface]);
99-
Assert.AreEqual("unity", identify[MessageFields.Surface]);
100-
Assert.AreEqual("unity", alias[MessageFields.Surface]);
101+
Assert.AreEqual(Constants.Surface, track[MessageFields.Surface]);
102+
Assert.AreEqual(Constants.Surface, identify[MessageFields.Surface]);
103+
Assert.AreEqual(Constants.Surface, alias[MessageFields.Surface]);
101104
}
102105

103106
[Test]
@@ -132,9 +135,9 @@ public void AllMessages_EventTimestamp_IsRoundTripIso8601Utc()
132135
{
133136
var ts = (string)msg[MessageFields.EventTimestamp];
134137
Assert.IsTrue(
135-
DateTime.TryParseExact(ts, "o", CultureInfo.InvariantCulture,
138+
DateTime.TryParseExact(ts, Constants.IsoTimestampFormat, CultureInfo.InvariantCulture,
136139
DateTimeStyles.RoundtripKind, out var parsed),
137-
$"eventTimestamp must parse as ISO 8601 round-trip ('o') format; got: '{ts}'");
140+
$"eventTimestamp must parse as ISO 8601 round-trip ('{Constants.IsoTimestampFormat}') format; got: '{ts}'");
138141
Assert.AreEqual(DateTimeKind.Utc, parsed.Kind, "eventTimestamp must be UTC");
139142
Assert.That(parsed, Is.GreaterThanOrEqualTo(before),
140143
"eventTimestamp must be ~now, not stale");
@@ -159,7 +162,7 @@ public void AllMessages_Context_LibraryAndLibraryVersionAreNonEmptyStrings()
159162
private static IEnumerable<Dictionary<string, object>> EveryMessageType()
160163
{
161164
yield return MessageBuilder.Track("evt", null, null, PackageVersion);
162-
yield return MessageBuilder.Identify(null, "u1", "steam", PackageVersion);
165+
yield return MessageBuilder.Identify(null, "u1", IdentityType.Steam.ToLowercaseString(), PackageVersion);
163166
yield return MessageBuilder.Alias("f", "t1", "t", "t2", PackageVersion);
164167
}
165168
}

src/Packages/Audience/Tests/Runtime/Events/TypedEventTests.cs

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ internal class TypedEventTests
99
[Test]
1010
public void Progression_EventName_IsProgression()
1111
{
12-
Assert.AreEqual("progression", new Progression().EventName);
12+
Assert.AreEqual(EventNames.Progression, new Progression().EventName);
1313
}
1414

1515
[Test]
@@ -35,24 +35,24 @@ public void Progression_Complete_ProducesCorrectProperties()
3535

3636
var props = evt.ToProperties();
3737

38-
Assert.AreEqual("complete", props["status"]);
39-
Assert.AreEqual("tutorial", props["world"]);
40-
Assert.AreEqual("1", props["level"]);
41-
Assert.AreEqual(1500, props["score"]);
42-
Assert.AreEqual(120.5f, props["durationSec"]);
38+
Assert.AreEqual(ProgressionStatus.Complete.ToLowercaseString(), props[EventPropertyKeys.Status]);
39+
Assert.AreEqual("tutorial", props[EventPropertyKeys.World]);
40+
Assert.AreEqual("1", props[EventPropertyKeys.Level]);
41+
Assert.AreEqual(1500, props[EventPropertyKeys.Score]);
42+
Assert.AreEqual(120.5f, props[EventPropertyKeys.DurationSec]);
4343
}
4444

4545
[Test]
4646
public void Progression_OptionalFieldsOmitted_WhenNull()
4747
{
4848
var props = new Progression { Status = ProgressionStatus.Start }.ToProperties();
4949

50-
Assert.IsTrue(props.ContainsKey("status"));
51-
Assert.IsFalse(props.ContainsKey("world"));
52-
Assert.IsFalse(props.ContainsKey("level"));
53-
Assert.IsFalse(props.ContainsKey("stage"));
54-
Assert.IsFalse(props.ContainsKey("score"));
55-
Assert.IsFalse(props.ContainsKey("durationSec"));
50+
Assert.IsTrue(props.ContainsKey(EventPropertyKeys.Status));
51+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.World));
52+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.Level));
53+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.Stage));
54+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.Score));
55+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.DurationSec));
5656
}
5757

5858
[Test]
@@ -69,17 +69,17 @@ public void Resource_Source_ProducesCorrectProperties()
6969

7070
var props = evt.ToProperties();
7171

72-
Assert.AreEqual("source", props["flow"]);
73-
Assert.AreEqual("gold", props["currency"]);
74-
Assert.AreEqual(100m, props["amount"]);
75-
Assert.AreEqual("quest_reward", props["itemType"]);
76-
Assert.AreEqual("main_quest_01", props["itemId"]);
72+
Assert.AreEqual(ResourceFlow.Source.ToLowercaseString(), props[EventPropertyKeys.Flow]);
73+
Assert.AreEqual("gold", props[EventPropertyKeys.Currency]);
74+
Assert.AreEqual(100m, props[EventPropertyKeys.Amount]);
75+
Assert.AreEqual("quest_reward", props[EventPropertyKeys.ItemType]);
76+
Assert.AreEqual("main_quest_01", props[EventPropertyKeys.ItemId]);
7777
}
7878

7979
[Test]
8080
public void Resource_EventName_IsResource()
8181
{
82-
Assert.AreEqual("resource", new Resource().EventName);
82+
Assert.AreEqual(EventNames.Resource, new Resource().EventName);
8383
}
8484

8585
[Test]
@@ -124,31 +124,31 @@ public void Purchase_ProducesCorrectProperties()
124124

125125
var props = evt.ToProperties();
126126

127-
Assert.AreEqual("USD", props["currency"]);
128-
Assert.AreEqual(9.99m, props["value"]);
129-
Assert.AreEqual("gem_pack_01", props["itemId"]);
130-
Assert.AreEqual("Starter Gem Pack", props["itemName"]);
131-
Assert.AreEqual(1, props["quantity"]);
132-
Assert.AreEqual("txn_abc123", props["transactionId"]);
127+
Assert.AreEqual("USD", props[EventPropertyKeys.Currency]);
128+
Assert.AreEqual(9.99m, props[EventPropertyKeys.Value]);
129+
Assert.AreEqual("gem_pack_01", props[EventPropertyKeys.ItemId]);
130+
Assert.AreEqual("Starter Gem Pack", props[EventPropertyKeys.ItemName]);
131+
Assert.AreEqual(1, props[EventPropertyKeys.Quantity]);
132+
Assert.AreEqual("txn_abc123", props[EventPropertyKeys.TransactionId]);
133133
}
134134

135135
[Test]
136136
public void Purchase_OptionalFieldsOmitted_WhenNull()
137137
{
138138
var props = new Purchase { Currency = "EUR", Value = 5.00m }.ToProperties();
139139

140-
Assert.IsTrue(props.ContainsKey("currency"));
141-
Assert.IsTrue(props.ContainsKey("value"));
142-
Assert.IsFalse(props.ContainsKey("itemId"));
143-
Assert.IsFalse(props.ContainsKey("itemName"));
144-
Assert.IsFalse(props.ContainsKey("quantity"));
145-
Assert.IsFalse(props.ContainsKey("transactionId"));
140+
Assert.IsTrue(props.ContainsKey(EventPropertyKeys.Currency));
141+
Assert.IsTrue(props.ContainsKey(EventPropertyKeys.Value));
142+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.ItemId));
143+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.ItemName));
144+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.Quantity));
145+
Assert.IsFalse(props.ContainsKey(EventPropertyKeys.TransactionId));
146146
}
147147

148148
[Test]
149149
public void Purchase_EventName_IsPurchase()
150150
{
151-
Assert.AreEqual("purchase", new Purchase().EventName);
151+
Assert.AreEqual(EventNames.Purchase, new Purchase().EventName);
152152
}
153153

154154
[Test]
@@ -174,14 +174,14 @@ public void MilestoneReached_ProducesCorrectProperties()
174174
{
175175
var props = new MilestoneReached { Name = "first_boss_defeated" }.ToProperties();
176176

177-
Assert.AreEqual("first_boss_defeated", props["name"]);
177+
Assert.AreEqual("first_boss_defeated", props[EventPropertyKeys.Name]);
178178
Assert.AreEqual(1, props.Count);
179179
}
180180

181181
[Test]
182182
public void MilestoneReached_EventName_IsMilestoneReached()
183183
{
184-
Assert.AreEqual("milestone_reached", new MilestoneReached().EventName);
184+
Assert.AreEqual(EventNames.MilestoneReached, new MilestoneReached().EventName);
185185
}
186186
}
187187
}

0 commit comments

Comments
 (0)