public void TakeSnapshot(Guid aggregateId) { // arrange; var savedEvents = new IAggregateEvent <Guid>[] { new GiftCardCreated(aggregateId, DateTime.UtcNow.AddDays(-10), 100), new GiftCardDebited(aggregateId, 2, DateTime.UtcNow.AddDays(-5), 30), new GiftCardDebited(aggregateId, 3, DateTime.UtcNow.AddDays(-2), 20) }; var sut = new GiftCard(aggregateId, savedEvents); // act sut.TakeSnapshot(); // assert Assert.Equal(3, sut.Version); IAggregateChangeset <Guid> changeset = sut.GetChangeset(); Assert.NotNull(changeset.Snapshot); Assert.IsType <GiftCardSnapshot>(changeset.Snapshot); var snapshot = changeset.Snapshot as GiftCardSnapshot; Assert.Equal(aggregateId, snapshot.AggregateId); Assert.Equal(3, snapshot.AggregateVersion); Assert.Equal(sut.Balance, snapshot.Balance); }
public async Task <IActionResult> OnPostTakeSnapshot(Guid id) { GiftCard giftCard = await _repository.FindGiftCardAsync(id) ?? throw new InvalidOperationException("Gift card not found"); giftCard.TakeSnapshot(); await _repository.SaveGiftCardAsync(giftCard); return(RedirectToPage(new { id })); }