Skip to content

Commit

Permalink
fix: SearchPosts tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vlnevyhosteny committed Sep 6, 2023
1 parent 1254cd5 commit 933668a
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 10 deletions.
52 changes: 46 additions & 6 deletions ButterCMS.Tests/Mocks/PostsMocks.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Net;
using ButterCMS.Models;

namespace ButterCMS.Tests
Expand Down Expand Up @@ -30,7 +31,7 @@ public static class PostsMocks
}
};

public static string AppendParamsToListPostsUrl(int? page = null, int? pageSize = null, bool? excludeBody = null, string authorSlug = null, string categorySlug = null, string tagSlug = null)
public static string AppendParamsToListPostsUrl(int? page = null, int? pageSize = null, bool? excludeBody = null, string authorSlug = null, string categorySlug = null, string tagSlug = null, string query = null)
{
var url = $"https://api.buttercms.com/v2/posts/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}";

Expand Down Expand Up @@ -64,19 +65,58 @@ public static string AppendParamsToListPostsUrl(int? page = null, int? pageSize
url += $"&tag_slug={tagSlug}";
}

Console.WriteLine(url);
return url;
}

public static string AppendParamsToSearchPostsUrl(int? page = null, int? pageSize = null, string query = null)
{
var url = $"https://api.buttercms.com/v2/search/?auth_token={ButterCMSClientWithMockedHttp.MockedApiKey}";

if (!string.IsNullOrEmpty(query))
{
url += $"&query={WebUtility.UrlEncode(query)}";
}

if (page.HasValue && page.Value > 1)
{
url += $"&page={page.Value}";
}

if (pageSize.HasValue)
{
url += $"&page_size={pageSize.Value}";
}

return url;
}

public static void MockSuccessfullPostsResponse(this ButterCMSClientWithMockedHttp butterClient, int? page = null, int? pageSize = null, bool? excludeBody = null, string authorSlug = null, string categorySlug = null, string tagSlug = null)
public static void MockSuccessfullPostsResponse(this ButterCMSClientWithMockedHttp butterClient, int? page = null, int? pageSize = null, bool? excludeBody = null, string authorSlug = null, string categorySlug = null, string tagSlug = null, string query = null)
{
butterClient.MockSuccessfullJSONResponse(AppendParamsToListPostsUrl(page, pageSize, excludeBody, authorSlug, categorySlug, tagSlug, query), PostsResponse);
}

public static void MockSuccessfullEmptyPostsResponse(this ButterCMSClientWithMockedHttp butterClient, int? page = null, string authorSlug = null, int? pageSize = null, string query = null)
{
butterClient.MockSuccessfullJSONResponse(AppendParamsToListPostsUrl(page, authorSlug: authorSlug, pageSize: pageSize, query: query), new PostsResponse()
{
Data = new Post[] { },
Meta = new PostsMeta()
{
Count = 0,
NextPage = null,
PreviousPage = null,
}
});
}

public static void MockSuccessfullSearchPostsResponse(this ButterCMSClientWithMockedHttp butterClient, int? page = null, int? pageSize = null, string query = null)
{
butterClient.MockSuccessfullJSONResponse(AppendParamsToListPostsUrl(page, pageSize, excludeBody, authorSlug, categorySlug, tagSlug), PostsResponse);
butterClient.MockSuccessfullJSONResponse(AppendParamsToSearchPostsUrl(page, pageSize, query), PostsResponse);
}

public static void MockSuccessfullEmptyPostsResponse(this ButterCMSClientWithMockedHttp butterClient, int? page = null, string authorSlug = null)
public static void MockSuccessfullEmptySearchPostsResponse(this ButterCMSClientWithMockedHttp butterClient, int? page = null, int? pageSize = null, string query = null)
{
butterClient.MockSuccessfullJSONResponse(AppendParamsToListPostsUrl(page, authorSlug: authorSlug), new PostsResponse()
butterClient.MockSuccessfullJSONResponse(AppendParamsToSearchPostsUrl(page, pageSize: pageSize, query: query), new PostsResponse()
{
Data = new Post[] { },
Meta = new PostsMeta()
Expand Down
50 changes: 46 additions & 4 deletions ButterCMS.Tests/SearchPostsTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using NUnit.Framework;
using Newtonsoft.Json;
using NUnit.Framework;
using System;
using System.Linq;
using System.Threading.Tasks;

namespace ButterCMS.Tests
Expand All @@ -7,37 +10,76 @@ namespace ButterCMS.Tests
[Category("SearchPosts")]
public class SearchPostsTests
{
private ButterCMSClient butterClient;
[OneTimeSetUp]
private ButterCMSClientWithMockedHttp butterClient;

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

[Test]
public void SearchPosts_ShouldReturnPosts()
{
var query = "api";
var page = 1;
var pageSize = 2;

butterClient.MockSuccessfullSearchPostsResponse(page, pageSize, query: query);

var posts = butterClient.SearchPosts(query: "api", page:1, pageSize:2);
Assert.IsNotNull(posts);

CollectionAssert.IsNotEmpty(posts.Data);

var post = posts.Data.First();
Assert.AreEqual(PostsMocks.Post.Slug, post.Slug);
Assert.AreEqual(PostsMocks.Post.Title, post.Title);
}

[Test]
public async Task SearchPostsAsync_ShouldReturnPosts()
{
var query = "api";
var page = 1;
var pageSize = 2;

butterClient.MockSuccessfullSearchPostsResponse(page, pageSize, query: query);

var posts = await butterClient.SearchPostsAsync(query: "api", page: 1, pageSize: 2);
Assert.IsNotNull(posts);

CollectionAssert.IsNotEmpty(posts.Data);

var post = posts.Data.First();
Assert.AreEqual(PostsMocks.Post.Slug, post.Slug);
Assert.AreEqual(PostsMocks.Post.Title, post.Title);
}

[Test]
public void SearchPosts_ShouldReturnNull()
{
var query = "FAKE SEARCH QUERY";
var page = 1;
var pageSize = 2;

butterClient.MockSuccessfullEmptySearchPostsResponse(page, pageSize: pageSize, query: query);

var posts = butterClient.SearchPosts(query: "FAKE SEARCH QUERY", page: 1, pageSize: 2);

Console.WriteLine(JsonConvert.SerializeObject(posts));
Assert.IsNull(posts);
}

[Test]
public async Task SearchPostsAsync_ShouldReturnNull()
{
var query = "FAKE SEARCH QUERY";
var page = 1;
var pageSize = 2;

butterClient.MockSuccessfullEmptySearchPostsResponse(page, pageSize: pageSize, query: query);

var posts = await butterClient.SearchPostsAsync(query: "FAKE SEARCH QUERY", page: 1, pageSize: 2);
Assert.IsNull(posts);
}
Expand Down

0 comments on commit 933668a

Please sign in to comment.