/
BookingControllerTest.cs
91 lines (80 loc) · 2.74 KB
/
BookingControllerTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xunit.Extensions;
using Xunit;
using System.Web.Mvc;
using Ploeh.AutoFixture.Xunit;
using Moq;
using Ploeh.Samples.Booking.WebModel;
using Ploeh.Samples.Booking.DomainModel;
using Ploeh.SemanticComparison.Fluent;
namespace Ploeh.Samples.Booking.WebModel.UnitTest
{
public class BookingControllerTest
{
[Theory, AutoWebData]
public void SutIsController(BookingController sut)
{
Assert.IsAssignableFrom<IController>(sut);
}
[Theory, AutoWebData]
public void GetReturnsCorrectModelType(BookingController sut,
DateViewModel id)
{
ViewResult actual = sut.Get(id);
Assert.IsAssignableFrom<BookingViewModel>(actual.Model);
}
[Theory, AutoWebData]
public void GetReturnModelWithCorrectDate(BookingController sut,
DateViewModel id)
{
var actual = sut.Get(id);
var expected = id.ToDateTime();
var model = Assert.IsAssignableFrom<BookingViewModel>(actual.Model);
Assert.Equal(expected, model.Date);
}
[Theory, AutoWebData]
public void GetReturnsModelWithCorrectRemainingCapacity(
[Frozen]Mock<IReader<DateTime, int>> readerStub,
BookingController sut,
DateViewModel id,
int expected)
{
readerStub
.Setup(r => r.Query(id.ToDateTime()))
.Returns(expected);
var actual = sut.Get(id);
var model = Assert.IsAssignableFrom<BookingViewModel>(actual.Model);
Assert.Equal(expected, model.RemainingCapacity);
}
[Theory, AutoWebData]
public void PostReturnsCorrectViewName(BookingController sut,
BookingViewModel model)
{
ViewResult actual = sut.Post(model);
Assert.Equal("Receipt", actual.ViewName);
}
[Theory, AutoWebData]
public void PostReturnsCorrectModel(BookingController sut,
BookingViewModel expected)
{
var actual = sut.Post(expected);
Assert.Equal(expected, actual.Model);
}
[Theory, AutoWebData]
public void PostSendsOnChannel(
[Frozen]Mock<IChannel<RequestReservationCommand>> channelMock,
BookingController sut,
BookingViewModel model)
{
sut.Post(model);
var expected = model.MakeReservation()
.AsSource().OfLikeness<RequestReservationCommand>()
.Without(d => d.Id)
.CreateProxy();
channelMock.Verify(c => c.Send(expected));
}
}
}