Skip to content

Commit 370770a

Browse files
committed
Refactor tests in MaybeExtensions to improve clarity and add async handling for TapIfSome and TapIfNone methods
1 parent ad309f6 commit 370770a

4 files changed

Lines changed: 86 additions & 15 deletions

File tree

ToolBox.Test.Units/Options/MaybeExtensionsBindTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using FluentAssertions;
22
using ZeidLab.ToolBox.Options;
3-
using Xunit;
43

54
namespace ZeidLab.ToolBox.Test.Units.Options;
65

ToolBox.Test.Units/Options/MaybeExtensionsTapTests.cs

Lines changed: 85 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace ZeidLab.ToolBox.Test.Units.Options;
77

88
public sealed class MaybeExtensionsTapTests
99
{
10-
#region TapIfSome
10+
#region TapIfSome<TIn>(this Maybe<TIn> self, Action<TIn> action)
1111

1212
[Fact]
1313
public void TapIfSome_Some_ActionIsExecuted()
@@ -39,10 +39,51 @@ public void TapIfSome_None_ActionIsNotExecuted()
3939
result.Should().Be(maybe);
4040
}
4141

42+
#endregion
43+
44+
#region TapIfSomeAsync<TIn>(this Maybe<TIn> self, Func<TIn,Task> action)
45+
46+
[Fact]
47+
public async Task TapIfSomeAsync_InstanceSome_ActionIsExecuted()
48+
{
49+
// Arrange
50+
var maybe = Maybe.Some(10);
51+
var actionExecuted = false;
52+
53+
// Act
54+
var result = await maybe.TapIfSomeAsync(async value =>
55+
{
56+
await Task.Delay(1);
57+
actionExecuted = true;
58+
});
59+
60+
// Assert
61+
actionExecuted.Should().BeTrue();
62+
result.Should().Be(maybe);
63+
}
64+
65+
[Fact]
66+
public async Task TapIfSomeAsync_InstanceNone_ActionIsNotExecuted()
67+
{
68+
// Arrange
69+
var maybe = Maybe.None<int>();
70+
var actionExecuted = false;
71+
72+
// Act
73+
var result = await maybe.TapIfSomeAsync(async value =>
74+
{
75+
await Task.Delay(1);
76+
actionExecuted = true;
77+
});
78+
79+
// Assert
80+
actionExecuted.Should().BeFalse();
81+
result.Should().Be(maybe);
82+
}
4283

4384
#endregion
4485

45-
#region TapIfNone
86+
#region TapIfNone<TIn>(this Maybe<TIn> self, Action action)
4687

4788
[Fact]
4889
public void TapIfNone_None_ActionIsExecuted()
@@ -74,11 +115,51 @@ public void TapIfNone_Some_ActionIsNotExecuted()
74115
result.Should().Be(maybe);
75116
}
76117

118+
#endregion
119+
120+
#region TapIfNoneAsync<TIn>(this Maybe<TIn> self, Func<Task> action)
121+
122+
[Fact]
123+
public async Task TapIfNoneAsync_InstanceNone_ActionIsExecuted()
124+
{
125+
// Arrange
126+
var maybe = Maybe.None<int>();
127+
var actionExecuted = false;
128+
129+
// Act
130+
var result = await maybe.TapIfNoneAsync(async () =>
131+
{
132+
await Task.Delay(1);
133+
actionExecuted = true;
134+
});
135+
136+
// Assert
137+
actionExecuted.Should().BeTrue();
138+
result.Should().Be(maybe);
139+
}
140+
141+
[Fact]
142+
public async Task TapIfNoneAsync_InstanceSome_ActionIsNotExecuted()
143+
{
144+
// Arrange
145+
var maybe = Maybe.Some(10);
146+
var actionExecuted = false;
147+
148+
// Act
149+
var result = await maybe.TapIfNoneAsync(async () =>
150+
{
151+
await Task.Delay(1);
152+
actionExecuted = true;
153+
});
77154

155+
// Assert
156+
actionExecuted.Should().BeFalse();
157+
result.Should().Be(maybe);
158+
}
78159

79160
#endregion
80161

81-
#region TapIfSomeAsync
162+
#region TapIfSomeAsync<TIn>(this Task<Maybe<TIn>> self, Func<TIn, Task> action)
82163

83164
[Fact]
84165
public async Task TapIfSomeAsync_Some_ActionIsExecuted()
@@ -110,10 +191,9 @@ public async Task TapIfSomeAsync_None_ActionIsNotExecuted()
110191
result.Should().Be(await maybeTask);
111192
}
112193

113-
114194
#endregion
115195

116-
#region TapIfNoneAsync
196+
#region TapIfNoneAsync<TIn>(this Task<Maybe<TIn>> self, Func<Task> action)
117197

118198
[Fact]
119199
public async Task TapIfNoneAsync_None_ActionIsExecuted()
@@ -145,7 +225,5 @@ public async Task TapIfNoneAsync_Some_ActionIsNotExecuted()
145225
result.Should().Be(await maybeTask);
146226
}
147227

148-
149228
#endregion
150-
151229
}

ToolBox.Test.Units/Options/MaybeExtensionsTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System.Diagnostics.CodeAnalysis;
22
using FluentAssertions;
3-
using NSubstitute;
43
using ZeidLab.ToolBox.Options;
5-
using ZeidLab.ToolBox.Results;
64

75
namespace ZeidLab.ToolBox.Test.Units.Options;
86

ToolBox.Test.Units/Results/ResultExtensionsEnsureTests.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
using System;
2-
using System.Threading.Tasks;
3-
using FluentAssertions;
4-
using Xunit;
1+
using FluentAssertions;
52
using ZeidLab.ToolBox.Results;
6-
using ZeidLab.ToolBox.Test.Units.Common;
73

84
namespace ZeidLab.ToolBox.Test.Units.Results;
95

0 commit comments

Comments
 (0)