public async Task SearchInternalAsync_WithValidInput_TranslatesAndExecutesQuery() { // Arrange (string header, string query) = ControllerExtractMethods.SplitQueryBody(ValidQueryContent); var queryData = new QueryData(query, header); var ts = new TimeSpan(1); var reader = new Mock <IDataReader>(); var mockTranslator = new Mock <ITranslator>(); mockTranslator.Setup(translator => translator.Translate( header, query)).Returns(queryData); var mockQueryExecutor = new Mock <IQueryExecutor>(); mockQueryExecutor.Setup(exec => exec.ExecuteQueryAsync(queryData, It.IsAny <RequestContext>())).Returns(Task.FromResult((ts, reader.Object))); var mockLogger = new Mock <ILogger <QueryController> >(); var mockResponseParser = new Mock <IResponseParser>(); mockResponseParser.Setup(exec => exec.Parse( reader.Object, queryData, ts)); var uat = new QueryController(mockQueryExecutor.Object, mockTranslator.Object, mockLogger.Object, mockResponseParser.Object) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext(), }, }; // Act await uat.SearchInternalAsync(true, true, ValidQueryContent, It.IsAny <RequestContext>()); // Assert mockTranslator.Verify( translator => translator.Translate(header, query), Times.Once()); mockQueryExecutor.Verify( executor => executor.ExecuteQueryAsync(queryData, It.IsAny <RequestContext>()), Times.Once()); mockResponseParser.Verify( parsr => parsr.Parse(reader.Object, queryData, ts), Times.Once()); }
/// <summary> /// Apply this rule on the given context object. /// </summary> /// <param name="context">The context object which holds the request path.</param> public void ApplyRule(RewriteContext context) { // a workaround an illegal path. the app can' read a path // containing :. and replaces it, with a valid token context.HttpContext.Request.Path = ControllerExtractMethods.ReplaceTemplateString(context.HttpContext.Request.Path.Value); }