public void Given_RequestMessage_When_ToRoutineResponseMessage_ForRoutine_Invoked_Then_It_Should_Return_Result(HttpStatusCode responseStatusCode, string upn, InterfaceType @interface, string routine, params TargetType[] targets)
        {
            var response = new Mock <Response>();

            response.SetupGet(p => p.Status).Returns((int)responseStatusCode);

            var correlationId = Guid.NewGuid();
            var spanId        = Guid.NewGuid();
            var request       = new RoutineRequestMessage()
            {
                Upn           = upn,
                CorrelationId = correlationId,
                Interface     = @interface,
                SpanId        = spanId,
                Routine       = routine,
                Targets       = targets.ToList(),
            };
            var eventId    = Guid.NewGuid();
            var routineId  = Guid.NewGuid();
            var statusCode = HttpStatusCode.OK;

            var result = AzureResponseExtensions.ToRoutineResponseMessage(response.Object, request, eventId, routineId, statusCode);

            result.Should().BeOfType <ObjectResult>();
            result.Value.Should().BeOfType <RoutineResponseMessage>();
            result.StatusCode.Should().Be((int)statusCode);
            (result.Value as RoutineResponseMessage).Upn.Should().Be(upn);
            (result.Value as RoutineResponseMessage).CorrelationId.Should().Be(correlationId);
            (result.Value as RoutineResponseMessage).Interface.Should().Be(@interface);
            (result.Value as RoutineResponseMessage).SpanId.Should().Be(spanId);
            (result.Value as RoutineResponseMessage).EventId.Should().Be(eventId);
            (result.Value as RoutineResponseMessage).RoutineId.Should().Be(routineId);
            (result.Value as RoutineResponseMessage).Routine.Should().Be(routine);
            (result.Value as RoutineResponseMessage).Targets.Should().BeEquivalentTo(targets.ToList());
        }
        public void Given_Error_StatusCode_When_ToRoutineResponseMessage_ForPublish_Invoked_Then_It_Should_Return_ErrorObjectResult(HttpStatusCode responseStatusCode, string reasonPhrase)
        {
            var response = new Mock <Response>();

            response.SetupGet(p => p.Status).Returns((int)responseStatusCode);
            response.SetupGet(p => p.ReasonPhrase).Returns(reasonPhrase);

            var request    = new PublishRequestMessage();
            var eventId    = Guid.NewGuid();
            var routineId  = Guid.NewGuid();
            var statusCode = HttpStatusCode.OK;

            var result = AzureResponseExtensions.ToRoutineResponseMessage(response.Object, request, eventId, routineId, statusCode);

            result.Should().BeOfType <ObjectResult>();
            result.Value.Should().BeOfType <ErrorResponseMessage>();
            result.StatusCode.Should().Be((int)responseStatusCode);
            (result.Value as ErrorResponseMessage).Message.Should().Be($"{(int)responseStatusCode}: {reasonPhrase}");
        }
        public void Given_ResponseCode_When_ToRoutineCompletedEventType_Invoked_Then_It_Should_Return_Result(HttpStatusCode statusCode, EventType expected)
        {
            var result = AzureResponseExtensions.ToRoutineCompletedEventType((int)statusCode);

            result.Should().Be(expected);
        }