Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="aweXpect" Version="2.25.0" />
<PackageVersion Include="aweXpect.Core" Version="2.22.2" />
<PackageVersion Include="aweXpect.Core" Version="2.23.0" />
<PackageVersion Include="aweXpect.Json" Version="1.4.0" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
<PackageVersion Include="System.Text.Json" Version="9.0.2" />
Expand Down
19 changes: 19 additions & 0 deletions Source/aweXpect.Web/ThatUri.HasScheme.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;
using aweXpect.Core;
using aweXpect.Helpers;
using aweXpect.Results;

namespace aweXpect;

#nullable enable
public static partial class ThatUri
{
/// <summary>
/// Verifies that the scheme of the <see cref="Uri" /> subject…
/// </summary>
/// <remarks>
/// <seealso cref="Uri.Scheme" />
/// </remarks>
public static PropertyResult.String<Uri> HasScheme(this IThat<Uri> source)
=> new(source, u => u.Scheme, "scheme");
}
148 changes: 148 additions & 0 deletions Tests/aweXpect.Web.Tests/ThatUri.HasScheme.Tests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
namespace aweXpect.Tests;

public sealed partial class ThatUri
{
public sealed class HasScheme
{
public sealed class Tests
{
[Fact]
public async Task Containing_WhenSubjectSchemeContainsTheExpectedValue_ShouldSucceed()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).HasScheme().Containing("http");

await That(Act).DoesNotThrow();
}

[Fact]
public async Task EqualTo_WhenSubjectDoesNotEqualTheExpectedScheme_ShouldFail()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).HasScheme().EqualTo("http");

await That(Act).Throws<XunitException>()
.WithMessage("""
Expected that subject
has scheme equal to "http",
but it had scheme "https"
""");
}

[Fact]
public async Task EqualTo_WhenSubjectEqualsExpectedScheme_ShouldSucceed()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).HasScheme().EqualTo("https");

await That(Act).DoesNotThrow();
}

[Fact]
public async Task NotEqualTo_WhenSubjectDoesNotEqualTheExpectedScheme_ShouldFail()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).HasScheme().NotEqualTo("https");

await That(Act).Throws<XunitException>()
.WithMessage("""
Expected that subject
has scheme not equal to "https",
but it had scheme "https"
""");
}

[Fact]
public async Task NotEqualTo_WhenSubjectEqualsExpectedScheme_ShouldSucceed()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).HasScheme().NotEqualTo("http");

await That(Act).DoesNotThrow();
}
}

public sealed class NegatedTests
{
[Fact]
public async Task Containing_WhenSubjectSchemeContainsTheExpectedValue_ShouldFail()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).DoesNotComplyWith(it => it.HasScheme().Containing("http"));

await That(Act).Throws<XunitException>()
.WithMessage("""
Expected that subject
has scheme not containing "http",
but it had scheme "https"
""");
}

[Fact]
public async Task EqualTo_WhenSubjectDoesNotEqualTheExpectedScheme_ShouldSucceed()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).DoesNotComplyWith(it => it.HasScheme().EqualTo("http"));

await That(Act).DoesNotThrow();
}

[Fact]
public async Task EqualTo_WhenSubjectEqualsExpectedScheme_ShouldFail()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).DoesNotComplyWith(it => it.HasScheme().EqualTo("https"));

await That(Act).Throws<XunitException>()
.WithMessage("""
Expected that subject
has scheme not equal to "https",
but it had scheme "https"
""");
}

[Fact]
public async Task NotEqualTo_WhenSubjectDoesNotEqualTheExpectedScheme_ShouldSucceed()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).DoesNotComplyWith(it => it.HasScheme().NotEqualTo("https"));

await That(Act).DoesNotThrow();
}

[Fact]
public async Task NotEqualTo_WhenSubjectEqualsExpectedScheme_ShouldFail()
{
Uri subject = new("https://www.awexpect.com:80");

async Task Act()
=> await That(subject).DoesNotComplyWith(it => it.HasScheme().NotEqualTo("http"));

await That(Act).Throws<XunitException>()
.WithMessage("""
Expected that subject
has scheme equal to "http",
but it had scheme "https"
""");
}
}
}
}
Loading