Skip to content

Commit 304c8f7

Browse files
committed
✅ add more tests
semver: chore
1 parent c7a51d5 commit 304c8f7

File tree

2 files changed

+50
-22
lines changed

2 files changed

+50
-22
lines changed

EliteAPI.Tests/Flattening.cs

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ public void OneField()
1010
var json = "{ \"test\": 1 }";
1111
var paths = FlattenJson(json);
1212

13-
paths.Should().NotBeEmpty();
14-
paths.Should().HaveCount(1);
13+
var expected = new[]
14+
{
15+
new JsonPath("test", 1, JsonType.Number)
16+
};
1517

16-
paths[0].Path.Should().Be("test");
17-
paths[0].Value.Should().Be(1);
18-
paths[0].Type.Should().Be(JsonType.Number);
18+
paths.Should().BeEquivalentTo(expected);
1919
}
2020

2121
[Test]
@@ -24,22 +24,50 @@ public void MultipleFields()
2424
var json = "{ \"test1\": 1, \"test2\": \"value\", \"test3\": true }";
2525
var paths = FlattenJson(json);
2626

27-
paths.Should().NotBeEmpty();
28-
paths.Should().HaveCount(3);
27+
var expected = new[]
28+
{
29+
new JsonPath("test1", 1, JsonType.Number),
30+
new JsonPath("test2", "value", JsonType.String),
31+
new JsonPath("test3", true, JsonType.Boolean)
32+
};
2933

30-
paths[0].Path.Should().Be("test1");
31-
paths[0].Value.Should().Be(1);
32-
paths[0].Type.Should().Be(JsonType.Number);
34+
paths.Should().BeEquivalentTo(expected);
35+
}
36+
37+
[Test]
38+
public void SimpleArray()
39+
{
40+
var json = "{ \"items\": [1, 2, 3] }";
41+
var paths = FlattenJson(json);
3342

34-
paths[1].Path.Should().Be("test2");
35-
paths[1].Value.Should().Be("value");
36-
paths[1].Type.Should().Be(JsonType.String);
43+
var expected = new[]
44+
{
45+
new JsonPath("items[0]", 1, JsonType.Number),
46+
new JsonPath("items[1]", 2, JsonType.Number),
47+
new JsonPath("items[2]", 3, JsonType.Number),
48+
new JsonPath("items.Length", 3, JsonType.Number)
49+
};
3750

38-
paths[2].Path.Should().Be("test3");
39-
paths[2].Value.Should().Be(true);
40-
paths[2].Type.Should().Be(JsonType.Boolean);
51+
paths.Should().BeEquivalentTo(expected);
4152
}
4253

54+
[Test]
55+
public void ArrayWithObject()
56+
{
57+
var json = "{ \"items\": [ { \"nested\": 1 }, { \"nested\": \"2\" }, { \"nested\": false } ] }";
58+
var paths = FlattenJson(json);
59+
60+
var expected = new[]
61+
{
62+
new JsonPath("items[0].nested", 1, JsonType.Number),
63+
new JsonPath("items[1].nested", "2", JsonType.String),
64+
new JsonPath("items[2].nested", false, JsonType.Boolean),
65+
new JsonPath("items.Length", 3, JsonType.Number)
66+
};
67+
68+
paths.Should().BeEquivalentTo(expected);
69+
}
70+
4371
private List<JsonPath> FlattenJson(string json)
4472
{
4573
// TODO: call flattening function

EliteAPI/JsonPath.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
namespace EliteAPI;
22

3-
public struct JsonPath
3+
public readonly struct JsonPath(string path, dynamic value, JsonType type)
44
{
5-
public string Path { get; init; }
6-
7-
public dynamic Value { get; init; }
8-
9-
public JsonType Type { get; init; }
5+
public string Path { get; init; } = path;
6+
7+
public dynamic Value { get; init; } = value;
8+
9+
public JsonType Type { get; init; } = type;
1010
}
1111

1212
public enum JsonType

0 commit comments

Comments
 (0)