Init
This commit is contained in:
75
Prefab.Tests/Unit/Web/Url/UrlPolicyShould.cs
Normal file
75
Prefab.Tests/Unit/Web/Url/UrlPolicyShould.cs
Normal file
@@ -0,0 +1,75 @@
|
||||
using Prefab.Tests;
|
||||
using Prefab.Web.UrlPolicy;
|
||||
using Shouldly;
|
||||
|
||||
namespace Prefab.Tests.Unit.Web.Url;
|
||||
|
||||
[Trait(TraitName.Category, TraitCategory.Unit)]
|
||||
public sealed class UrlPolicyShould
|
||||
{
|
||||
[Fact]
|
||||
public void BuildAndParseCategoryRoundTrip()
|
||||
{
|
||||
var url = UrlPolicy.Category(
|
||||
slug: "ceiling-supports",
|
||||
page: 2,
|
||||
pageSize: 48,
|
||||
sort: "price:desc",
|
||||
view: "list");
|
||||
|
||||
var uri = new Uri("https://prefab.test" + url);
|
||||
|
||||
UrlPolicy.TryParseCategory(uri, out var slug, out var page, out var pageSize, out var sort, out var view)
|
||||
.ShouldBeTrue();
|
||||
|
||||
slug.ShouldBe("ceiling-supports");
|
||||
page.ShouldBe(2);
|
||||
pageSize.ShouldBe(48);
|
||||
sort.ShouldBe("price:desc");
|
||||
view.ShouldBe("list");
|
||||
|
||||
UrlPolicy.Category(slug, page, pageSize, sort, view).ShouldBe(url);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseCategoryDefaultsWhenMissingOrInvalid()
|
||||
{
|
||||
var url = UrlPolicy.Category(
|
||||
slug: "boxes-and-covers",
|
||||
page: 0,
|
||||
pageSize: 500,
|
||||
sort: null,
|
||||
view: string.Empty);
|
||||
|
||||
UrlPolicy.TryParseCategory(new Uri(url, UriKind.Relative), out var slug, out var page, out var pageSize, out var sort, out var view)
|
||||
.ShouldBeTrue();
|
||||
|
||||
slug.ShouldBe("boxes-and-covers");
|
||||
page.ShouldBe(UrlPolicy.DefaultPage);
|
||||
pageSize.ShouldBe(UrlPolicy.DefaultPageSize);
|
||||
sort.ShouldBe(UrlPolicy.DefaultSort);
|
||||
view.ShouldBe(UrlPolicy.DefaultView);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildAndParseProductsRoundTrip()
|
||||
{
|
||||
var url = UrlPolicy.Products(
|
||||
page: 3,
|
||||
pageSize: 12,
|
||||
sort: "name:desc",
|
||||
view: "grid");
|
||||
|
||||
var uri = new Uri("https://prefab.test" + url);
|
||||
|
||||
UrlPolicy.TryParseProducts(uri, out var page, out var pageSize, out var sort, out var view)
|
||||
.ShouldBeTrue();
|
||||
|
||||
page.ShouldBe(3);
|
||||
pageSize.ShouldBe(12);
|
||||
sort.ShouldBe("name:desc");
|
||||
view.ShouldBe("grid");
|
||||
|
||||
UrlPolicy.Products(page, pageSize, sort, view).ShouldBe(url);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user