Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 25 additions & 25 deletions Contentstack.Utils.Tests/EmbeddedObjectConverterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public void ReadJson_EntryJson_ReturnsEmbeddedObject()
public void ReadJson_EntryJson_PopulatesUid()
{
var result = DeserializeSingle(ReadJson("embeddedEntry.json"));
Assert.Equal("blt05dca76dadb9455e", result.Uid);
Assert.Equal("sample_author_uid", result.Uid);
}

[Fact]
Expand All @@ -123,7 +123,7 @@ public void ReadJson_EntryJson_PopulatesContentTypeUid()
public void ReadJson_EntryJson_PopulatesTitle_ViaIEmbeddedEntry()
{
var result = DeserializeSingle(ReadJson("embeddedEntry.json"));
Assert.Equal("John Smith", (result as IEmbeddedEntry)?.Title);
Assert.Equal("Dummy User", (result as IEmbeddedEntry)?.Title);
}

[Fact]
Expand All @@ -134,9 +134,9 @@ public void ReadJson_EntryJson_CustomFields_CapturedInFields()
Assert.True(result.Fields.ContainsKey("email"));
Assert.True(result.Fields.ContainsKey("avatar_url"));
Assert.Equal(
"Senior software engineer with 12 years of experience in distributed systems.",
"This is a dummy bio used for testing purposes.",
result.Fields["bio"].ToString());
Assert.Equal("john.smith@example.com", result.Fields["email"].ToString());
Assert.Equal("dummy.user@example.com", result.Fields["email"].ToString());
}

[Fact]
Expand All @@ -147,8 +147,8 @@ public void ReadJson_EntryJson_NestedObjectField_CapturedInFields()
Assert.True(result.Fields.ContainsKey("social"));
var social = result.Fields["social"] as JObject;
Assert.NotNull(social);
Assert.Equal("@johnsmith", social["twitter"]?.ToString());
Assert.Equal("linkedin.com/in/johnsmith", social["linkedin"]?.ToString());
Assert.Equal("@dummyuser", social["twitter"]?.ToString());
Assert.Equal("linkedin.com/in/dummyuser", social["linkedin"]?.ToString());
}

[Fact]
Expand All @@ -160,7 +160,7 @@ public void ReadJson_EntryJson_ArrayField_CapturedInFields()
var tags = result.Fields["tags"] as JArray;
Assert.NotNull(tags);
Assert.Equal(3, tags.Count);
Assert.Contains("dotnet", tags.ToObject<List<string>>());
Assert.Contains("sample", tags.ToObject<List<string>>());
}

[Fact]
Expand All @@ -181,14 +181,14 @@ public void ReadJson_AssetJson_PopulatesFileName_ViaIEmbeddedAsset()
var result = DeserializeSingle(ReadJson("embeddedAsset.json"));
var asAsset = result as IEmbeddedAsset;
Assert.NotNull(asAsset);
Assert.Equal("team-photo-2026.jpg", asAsset.FileName);
Assert.Equal("dummy-image.jpg", asAsset.FileName);
}

[Fact]
public void ReadJson_AssetJson_PopulatesUrl()
{
var result = DeserializeSingle(ReadJson("embeddedAsset.json"));
Assert.Contains("team-photo-2026.jpg", result.Url);
Assert.Contains("dummy-image.jpg", result.Url);
}

[Fact]
Expand All @@ -205,16 +205,16 @@ public void ReadJson_AssetJson_DimensionObject_CapturedInFields()
Assert.True(result.Fields.ContainsKey("dimension"));
var dimension = result.Fields["dimension"] as JObject;
Assert.NotNull(dimension);
Assert.Equal(1080, dimension["height"]?.Value<int>());
Assert.Equal(1920, dimension["width"]?.Value<int>());
Assert.Equal(100, dimension["height"]?.Value<int>());
Assert.Equal(100, dimension["width"]?.Value<int>());
}

[Fact]
public void ReadJson_AssetJson_FileSize_CapturedInFields()
{
var result = DeserializeSingle(ReadJson("embeddedAsset.json"));
Assert.True(result.Fields.ContainsKey("file_size"));
Assert.Equal("284521", result.Fields["file_size"].ToString());
Assert.Equal("10000", result.Fields["file_size"].ToString());
}

// ── Integration — List<IEmbeddedObject> (embeddedItems.json) ─────────
Expand Down Expand Up @@ -243,9 +243,9 @@ public void Deserialize_ListItem_Entry_HasCorrectKnownFields()
var result = JsonConvert.DeserializeObject<List<IEmbeddedObject>>(
ReadJson("embeddedItems.json"), SettingsWithConverter());
var entry = result[0] as EmbeddedObject;
Assert.Equal("blt05dca76dadb9455e", entry.Uid);
Assert.Equal("sample_author_uid", entry.Uid);
Assert.Equal("author", entry.ContentTypeUid);
Assert.Equal("John Smith", entry.Title);
Assert.Equal("Dummy User", entry.Title);
}

