Skip to content

Commit

Permalink
fix: RetrieveCategory tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vlnevyhosteny committed Sep 6, 2023
1 parent 1d566ab commit b9b4eea
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 21 deletions.
8 changes: 4 additions & 4 deletions ButterCMS.Tests/ListCategoriesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public void ListCategories_ShouldReturnListOfCategoriesWithoutPosts()
var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
Assert.IsNull(response.FirstOrDefault().RecentPosts);
Assert.IsNull(category.RecentPosts);
}

[Test]
Expand All @@ -42,7 +42,7 @@ public async Task ListCategoriesAsync_ShouldReturnListOfCategoriesWithoutPosts()
var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
Assert.IsNull(response.FirstOrDefault().RecentPosts);
Assert.IsNull(category.RecentPosts);
}

[Test]
Expand All @@ -56,7 +56,7 @@ public void ListCategories_ShouldReturnListOfCategoriesWithPosts()
var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Name, category.Name);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Slug, category.Slug);
Assert.IsNotEmpty(response.FirstOrDefault().RecentPosts);
Assert.IsNotEmpty(category.RecentPosts);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.RecentPosts.FirstOrDefault().Slug, category.RecentPosts.FirstOrDefault().Slug);
}

Expand All @@ -71,7 +71,7 @@ public async Task ListCategoriesAsync_ShouldReturnListOfCategoriesWithPosts()
var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Name, category.Name);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Slug, category.Slug);
Assert.IsNotEmpty(response.FirstOrDefault().RecentPosts);
Assert.IsNotEmpty(category.RecentPosts);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.RecentPosts.FirstOrDefault().Slug, category.RecentPosts.FirstOrDefault().Slug);
}
}
Expand Down
25 changes: 25 additions & 0 deletions ButterCMS.Tests/Mocks/CategoriesMocks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,16 @@ public static class CategoriesMocks
Data = new[] { CategoryWithPosts },
};

public static CategoryResponse CategoryResponse = new CategoryResponse()
{
Data = Category,
};

public static CategoryResponse CategoryResponseWithPosts = new CategoryResponse()
{
Data = CategoryWithPosts,
};

public static void MockSuccessfullCategoriesResponse(this ButterCMSClientWithMockedHttp butterClient)
{
butterClient.MockSuccessfullJSONResponse($"https://api.buttercms.com/v2/categories/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}", CategoriesResponse);
Expand All @@ -36,5 +46,20 @@ public static void MockSuccessfullCategoriesResponseWithPosts(this ButterCMSClie
{
butterClient.MockSuccessfullJSONResponse($"https://api.buttercms.com/v2/categories/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}&include=recent_posts", CategoriesResponseWithPosts);
}

public static void MockSuccessfullCategoryResponse(this ButterCMSClientWithMockedHttp butterClient, string slug)
{
butterClient.MockSuccessfullJSONResponse($"https://api.buttercms.com/v2/categories/{slug}/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}", CategoryResponse);
}

public static void MockSuccessfullCategoryResponseWithPosts(this ButterCMSClientWithMockedHttp butterClient, string slug)
{
butterClient.MockSuccessfullJSONResponse($"https://api.buttercms.com/v2/categories/{slug}/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}&include=recent_posts", CategoryResponseWithPosts);
}

public static void MockSuccessfullNullCategoryResponse(this ButterCMSClientWithMockedHttp butterClient, string slug)
{
butterClient.MockSuccessfullJSONResponse($"https://api.buttercms.com/v2/categories/{slug}/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}", new CategoryResponse());
}
}
}
63 changes: 46 additions & 17 deletions ButterCMS.Tests/RetrieveCategoryTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using NUnit.Framework;
using System.Linq;
using System.Threading.Tasks;

namespace ButterCMS.Tests
Expand All @@ -7,57 +8,85 @@ namespace ButterCMS.Tests
[Category("RetrieveCategory")]
public class RetrieveCategoryTests
{
private ButterCMSClient butterClient;
private ButterCMSClientWithMockedHttp butterClient;

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

[Test]
public void RetrieveCategory_ShouldReturnCategoryWithoutPosts()
{
var response = butterClient.RetrieveCategory("test-category");
Assert.IsNotNull(response);
Assert.IsNull(response.RecentPosts);
butterClient.MockSuccessfullCategoryResponse(CategoriesMocks.Category.Slug);

var category = butterClient.RetrieveCategory(CategoriesMocks.Category.Slug);
Assert.IsNotNull(category);

Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
Assert.IsNull(category.RecentPosts);
}

[Test]
public async Task RetrieveCategoryAsync_ShouldReturnCategoryWithoutPosts()
{
var response = await butterClient.RetrieveCategoryAsync("test-category");
Assert.IsNotNull(response);
Assert.IsNull(response.RecentPosts);
butterClient.MockSuccessfullCategoryResponse(CategoriesMocks.Category.Slug);

var category = await butterClient.RetrieveCategoryAsync(CategoriesMocks.Category.Slug);
Assert.IsNotNull(category);

Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
Assert.IsNull(category.RecentPosts);
}

[Test]
public void RetrieveCategory_ShouldReturnCategoryWithPosts()
{
var response = butterClient.RetrieveCategory("test-category", true);
Assert.IsNotNull(response);
Assert.IsNotEmpty(response.RecentPosts);
butterClient.MockSuccessfullCategoryResponseWithPosts(CategoriesMocks.CategoryWithPosts.Slug);

var category = butterClient.RetrieveCategory(CategoriesMocks.Category.Slug, true);
Assert.IsNotNull(category);

Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
CollectionAssert.IsNotEmpty(category.RecentPosts);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.RecentPosts.First().Slug, category.RecentPosts.First().Slug);
}

[Test]
public async Task RetrieveCategoryAsync_ShouldReturnCategoryWithPosts()
{
var response = await butterClient.RetrieveCategoryAsync("test-category", true);
Assert.IsNotNull(response);
Assert.IsNotEmpty(response.RecentPosts);
butterClient.MockSuccessfullCategoryResponseWithPosts(CategoriesMocks.CategoryWithPosts.Slug);

var category = await butterClient.RetrieveCategoryAsync(CategoriesMocks.Category.Slug, true);
Assert.IsNotNull(category);

Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
CollectionAssert.IsNotEmpty(category.RecentPosts);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.RecentPosts.First().Slug, category.RecentPosts.First().Slug);
}

[Test]
public void RetrieveCategory_ShouldReturnNull()
{
var response = butterClient.RetrieveCategory(categorySlug: "not-a-real-category");
var slug = "not-a-real-category";
butterClient.MockSuccessfullNullCategoryResponse(slug);

var response = butterClient.RetrieveCategory(categorySlug: slug);
Assert.IsNull(response);
}

[Test]
public async Task RetrieveCategoryAsync_ShouldReturnNull()
{
var response = await butterClient.RetrieveCategoryAsync(categorySlug: "not-a-real-category");
var slug = "not-a-real-category";
butterClient.MockSuccessfullNullCategoryResponse(slug);

var response = await butterClient.RetrieveCategoryAsync(categorySlug: slug);
Assert.IsNull(response);
}
}
Expand Down

0 comments on commit b9b4eea

Please sign in to comment.