public void FindAndRegisterValidExtensionPoints_RemovesInvalidCustomQueryRewriterConfiguration()
        {
            CreateExtensionPointsConfiguration(addInvalidQueryRewriterConfiguration: true);
            ExtensionPointsConfigurationAnalyzer.FindAndRegisterValidExtensionPoints(extensionPointsConfiguration, logger);

            IQueryRewriter queryRewriter = ExtensionPointsRepository.Instance.GetQueryRewriterImplementation();

            Assert.IsNotNull(queryRewriter, "Default query rewriter should be used!");
            Assert.AreEqual(queryRewriter.GetType().FullName, "Sando.Indexer.Searching.DefaultQueryRewriter", "Invalid query rewriter returned!");

            string logFileContent = File.ReadAllText(logFilePath);

            Assert.IsTrue(logFileContent.Contains("Invalid query rewriter configuration found - it will be omitted during registration process."), "Log file should contain information about removed invalid query rewriter configuration!");
        }
        public void FindAndRegisterValidExtensionPoints_RegistersUsableCustomQueryRewriter()
        {
            CreateExtensionPointsConfiguration(addValidQueryRewriterConfiguration: true);
            ExtensionPointsConfigurationAnalyzer.FindAndRegisterValidExtensionPoints(extensionPointsConfiguration, logger);

            IQueryRewriter queryRewriter = ExtensionPointsRepository.Instance.GetQueryRewriterImplementation();

            Assert.IsNotNull(queryRewriter, "Query rewriter should be registered!");
            Assert.AreEqual(queryRewriter.GetType().FullName, "Sando.TestExtensionPoints.TestQueryRewriter", "Invalid query rewriter returned!");

            string query = null;

            Assert.DoesNotThrow(() => query = queryRewriter.RewriteQuery("Two Keywords"));
            Assert.IsFalse(String.IsNullOrWhiteSpace(query), "Invalid results from RewriteQuery method!");
            Assert.AreEqual(query, "two keywords", "Query is invalid!");
        }