public void CanApplyAnEventWithNoTransform() { var existing = new ExampleProjection(); var @event = new ExampleEvent { Id = Guid.NewGuid(), AppendValue = "AppendingValue" }; var buildUp = BuildUp.Initialize(_ => { _.RegisterApply(_apply); }); var projectedValue = buildUp.Project(existing, @event); Assert.Equal(projectedValue.Id, @event.Id); Assert.Equal(projectedValue.SomeValue, @event.AppendValue); }
public void CanApplyMultipleEvents() { var existing = new ExampleProjection(); var @event = new ExampleEvent { Id = Guid.NewGuid(), AppendValue = "AppendingValue" }; var secondEvent = new ExampleEvent { Id = @event.Id, AppendValue = "MoreValuesToAdd" }; var buildUp = BuildUp.Initialize(_ => { _.RegisterApply(_apply); }); var projectedValue = buildUp.Project(existing, @event, secondEvent); Assert.Equal(projectedValue.Id, @event.Id); Assert.Equal(projectedValue.SomeValue, $"{@event.AppendValue}{secondEvent.AppendValue}"); }
public void AutomaticallyPerformsTransformIfPresent() { var existing = new ExampleProjection(); var @event = new ExampleEvent { Id = Guid.NewGuid(), AppendValue = "AppendingValue" }; var secondEvent = new ObsoleteEvent() { Id = @event.Id, NewValue = "MoreValuesToAdd" }; var buildUp = BuildUp.Initialize(_ => { _.RegisterApply(_apply); _.RegisterEventTransform(_transform); }); var projectedValue = buildUp.Project(existing, @event, secondEvent); Assert.Equal(projectedValue.Id, @event.Id); Assert.Equal(projectedValue.SomeValue, $"{@event.AppendValue}{secondEvent.NewValue}"); }
public void ChainsTransformsToFindAWayToApply() { var existing = new ExampleProjection(); var @event = new ExampleEvent { Id = Guid.NewGuid(), AppendValue = "AppendingValue" }; var secondEvent = new ChainedEvent() { Id = @event.Id, OldValue = "MoreValuesToAdd" }; var buildUp = BuildUp.Initialize(_ => { _.RegisterApply(_apply); _.RegisterEventTransform(_transform); _.RegisterEventTransform(_chainedTransform); }); var projectedValue = buildUp.Project(existing, @event, secondEvent); Assert.Equal(projectedValue.Id, @event.Id); Assert.Equal(projectedValue.SomeValue, $"{@event.AppendValue}{secondEvent.OldValue}"); }