public void PostDoorState_ShouldEnqueueProperCommand(bool open)
        {
            //Arrange
            var elevatorId    = _fixture.Create <int>();
            var destinationId = _fixture.Create <int>();

            string resultQueueId             = string.Empty;
            ElevatorCommandBase resultAction = null;

            _elevatorMessagePublisher
            .Setup(s => s.EnqueueRequest(It.IsAny <string>(), It.IsAny <ElevatorCommandBase>()))
            .Callback <string, ElevatorCommandBase>((id, action) =>
            {
                resultQueueId = id;
                resultAction  = action;
            });

            var expectedAction = open ? ElevatorCommandType.OpenDoor : ElevatorCommandType.CloseDoor;

            //Act
            _sut.EnqueueDoorState(elevatorId, open);

            //Assert
            resultQueueId.Should().Be(ElevatorsMessagingHelper.GetQueueId(elevatorId));
            resultAction.Should().NotBeNull();
            resultAction.ElevatorId.Should().Be(elevatorId);
            resultAction.ActionType.Should().Be(expectedAction);
        }
예제 #2
0
        public void EnqueueDoorState(int elevatorId, bool isOpen)
        {
            _elevatorsValidationHelper.ValidateElevatorId(elevatorId);

            var action = new ElevatorCommandBase
            {
                ElevatorId = elevatorId,
                ActionType = isOpen
                    ? ElevatorCommandType.OpenDoor
                    : ElevatorCommandType.CloseDoor
            };

            _elevatorMessagePublisher.EnqueueRequest(ElevatorsMessagingHelper.GetQueueId(elevatorId), action);
        }