Ejemplo n.º 1
0
            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());
            }
Ejemplo n.º 2
0
            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());
            }