Skip to content

Commit

Permalink
fix: RetrieveContentFields tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vlnevyhosteny committed Sep 6, 2023
1 parent 6f46587 commit 5aa18ea
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 25 deletions.
42 changes: 42 additions & 0 deletions ButterCMS.Tests/Mocks/ContentFieldsMocks.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using Newtonsoft.Json;
using ButterCMS.Models;
using ButterCMS.Tests.Models;

namespace ButterCMS.Tests
{
public static class ContentFieldsMocks
{
public static ContentResponse<TeamMembersHeadline> ContentFieldsResponse = new ContentResponse<TeamMembersHeadline>()
{
Data = new TeamMembersHeadline()
{
homepage_headline = "ButterCMS C# SDK",
team_members = new[]
{
new Team_Members()
{
name = "Elon",
bio = "CEO"
},
new Team_Members()
{
name = "Steve",
bio = "CTO"
}
}
}
};

public const string ContentFieldsJSON = "{\"data\":{\"team_members\":[{\"bio\":\"CEO\",\"name\":\"Elon\"},{\"bio\":\"CTO\",\"name\":\"Steve\"}],\"homepage_headline\":\"ButterCMS C# SDK\",}}";

public static void MockSuccessfullContentFieldsJSONResponse(this ButterCMSClientWithMockedHttp butterClient, string[] keys, TeamMembersHeadline response)
{
butterClient.MockSuccessfullJSONResponse($"https://api.buttercms.com/v2/content/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}&keys={string.Join(",", keys)}", response);
}

public static void MockSuccessfullContentFieldsResponse(this ButterCMSClientWithMockedHttp butterClient, string[] keys, ContentResponse<TeamMembersHeadline> response)
{
butterClient.MockSuccessfullJSONResponse($"https://api.buttercms.com/v2/content/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}&keys={string.Join(",", keys)}", response);
}
}
}
87 changes: 62 additions & 25 deletions ButterCMS.Tests/RetrieveContentFieldsTests.cs
Original file line number Diff line number Diff line change
@@ -1,65 +1,100 @@
using ButterCMS.Tests.Models;
using Newtonsoft.Json;
using NUnit.Framework;
using System.Threading.Tasks;
using ButterCMS.Models;
using System;

