Thunder.FluentAssertions.Extensions Code
Brought to you by:
thundersizzle
| File | Date | Author | Commit |
|---|---|---|---|
| Thunder.FluentAssertions.Extensions | 2022-09-22 |
|
[27f69f] Initial commit - includes That and GenericShoul... |
| Thunder.FluentAssertions.Extensions.Tests | 2022-09-22 |
|
[27f69f] Initial commit - includes That and GenericShoul... |
| .hgignore | 2022-09-22 |
|
[27f69f] Initial commit - includes That and GenericShoul... |
| README.MD | 2022-09-22 |
|
[27f69f] Initial commit - includes That and GenericShoul... |
| Thunder.FluentAssertations.Extensions.sln | 2022-09-22 |
|
[27f69f] Initial commit - includes That and GenericShoul... |
# Thunder.FluentAssertions.Extensions
Extends FluentAssertion to have some more basic helpers.
Project Site: https://sourceforge.net/projects/thunder-webview-linux/
Source Code: https://sourceforge.net/projects/thunder-webview-linux/code
Nuget: https://www.nuget.org/packages/Thunder.FluentAssertions.Extensions/
## GenericShould
Added a `GenericShould` "overload" for `Should`. This allows the original value to be exposed via `Which` after usage. e.g.
```csharp
//base FluentAssertion library:
((Sut) sut.Should().NotBeNull().Subject).PropertyOnSut.Should().Be("value");
//with GenericShould instead of Should
sut.GenericShould().NotBeDefault()
.Which.PropertyOnSut.Should().Be("value")
```
This was named `GenericShould` so as to not interfere with non-generic, specific `Should` methods, e.g. Collections, Exceptions, etc. This discussion can be seen on this [Github issue](https://github.com/fluentassertions/fluentassertions/issues/198).
## That
Added a `That` extension method on AndWhichAssertions which allows daisy chaining calls on properties, in place of `and` or `which`:
```csharp
//base FluentAssertions - there's no way back to the SUT once you go into the Property, and requires restarting the chain
sut.Should().NotBeNull();
sut.Property1.Should().Be("value");
sut.Property2.Should().Be("value");
//with That extension method
//this can continue indefinitely, or continue with an And or Which.
sut.Should().BeAssignableTo<SUT>()
.That( x => x.Property1.Should().Be("value1"))
.That( x => x.Property2.Should().Be("value2"));
//when paired with GenericShould():
sut.GenericShould().NotBeDefault()
.That( x => x.Property1.Should().Be("value1"))
.That( x => x.Property2.Should().Be("value2"));
//this also permits nesting, as desired:
sut.Should().BeAssignableTo<SUT>()
.That( x =>
{
x.NestedModel.Should().BeAssignableTo<NestedSUT>()
.That( nested => nested.NestedProperty.Should().Be("value")
}));
```