Skip to content

Commit 4758f8b

Browse files
chore(internal): add enum tests
1 parent fb72da9 commit 4758f8b

File tree

212 files changed

+38293
-488
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

212 files changed

+38293
-488
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,64 @@
1+
using System.Text.Json;
2+
using Orb.Core;
3+
using Orb.Exceptions;
4+
using Orb.Models.Alerts;
5+
16
namespace Orb.Tests.Models.Alerts;
7+
8+
public class TypeTest : TestBase
9+
{
10+
[Theory]
11+
[InlineData(Type.CreditBalanceDepleted)]
12+
[InlineData(Type.CreditBalanceDropped)]
13+
[InlineData(Type.CreditBalanceRecovered)]
14+
public void Validation_Works(Type rawValue)
15+
{
16+
// force implicit conversion because Theory can't do that for us
17+
ApiEnum<string, Type> value = rawValue;
18+
value.Validate();
19+
}
20+
21+
[Fact]
22+
public void InvalidEnumValidationThrows_Works()
23+
{
24+
var value = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
25+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
26+
ModelBase.SerializerOptions
27+
);
28+
Assert.Throws<OrbInvalidDataException>(() => value.Validate());
29+
}
30+
31+
[Theory]
32+
[InlineData(Type.CreditBalanceDepleted)]
33+
[InlineData(Type.CreditBalanceDropped)]
34+
[InlineData(Type.CreditBalanceRecovered)]
35+
public void SerializationRoundtrip_Works(Type rawValue)
36+
{
37+
// force implicit conversion because Theory can't do that for us
38+
ApiEnum<string, Type> value = rawValue;
39+
40+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
41+
var deserialized = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
42+
json,
43+
ModelBase.SerializerOptions
44+
);
45+
46+
Assert.Equal(value, deserialized);
47+
}
48+
49+
[Fact]
50+
public void InvalidEnumSerializationRoundtrip_Works()
51+
{
52+
var value = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
53+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
54+
ModelBase.SerializerOptions
55+
);
56+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
57+
var deserialized = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
58+
json,
59+
ModelBase.SerializerOptions
60+
);
61+
62+
Assert.Equal(value, deserialized);
63+
}
64+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,66 @@
1+
using System.Text.Json;
2+
using Orb.Core;
3+
using Orb.Exceptions;
4+
using Orb.Models.Alerts;
5+
16
namespace Orb.Tests.Models.Alerts;
7+
8+
public class AlertCreateForExternalCustomerParamsTypeTest : TestBase
9+
{
10+
[Theory]
11+
[InlineData(AlertCreateForExternalCustomerParamsType.CreditBalanceDepleted)]
12+
[InlineData(AlertCreateForExternalCustomerParamsType.CreditBalanceDropped)]
13+
[InlineData(AlertCreateForExternalCustomerParamsType.CreditBalanceRecovered)]
14+
public void Validation_Works(AlertCreateForExternalCustomerParamsType rawValue)
15+
{
16+
// force implicit conversion because Theory can't do that for us
17+
ApiEnum<string, AlertCreateForExternalCustomerParamsType> value = rawValue;
18+
value.Validate();
19+
}
20+
21+
[Fact]
22+
public void InvalidEnumValidationThrows_Works()
23+
{
24+
var value = JsonSerializer.Deserialize<
25+
ApiEnum<string, AlertCreateForExternalCustomerParamsType>
26+
>(
27+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
28+
ModelBase.SerializerOptions
29+
);
30+
Assert.Throws<OrbInvalidDataException>(() => value.Validate());
31+
}
32+
33+
[Theory]
34+
[InlineData(AlertCreateForExternalCustomerParamsType.CreditBalanceDepleted)]
35+
[InlineData(AlertCreateForExternalCustomerParamsType.CreditBalanceDropped)]
36+
[InlineData(AlertCreateForExternalCustomerParamsType.CreditBalanceRecovered)]
37+
public void SerializationRoundtrip_Works(AlertCreateForExternalCustomerParamsType rawValue)
38+
{
39+
// force implicit conversion because Theory can't do that for us
40+
ApiEnum<string, AlertCreateForExternalCustomerParamsType> value = rawValue;
41+
42+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
43+
var deserialized = JsonSerializer.Deserialize<
44+
ApiEnum<string, AlertCreateForExternalCustomerParamsType>
45+
>(json, ModelBase.SerializerOptions);
46+
47+
Assert.Equal(value, deserialized);
48+
}
49+
50+
[Fact]
51+
public void InvalidEnumSerializationRoundtrip_Works()
52+
{
53+
var value = JsonSerializer.Deserialize<
54+
ApiEnum<string, AlertCreateForExternalCustomerParamsType>
55+
>(
56+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
57+
ModelBase.SerializerOptions
58+
);
59+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
60+
var deserialized = JsonSerializer.Deserialize<
61+
ApiEnum<string, AlertCreateForExternalCustomerParamsType>
62+
>(json, ModelBase.SerializerOptions);
63+
64+
Assert.Equal(value, deserialized);
65+
}
66+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,64 @@
1+
using System.Text.Json;
2+
using Orb.Core;
3+
using Orb.Exceptions;
4+
using Orb.Models.Alerts;
5+
16
namespace Orb.Tests.Models.Alerts;
7+
8+
public class AlertCreateForSubscriptionParamsTypeTest : TestBase
9+
{
10+
[Theory]
11+
[InlineData(AlertCreateForSubscriptionParamsType.UsageExceeded)]
12+
[InlineData(AlertCreateForSubscriptionParamsType.CostExceeded)]
13+
public void Validation_Works(AlertCreateForSubscriptionParamsType rawValue)
14+
{
15+
// force implicit conversion because Theory can't do that for us
16+
ApiEnum<string, AlertCreateForSubscriptionParamsType> value = rawValue;
17+
value.Validate();
18+
}
19+
20+
[Fact]
21+
public void InvalidEnumValidationThrows_Works()
22+
{
23+
var value = JsonSerializer.Deserialize<
24+
ApiEnum<string, AlertCreateForSubscriptionParamsType>
25+
>(
26+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
27+
ModelBase.SerializerOptions
28+
);
29+
Assert.Throws<OrbInvalidDataException>(() => value.Validate());
30+
}
31+
32+
[Theory]
33+
[InlineData(AlertCreateForSubscriptionParamsType.UsageExceeded)]
34+
[InlineData(AlertCreateForSubscriptionParamsType.CostExceeded)]
35+
public void SerializationRoundtrip_Works(AlertCreateForSubscriptionParamsType rawValue)
36+
{
37+
// force implicit conversion because Theory can't do that for us
38+
ApiEnum<string, AlertCreateForSubscriptionParamsType> value = rawValue;
39+
40+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
41+
var deserialized = JsonSerializer.Deserialize<
42+
ApiEnum<string, AlertCreateForSubscriptionParamsType>
43+
>(json, ModelBase.SerializerOptions);
44+
45+
Assert.Equal(value, deserialized);
46+
}
47+
48+
[Fact]
49+
public void InvalidEnumSerializationRoundtrip_Works()
50+
{
51+
var value = JsonSerializer.Deserialize<
52+
ApiEnum<string, AlertCreateForSubscriptionParamsType>
53+
>(
54+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
55+
ModelBase.SerializerOptions
56+
);
57+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
58+
var deserialized = JsonSerializer.Deserialize<
59+
ApiEnum<string, AlertCreateForSubscriptionParamsType>
60+
>(json, ModelBase.SerializerOptions);
61+
62+
Assert.Equal(value, deserialized);
63+
}
64+
}

src/Orb.Tests/Models/Alerts/AlertTest.cs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Text.Json;
44
using Orb.Core;
5+
using Orb.Exceptions;
56
using Orb.Models;
67
using Orb.Models.Alerts;
78

@@ -449,6 +450,68 @@ public void Validation_Works()
449450
}
450451
}
451452