[Fact]
Expand All @@ -254,8 +254,8 @@ public void Deserialize_ListItem_Entry_HasCustomFields()
var result = JsonConvert.DeserializeObject<List<IEmbeddedObject>>(
ReadJson("embeddedItems.json"), SettingsWithConverter());
var entry = result[0] as EmbeddedObject;
Assert.Equal("john.smith@example.com", entry.Fields["email"].ToString());
Assert.Equal("https://cdn.example.com/authors/john-smith.jpg",
Assert.Equal("dummy.user@example.com", entry.Fields["email"].ToString());
Assert.Equal("https://example.com/dummy-avatar.jpg",
entry.Fields["avatar_url"].ToString());
}

Expand All @@ -265,9 +265,9 @@ public void Deserialize_ListItem_FirstAsset_HasCorrectFields()
var result = JsonConvert.DeserializeObject<List<IEmbeddedObject>>(
ReadJson("embeddedItems.json"), SettingsWithConverter());
var asset = result[1] as EmbeddedObject;
Assert.Equal("blt61fc86ad844f4793", asset.Uid);
Assert.Equal("sample_asset_uid", asset.Uid);
Assert.Equal("sys_assets", asset.ContentTypeUid);
Assert.Equal("team-photo-2026.jpg", asset.FileName);
Assert.Equal("dummy-image.jpg", asset.FileName);
}

[Fact]
Expand All @@ -276,8 +276,8 @@ public void Deserialize_ListItem_SecondAsset_HasCorrectFields()
var result = JsonConvert.DeserializeObject<List<IEmbeddedObject>>(
ReadJson("embeddedItems.json"), SettingsWithConverter());
var asset = result[2] as EmbeddedObject;
Assert.Equal("bltd80ed7f6d9d742ca", asset.Uid);
Assert.Equal("screenshot-2026-06-04.png", asset.FileName);
Assert.Equal("sample_asset_uid_2", asset.Uid);
Assert.Equal("dummy-image.png", asset.FileName);
}

// ── Full entry deserialization (rteEntryWithEmbeddedItems.json) ───────
Expand Down Expand Up @@ -305,8 +305,8 @@ public void FullEntry_EmbeddedItems_FirstItem_IsAuthorEntry()

var author = result[0] as EmbeddedObject;
Assert.Equal("author", author.ContentTypeUid);
Assert.Equal("John Smith", author.Title);
Assert.Equal("john.smith@example.com", author.Fields["email"].ToString());
Assert.Equal("Dummy User", author.Title);
Assert.Equal("dummy.user@example.com", author.Fields["email"].ToString());
}

[Fact]
Expand All @@ -332,8 +332,8 @@ public void FullEntry_EmbeddedItems_AssetDimension_CapturedInFields()
var asset = result[1] as EmbeddedObject;
var dimension = asset.Fields["dimension"] as JObject;
Assert.NotNull(dimension);
Assert.Equal(1080, dimension["height"]?.Value<int>());
Assert.Equal(1920, dimension["width"]?.Value<int>());
Assert.Equal(100, dimension["height"]?.Value<int>());
Assert.Equal(100, dimension["width"]?.Value<int>());
}

[Fact]
Expand All @@ -347,7 +347,7 @@ public void FullEntry_EmbeddedItems_AuthorSocialObject_CapturedInFields()
var author = result[0] as EmbeddedObject;
var social = author.Fields["social"] as JObject;
Assert.NotNull(social);
Assert.Equal("@johnsmith", social["twitter"]?.ToString());
Assert.Equal("@dummyuser", social["twitter"]?.ToString());
}

