public void WhenTheEventIsReceivedItIsEvaluatedWithNoMatchingFund(UnitsAllocatedData eventData, IEvent @event) { var fixture = new Fixture(); fixture.Register(() => PremiumSpread.Statuses.Received); var view = fixture.Create <Policy>(); var target = new UnitsAllocatedEvaluator(); var expectedView = view.Clone(); target.Evaluate(view, @event, eventData); view.Should().BeEquivalentTo(expectedView); }
public void WhenTheEventIsReceivedItIsEvaluated(UnitsAllocatedData eventData, IEvent @event) { var fixture = new Fixture(); fixture.Register(() => PremiumSpread.Statuses.Received); var view = fixture.Create <Policy>(); var target = new UnitsAllocatedEvaluator(); var premiumSpread = view.Premiums.First(); eventData.FundId = premiumSpread.FundId; target.Evaluate(view, @event, eventData); var expectedUnits = eventData.OfferPrice * premiumSpread.Amount; var fundInstance = view.Funds[eventData.FundId].Single(); Assert.Equal(expectedUnits, fundInstance.Units); Assert.Equal(premiumSpread.Id, fundInstance.Id); Assert.Equal(@event.EffectiveDateTime, fundInstance.StartDate); Assert.Equal(premiumSpread.Amount, fundInstance.PremiumAmount); Assert.Equal(PremiumSpread.Statuses.Allocated, premiumSpread.Status); }