forked from oskardudycz/EventSourcing.NetCore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ConfirmShoppingCartTests.cs
70 lines (56 loc) · 2.15 KB
/
ConfirmShoppingCartTests.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
using ECommerce.Api.Requests;
using ECommerce.ShoppingCarts;
using ECommerce.ShoppingCarts.GettingCartById;
using FluentAssertions;
using Ogooreck.API;
using Xunit;
using static Ogooreck.API.ApiSpecification;
namespace ECommerce.Api.Tests.ShoppingCarts.Confirming;
public class ConfirmShoppingCartFixture: ApiSpecification<Program>, IAsyncLifetime
{
public ConfirmShoppingCartFixture(): base(new ShoppingCartsApplicationFactory()) { }
public Guid ShoppingCartId { get; private set; }
public readonly Guid ClientId = Guid.NewGuid();
public async Task InitializeAsync()
{
var openResponse = await Send(
new ApiRequest(POST, URI("/api/ShoppingCarts"), BODY(new OpenShoppingCartRequest(ClientId)))
);
await CREATED_WITH_DEFAULT_HEADERS(eTag: 0)(openResponse);
ShoppingCartId = openResponse.GetCreatedId<Guid>();
}
public Task DisposeAsync() => Task.CompletedTask;
}
public class ConfirmShoppingCartTests: IClassFixture<ConfirmShoppingCartFixture>
{
private readonly ConfirmShoppingCartFixture API;
public ConfirmShoppingCartTests(ConfirmShoppingCartFixture api) => API = api;
[Fact]
[Trait("Category", "Acceptance")]
public async Task Put_Should_Return_OK_And_Cancel_Shopping_Cart()
{
await API
.Given(
URI($"/api/ShoppingCarts/{API.ShoppingCartId}/confirmation"),
HEADERS(IF_MATCH(0))
)
.When(PUT)
.Then(OK);
await API
.Given(
URI($"/api/ShoppingCarts/{API.ShoppingCartId}")
)
.When(GET_UNTIL(RESPONSE_ETAG_IS(1)))
.Then(
OK,
RESPONSE_BODY<ShoppingCartDetails>(details =>
{
details.Id.Should().Be(API.ShoppingCartId);
details.Status.Should().Be(ShoppingCartStatus.Confirmed);
details.ProductItems.Should().BeEmpty();
details.ClientId.Should().Be(API.ClientId);
details.Version.Should().Be(1);
}));
// API.PublishedExternalEventsOfType<CartFinalized>();
}
}