namespace ButterCMS.Tests
{
[TestFixture]
[Category("RetrieveContentFields")]
public class RetrieveContentFieldsTests
{
private ButterCMSClientWithMockedHttp butterClient;

[SetUp]
public void SetUp()
{
butterClient = Common.SetUpMockedButterClient();
}

[Test]
public void RetrieveContentFieldsJSON_ShouldReturnDictionaryString()
public void RetrieveContentFieldsJSON_ShouldReturnTeamMembersHeadline()
{
var butterClient = new ButterCMSClient("321478403e868f0fc41f0115731f330ff720ce0b");
var keys = new string[2] {"team_members[name=Elon]", "homepage_headline"};
var contentFields = butterClient.RetrieveContentFieldsJSON(keys);
Assert.IsNotNull(contentFields);
var keys = new string[] { "team_members[name=Elon]", "homepage_headline" };

butterClient.MockSuccessfullContentFieldsJSONResponse(keys, ContentFieldsMocks.ContentFieldsResponse.Data);

var teamMembersAndHeadline = butterClient.RetrieveContentFieldsJSON(keys);
AssertContentFieldJSON(teamMembersAndHeadline, ContentFieldsMocks.ContentFieldsResponse.Data);
}

[Test]
public void RetrieveContentFieldsJSON_ShouldReturnEmptyString()
public void RetrieveContentFieldsJSON_ShouldReturnEmptyString()
{
var butterClient = new ButterCMSClient("321478403e868f0fc41f0115731f330ff720ce0b");
var keys = new string[1] { "NOTAREALKEY" };
var actual = butterClient.RetrieveContentFieldsJSON(keys);
var expected = string.Empty;
Assert.AreEqual(expected, actual);
var keys = new string[] { "NOTAREALKEY" };

butterClient.MockSuccessfullContentFieldsJSONResponse(keys, null);

var teamMembersAndHeadline = butterClient.RetrieveContentFieldsJSON(keys);
AssertContentFieldJSON(teamMembersAndHeadline, null);
}

[Test]
public async Task RetrieveContentFieldsJSONAsync_ShouldReturnDictionaryString()
public async Task RetrieveContentFieldsJSONAsync_ShouldReturnTeamMembersHeadline()
{
var butterClient = new ButterCMSClient("321478403e868f0fc41f0115731f330ff720ce0b");
var keys = new string[2] { "team_members[name=Elon]", "homepage_headline" };
var contentFields = await butterClient.RetrieveContentFieldsJSONAsync(keys);
Assert.IsNotNull(contentFields);
var keys = new string[] { "team_members[name=Elon]", "homepage_headline" };

butterClient.MockSuccessfullContentFieldsJSONResponse(keys, ContentFieldsMocks.ContentFieldsResponse.Data);

var teamMembersAndHeadline = await butterClient.RetrieveContentFieldsJSONAsync(keys);
AssertContentFieldJSON(teamMembersAndHeadline, ContentFieldsMocks.ContentFieldsResponse.Data);
}

[Test]
public async Task RetrieveContentFieldsJSONAsync_ShouldReturnEmptyString()
public async Task RetrieveContentFieldsJSONAsync_ShouldReturnEmptyString()
{
var keys = new string[] { "NOTAREALKEY" };

butterClient.MockSuccessfullContentFieldsJSONResponse(keys, null);

var teamMembersAndHeadline = await butterClient.RetrieveContentFieldsJSONAsync(keys);
AssertContentFieldJSON(teamMembersAndHeadline, null);
}

private void AssertContentFieldJSON(string json, TeamMembersHeadline expected)
{
var butterClient = new ButterCMSClient("321478403e868f0fc41f0115731f330ff720ce0b");
var keys = new string[1] { "NOTAREALKEY" };
var actual = await butterClient.RetrieveContentFieldsJSONAsync(keys);
var expected = string.Empty;
Assert.AreEqual(expected, actual);
var teamMembersAndHeadline = JsonConvert.DeserializeObject<TeamMembersHeadline>(json);

if (expected == null)
{
Assert.IsNull(teamMembersAndHeadline);
return;
}

Assert.AreEqual(expected.homepage_headline, teamMembersAndHeadline.homepage_headline);
Assert.AreEqual(expected.team_members[0].bio, teamMembersAndHeadline.team_members[0].bio);
}

[Test]
public void RetrieveContentFields_ShouldReturnTeamMembersHeadline()
{
var butterClient = new ButterCMSClient("321478403e868f0fc41f0115731f330ff720ce0b");
var keys = new string[2] { "team_members[name=Elon]", "homepage_headline" };

butterClient.MockSuccessfullContentFieldsResponse(keys, ContentFieldsMocks.ContentFieldsResponse);

var teamMembersAndHeadline = butterClient.RetrieveContentFields<TeamMembersHeadline>(keys);
Assert.IsNotNull(teamMembersAndHeadline);
}

[Test]
public async Task RetrieveContentFieldsAsync_ShouldReturnTeamMembersHeadline()
{
var butterClient = new ButterCMSClient("321478403e868f0fc41f0115731f330ff720ce0b");
var keys = new string[2] { "team_members[name=Elon]", "homepage_headline" };

butterClient.MockSuccessfullContentFieldsResponse(keys, ContentFieldsMocks.ContentFieldsResponse);

var teamMembersAndHeadline = await butterClient.RetrieveContentFieldsAsync<TeamMembersHeadline>(keys);
Assert.IsNotNull(teamMembersAndHeadline);
}
Expand All @@ -68,8 +103,10 @@ public async Task RetrieveContentFieldsAsync_ShouldReturnTeamMembersHeadline()

public void RetrieveContentFields_ShouldThrowContentFieldObjectMismatchException()
{
var butterClient = new ButterCMSClient("321478403e868f0fc41f0115731f330ff720ce0b");
var keys = new string[2] { "team_members[name=Elon]", "homepage_headline" };

butterClient.MockSuccessfullContentFieldsResponse(keys, ContentFieldsMocks.ContentFieldsResponse);

Assert.Throws<ContentFieldObjectMismatchException>(() => butterClient.RetrieveContentFields<string>(keys));
}
}
Expand Down

0 comments on commit 5aa18ea

Please sign in to comment.