Skip to content

Commit d01f955

Browse files
Implement the OneWay and Two way test abstractions
1 parent 93de42d commit d01f955

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using AutoMapper;
2+
using FluentAssertions;
3+
4+
namespace Ace.CSharp.StructuredAutoMapper.Abstractions.Test;
5+
6+
public abstract class BaseOneWayProfileTests<TProfile, TLeft, TRight>
7+
where TProfile : class, IOneWayProfile<TLeft, TRight>
8+
where TLeft : class
9+
where TRight : class
10+
{
11+
private readonly IMapper mapper;
12+
13+
protected BaseOneWayProfileTests()
14+
{
15+
var configuration = new MapperConfiguration(
16+
config => config.AddProfile(typeof(TProfile)));
17+
18+
mapper = configuration.CreateMapper();
19+
}
20+
21+
protected abstract Func<TLeft> Left { get; }
22+
23+
protected abstract Action<TLeft, TRight>? LeftToRightAssertions { get; }
24+
25+
public virtual void GivenMapFromLeftToRightWhenSourceIsNullThenHandlesGracefully()
26+
{
27+
// Arrange
28+
var left = (TLeft?)null;
29+
30+
// Act
31+
var right = mapper.Map<TRight>(left);
32+
33+
// Assert
34+
right.Should().BeNull();
35+
}
36+
37+
public virtual void GivenMapFromLeftToRightWhenSourceIsNotNullThenMapsData()
38+
{
39+
// Arrange
40+
var left = Left.Invoke();
41+
42+
// Act
43+
var right = mapper.Map<TRight>(left);
44+
45+
// Assert
46+
left.Should().NotBeNull();
47+
right.Should().NotBeNull().And.BeOfType<TRight>();
48+
LeftToRightAssertions?.Invoke(left, right);
49+
}
50+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
using AutoMapper;
2+
using FluentAssertions;
3+
4+
namespace Ace.CSharp.StructuredAutoMapper.Abstractions.Test;
5+
6+
public abstract class BaseTwoWayProfileTests<TProfile, TLeft, TRight>
7+
where TProfile : class, ITwoWayProfile<TLeft, TRight>
8+
where TLeft : class
9+
where TRight : class
10+
{
11+
private readonly IMapper mapper;
12+
13+
protected BaseTwoWayProfileTests()
14+
{
15+
var configuration = new MapperConfiguration(
16+
config => config.AddProfile(typeof(TProfile)));
17+
18+
mapper = configuration.CreateMapper();
19+
}
20+
21+
protected abstract Func<TLeft> Left { get; }
22+
protected abstract Func<TRight> Right { get; }
23+
24+
protected abstract Action<TLeft, TRight>? LeftToRightAssertions { get; }
25+
protected abstract Action<TRight, TLeft>? RightToLeftAssertions { get; }
26+
27+
public virtual void GivenMapFromLeftToRightWhenSourceIsNullThenHandlesGracefully()
28+
{
29+
// Arrange
30+
var left = (TLeft?)null;
31+
32+
// Act
33+
var right = mapper.Map<TRight>(left);
34+
35+
// Assert
36+
right.Should().BeNull();
37+
}
38+
39+
public virtual void GivenMapFromLeftToRightWhenSourceIsNotNullThenMapsData()
40+
{
41+
// Arrange
42+
var left = Left.Invoke();
43+
44+
// Act
45+
var right = mapper.Map<TRight>(left);
46+
47+
// Assert
48+
left.Should().NotBeNull();
49+
right.Should().NotBeNull().And.BeOfType<TRight>();
50+
LeftToRightAssertions?.Invoke(left, right);
51+
}
52+
53+
public virtual void GivenMapFromRightToLeftWhenSourceIsNullThenHandlesGracefully()
54+
{
55+
// Arrange
56+
var right = (TRight?)null;
57+
58+
// Act
59+
var left = mapper.Map<TLeft>(right);
60+
61+
// Assert
62+
left.Should().BeNull();
63+
}
64+
65+
public virtual void GivenMapFromRightToLeftWhenSourceIsNotNullThenMapsData()
66+
{
67+
// Arrange
68+
var right = Right.Invoke();
69+
70+
// Act
71+
var left = mapper.Map<TLeft>(right);
72+
73+
// Assert
74+
right.Should().NotBeNull();
75+
left.Should().NotBeNull().And.BeOfType<TLeft>();
76+
RightToLeftAssertions?.Invoke(right, left);
77+
}
78+
}

0 commit comments

Comments
 (0)