public void ShouldBeAbleToHandleCandidateFeedbackMessage()
        {
            // Act.
            var command = new HelpDeskCommunicationCommand(null);

            // Assert.
            command.CanHandle(_communicationRequest).Should().BeTrue();
        }
        public void ShouldNotQueueSms()
        {
            // Arrange.
            var command = new HelpDeskCommunicationCommand(_mockServiceBus.Object);

            // Act.
            command.Handle(_communicationRequest);

            // Assert.
            _mockServiceBus.Verify(mock => mock.PublishMessage(It.IsAny <SmsRequest>()), Times.Never);
        }
        public void ShouldQueueEmail()
        {
            // Arrange.
            var command = new HelpDeskCommunicationCommand(_mockServiceBus.Object);

            // Act.
            command.Handle(_communicationRequest);

            // Assert.
            _mockServiceBus.Verify(mock => mock.PublishMessage(
                                       It.Is <EmailRequest>(emailRequest =>
                                                            emailRequest.MessageType == _communicationRequest.MessageType &&
                                                            emailRequest.ToEmail == TestEmailAddress &&
                                                            emailRequest.Tokens.Count() == 2)),
                                   Times.Once);
        }
        public void ShouldBeUnableToHandleOtherTypeOfMessage(MessageTypes messageType)
        {
            // Arrange.
            var communicationRequest = new CommunicationRequest
            {
                MessageType = messageType
            };

            var command = new HelpDeskCommunicationCommand(null);

            // Act.
            var canHandle = command.CanHandle(communicationRequest);

            // Assert.
            canHandle.Should().BeFalse();
        }