public async Task ThrowsWhenUpdatingStartMessageFromContextIfLeastCommonAncestorUnaffected(ComponentStatus changeStatus, ComponentStatus existingStatus) { var changedChild = new TestComponent("child"); var existingChild = new TestComponent("existing"); var root = new AlwaysSameValueTestComponent( ComponentStatus.Up, "hi", "", new[] { changedChild, existingChild }); var affectedComponent = root.GetByNames <IComponent>(root.Name, changedChild.Name); var change = new MessageChangeEvent( DefaultTimestamp, affectedComponent.Path, changeStatus, MessageType.Start); var existingAffectedComponent = root.GetByNames <IComponent>(root.Name, existingChild.Name); var context = new ExistingStartMessageContext( new DateTime(2018, 10, 9), existingAffectedComponent, existingStatus); await Assert.ThrowsAsync <ArgumentException>(() => Processor.ProcessAsync(change, EventEntity, root, context)); Factory .Verify( x => x.UpdateMessageAsync( It.IsAny <EventEntity>(), It.IsAny <DateTime>(), It.IsAny <MessageType>(), It.IsAny <IComponent>()), Times.Never()); }
public async Task IgnoresEndMessageWithContextIfStillAffected(ComponentStatus changeStatus, ComponentStatus existingStatus) { var child = new TestComponent("child"); child.Status = changeStatus; var root = new AlwaysSameValueTestComponent( ComponentStatus.Degraded, "hi", "", new[] { child }, false); var affectedComponent = root.GetByNames <IComponent>(root.Name, child.Name); var change = new MessageChangeEvent( DefaultTimestamp + TimeSpan.FromDays(1), affectedComponent.Path, changeStatus, MessageType.End); var context = new ExistingStartMessageContext( DefaultTimestamp, root, existingStatus); var result = await Processor.ProcessAsync(change, EventEntity, root, context); Assert.Equal(context, result); Factory .Verify( x => x.CreateMessageAsync( It.IsAny <EventEntity>(), It.IsAny <DateTime>(), It.IsAny <MessageType>(), It.IsAny <IComponent>()), Times.Never()); }