453+
public class AlertTypeTest : TestBase
454+
{
455+
[Theory]
456+
[InlineData(AlertType.CreditBalanceDepleted)]
457+
[InlineData(AlertType.CreditBalanceDropped)]
458+
[InlineData(AlertType.CreditBalanceRecovered)]
459+
[InlineData(AlertType.UsageExceeded)]
460+
[InlineData(AlertType.CostExceeded)]
461+
public void Validation_Works(AlertType rawValue)
462+
{
463+
// force implicit conversion because Theory can't do that for us
464+
ApiEnum<string, AlertType> value = rawValue;
465+
value.Validate();
466+
}
467+
468+
[Fact]
469+
public void InvalidEnumValidationThrows_Works()
470+
{
471+
var value = JsonSerializer.Deserialize<ApiEnum<string, AlertType>>(
472+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
473+
ModelBase.SerializerOptions
474+
);
475+
Assert.Throws<OrbInvalidDataException>(() => value.Validate());
476+
}
477+
478+
[Theory]
479+
[InlineData(AlertType.CreditBalanceDepleted)]
480+
[InlineData(AlertType.CreditBalanceDropped)]
481+
[InlineData(AlertType.CreditBalanceRecovered)]
482+
[InlineData(AlertType.UsageExceeded)]
483+
[InlineData(AlertType.CostExceeded)]
484+
public void SerializationRoundtrip_Works(AlertType rawValue)
485+
{
486+
// force implicit conversion because Theory can't do that for us
487+
ApiEnum<string, AlertType> value = rawValue;
488+
489+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
490+
var deserialized = JsonSerializer.Deserialize<ApiEnum<string, AlertType>>(
491+
json,
492+
ModelBase.SerializerOptions
493+
);
494+
495+
Assert.Equal(value, deserialized);
496+
}
497+
498+
[Fact]
499+
public void InvalidEnumSerializationRoundtrip_Works()
500+
{
501+
var value = JsonSerializer.Deserialize<ApiEnum<string, AlertType>>(
502+
JsonSerializer.Deserialize<JsonElement>("\"invalid value\""),
503+
ModelBase.SerializerOptions
504+
);
505+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
506+
var deserialized = JsonSerializer.Deserialize<ApiEnum<string, AlertType>>(
507+
json,
508+
ModelBase.SerializerOptions
509+
);
510+
511+
Assert.Equal(value, deserialized);
512+
}
513+
}
514+
452515
public class BalanceAlertStatusTest : TestBase
453516
{
454517
[Fact]

0 commit comments

Comments
 (0)