Skip to content

Commit

Permalink
fix: ListCategories tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vlnevyhosteny committed Sep 6, 2023
1 parent e5d8ff3 commit 182181a
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 2 deletions.
30 changes: 28 additions & 2 deletions ButterCMS.Tests/ListCategoriesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,44 +9,70 @@ namespace ButterCMS.Tests
[Category("ListCategories")]
public class ListCategoriesTests
{
private ButterCMSClient butterClient;
private ButterCMSClientWithMockedHttp butterClient;

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

[Test]
public void ListCategories_ShouldReturnListOfCategoriesWithoutPosts()
{
butterClient.MockSuccessfullCategoriesResponse();

var response = butterClient.ListCategories();
Assert.IsNotNull(response);

var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
Assert.IsNull(response.FirstOrDefault().RecentPosts);
}

[Test]
public async Task ListCategoriesAsync_ShouldReturnListOfCategoriesWithoutPosts()
{
butterClient.MockSuccessfullCategoriesResponse();

var response = await butterClient.ListCategoriesAsync();
Assert.IsNotNull(response);

var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.Category.Name, category.Name);
Assert.AreEqual(CategoriesMocks.Category.Slug, category.Slug);
Assert.IsNull(response.FirstOrDefault().RecentPosts);
}

[Test]
public void ListCategories_ShouldReturnListOfCategoriesWithPosts()
{
butterClient.MockSuccessfullCategoriesResponseWithPosts();

var response = butterClient.ListCategories(true);
Assert.IsNotNull(response);

var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Name, category.Name);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Slug, category.Slug);
Assert.IsNotEmpty(response.FirstOrDefault().RecentPosts);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.RecentPosts.FirstOrDefault().Slug, category.RecentPosts.FirstOrDefault().Slug);
}

[Test]
public async Task ListCategoriesAsync_ShouldReturnListOfCategoriesWithPosts()
{
butterClient.MockSuccessfullCategoriesResponseWithPosts();

var response = await butterClient.ListCategoriesAsync(true);
Assert.IsNotNull(response);

var category = response.FirstOrDefault();
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Name, category.Name);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.Slug, category.Slug);
Assert.IsNotEmpty(response.FirstOrDefault().RecentPosts);
Assert.AreEqual(CategoriesMocks.CategoryWithPosts.RecentPosts.FirstOrDefault().Slug, category.RecentPosts.FirstOrDefault().Slug);
}
}
}
40 changes: 40 additions & 0 deletions ButterCMS.Tests/Mocks/CategoriesMocks.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using ButterCMS.Models;

namespace ButterCMS.Tests
{
public static class CategoriesMocks
{
public static Category Category = new Category()
{
Name = "Category",
Slug = "category",
};

public static Category CategoryWithPosts = new Category()
{
Name = "Category",
Slug = "category",
RecentPosts = new[] { new Post() { Slug = "post-1" }, new Post() { Slug = "post-2" } }
};

public static CategoriesResponse CategoriesResponse = new CategoriesResponse()
{
Data = new[] { Category },
};

public static CategoriesResponse CategoriesResponseWithPosts = new CategoriesResponse()
{
Data = new[] { CategoryWithPosts },
};

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

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

0 comments on commit 182181a

Please sign in to comment.