// ── EmbeddedObject default state ──────────────────────────────────────
Expand Down
22 changes: 11 additions & 11 deletions Contentstack.Utils.Tests/Resources/embeddedAsset.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
{
"uid": "blt61fc86ad844f4793",
"uid": "sample_asset_uid",
"_content_type_uid": "sys_assets",
"title": "Team Photo 2026",
"filename": "team-photo-2026.jpg",
"url": "https://cdn.contentstack.io/v3/assets/blt34775be4e6d8ab9c/blt61fc86ad844f4793/team-photo-2026.jpg",
"title": "Dummy Image Asset",
"filename": "dummy-image.jpg",
"url": "https://example.com/assets/dummy-image.jpg",
"content_type": "image/jpeg",
"file_size": "284521",
"file_size": "10000",
"locale": "en-us",
"is_dir": false,
"tags": ["team", "photo", "2026"],
"tags": ["test", "dummy"],
"dimension": {
"height": 1080,
"width": 1920
"height": 100,
"width": 100
},
"publish_details": {
"environment": "development",
"environment": "test",
"locale": "en-us",
"time": "2026-06-15T10:00:00.000Z",
"user": "bltuser123"
"time": "2021-01-01T00:00:00.000Z",
"user": "sample_user_uid"
}
}
28 changes: 14 additions & 14 deletions Contentstack.Utils.Tests/Resources/embeddedEntry.json
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
{
"uid": "blt05dca76dadb9455e",
"uid": "sample_author_uid",
"_content_type_uid": "author",
"title": "John Smith",
"title": "Dummy User",
"locale": "en-us",
"_version": 3,
"created_at": "2026-06-01T09:00:00.000Z",
"updated_at": "2026-06-20T14:32:00.000Z",
"bio": "Senior software engineer with 12 years of experience in distributed systems.",
"email": "john.smith@example.com",
"avatar_url": "https://cdn.example.com/authors/john-smith.jpg",
"_version": 1,
"created_at": "2021-01-01T00:00:00.000Z",
"updated_at": "2021-01-01T00:00:00.000Z",
"bio": "This is a dummy bio used for testing purposes.",
"email": "dummy.user@example.com",
"avatar_url": "https://example.com/dummy-avatar.jpg",
"social": {
"twitter": "@johnsmith",
"linkedin": "linkedin.com/in/johnsmith"
"twitter": "@dummyuser",
"linkedin": "linkedin.com/in/dummyuser"
},
"tags": ["engineering", "distributed-systems", "dotnet"],
"tags": ["test", "dummy", "sample"],
"publish_details": {
"environment": "development",
"environment": "test",
"locale": "en-us",
"time": "2026-06-20T14:32:00.000Z",
"user": "bltuser123"
"time": "2021-01-01T00:00:00.000Z",
"user": "sample_user_uid"
}
}
68 changes: 34 additions & 34 deletions Contentstack.Utils.Tests/Resources/embeddedItems.json
Original file line number Diff line number Diff line change
@@ -1,67 +1,67 @@
[
{
"uid": "blt05dca76dadb9455e",
"uid": "sample_author_uid",
"_content_type_uid": "author",
"title": "John Smith",
"title": "Dummy User",
"locale": "en-us",
"_version": 3,
"bio": "Senior software engineer with 12 years of experience in distributed systems.",
"email": "john.smith@example.com",
"avatar_url": "https://cdn.example.com/authors/john-smith.jpg",
"_version": 1,
"bio": "This is a dummy bio used for testing purposes.",
"email": "dummy.user@example.com",
"avatar_url": "https://example.com/dummy-avatar.jpg",
"social": {
"twitter": "@johnsmith",
"linkedin": "linkedin.com/in/johnsmith"
"twitter": "@dummyuser",
"linkedin": "linkedin.com/in/dummyuser"
},
"tags": ["engineering", "distributed-systems", "dotnet"],
"tags": ["test", "dummy", "sample"],
"publish_details": {
"environment": "development",
"environment": "test",
"locale": "en-us",
"time": "2026-06-20T14:32:00.000Z",
"user": "bltuser123"
"time": "2021-01-01T00:00:00.000Z",
"user": "sample_user_uid"
}
},
{
"uid": "blt61fc86ad844f4793",
"uid": "sample_asset_uid",
"_content_type_uid": "sys_assets",
"title": "Team Photo 2026",
"filename": "team-photo-2026.jpg",
"url": "https://cdn.contentstack.io/v3/assets/blt34775be4e6d8ab9c/blt61fc86ad844f4793/team-photo-2026.jpg",
"title": "Dummy Image Asset",
"filename": "dummy-image.jpg",
"url": "https://example.com/assets/dummy-image.jpg",
"content_type": "image/jpeg",
"file_size": "284521",
"file_size": "10000",
"locale": "en-us",
"is_dir": false,
"tags": ["team", "photo", "2026"],
"tags": ["test", "dummy"],
"dimension": {
"height": 1080,
"width": 1920
"height": 100,
"width": 100
},
"publish_details": {
"environment": "development",
"environment": "test",
"locale": "en-us",
"time": "2026-06-15T10:00:00.000Z",
"user": "bltuser123"
"time": "2021-01-01T00:00:00.000Z",
"user": "sample_user_uid"
}
},
{
"uid": "bltd80ed7f6d9d742ca",
"uid": "sample_asset_uid_2",
"_content_type_uid": "sys_assets",
"title": "Product Screenshot",
"filename": "screenshot-2026-06-04.png",
"url": "https://cdn.contentstack.io/v3/assets/blt34775be4e6d8ab9c/bltd80ed7f6d9d742ca/screenshot-2026-06-04.png",
"title": "Dummy PNG Asset",
"filename": "dummy-image.png",
"url": "https://example.com/assets/dummy-image.png",
"content_type": "image/png",
"file_size": "95340",
"file_size": "5000",
"locale": "en-us",
"is_dir": false,
"tags": ["screenshot", "product"],
"tags": ["test", "dummy"],
"dimension": {
"height": 900,
"width": 1440
"height": 100,
"width": 100
},
"publish_details": {
"environment": "development",
"environment": "test",
"locale": "en-us",
"time": "2026-06-10T08:00:00.000Z",
"user": "bltuser456"
"time": "2021-01-01T00:00:00.000Z",
"user": "sample_user_uid_2"
}
}
]
Loading
Loading