public void ProcessValidRoadId()
        {
            //Given valid road Id
            const string roadId = "a2";

            //When the console client is run
            var roadStatusQueryService  = new RoadStatusQueryService(new RoadStatusUriBuilder(new ApplicationAccessDetailsRepository().LoadAccessDetails()));
            var roadStatusQueryResponse = roadStatusQueryService.ProcessRoadStatusRequest(new RoadStatusQueryRequest {
                RoadId = roadId
            });
            var roadStatusConsoleResponse = _roadStatusConsoleClient.ProcessRequest(new RoadStatusConsoleRequest {
                RoadId = roadId
            });

            //Then the road 'displayName' should be displayed
            Assert.That(roadStatusConsoleResponse.StatusMessage.Contains(string.Format("The status of the {0} is as follows", roadStatusQueryResponse.RoadStatusDetails.DisplayName)), Is.True);

            //Then the road 'statusSeverity' should be displayed as 'Road Status'
            Assert.That(roadStatusConsoleResponse.StatusMessage.Contains(string.Format("Road Status is {0}", roadStatusQueryResponse.RoadStatusDetails.StatusSeverity)), Is.True);

            //Then the road 'statusSeverityDescription' should be displayed as 'Road Status Description'
            Assert.That(roadStatusConsoleResponse.StatusMessage.Contains(string.Format("Road Status Description is {0}", roadStatusQueryResponse.RoadStatusDetails.StatusSeverityDescription)), Is.True);

            //Then the console app exit code is 0
            Assert.That(roadStatusConsoleResponse.ExitCode, Is.EqualTo(0));
        }
        public void ProcessInvalidRoadStatusRequest()
        {
            var roadStatusQueryService  = new RoadStatusQueryService(roadStatusUriBuilder);
            var roadStatusQueryResponse = roadStatusQueryService.ProcessRoadStatusRequest(new RoadStatusQueryRequest {
                RoadId = "A223"
            });

            Assert.That(roadStatusQueryResponse, Is.Not.Null);
            Assert.That(roadStatusQueryResponse.RoadIdIsValid, Is.False);
            Assert.That(roadStatusQueryResponse.RoadStatusDetails, Is.Null);
        }
        public RoadStatusConsoleResponse ProcessRequest(RoadStatusConsoleRequest roadStatusConsoleRequest)
        {
            var roadStatusQueryService = new RoadStatusQueryService(new RoadStatusUriBuilder(new ApplicationAccessDetailsRepository().LoadAccessDetails()));
            var roadStatusQueryRequest = new RoadStatusQueryRequest {
                RoadId = roadStatusConsoleRequest.RoadId
            };
            var roadStatusQueryResponse = roadStatusQueryService.ProcessRoadStatusRequest(roadStatusQueryRequest);

            var roadStatusConsoleResponseBuilder = new RoadStatusConsoleResponseBuilder();

            return(roadStatusConsoleResponseBuilder.Build(roadStatusQueryRequest, roadStatusQueryResponse));
        }
        public void ProcessValidRoadStatusRequest()
        {
            const string roadId          = "a2";
            const string roadDisplayName = "A2";

            var roadStatusQueryService  = new RoadStatusQueryService(roadStatusUriBuilder);
            var roadStatusQueryResponse = roadStatusQueryService.ProcessRoadStatusRequest(new RoadStatusQueryRequest {
                RoadId = roadId
            });

            Assert.That(roadStatusQueryResponse, Is.Not.Null);
            Assert.That(roadStatusQueryResponse.RoadIdIsValid, Is.True);
            Assert.That(roadStatusQueryResponse.RoadStatusDetails, Is.Not.Null);
            Assert.That(roadStatusQueryResponse.RoadStatusDetails.Id, Is.EqualTo(roadId));
            Assert.That(roadStatusQueryResponse.RoadStatusDetails.DisplayName, Is.EqualTo(roadDisplayName));
        }