Made the code unit testable and added unit tests for the indexer plugin

This commit is contained in:
Alekhya Reddy
2020-03-17 15:37:30 -07:00
parent 69758b80a5
commit ca916deda9
4 changed files with 169 additions and 9 deletions

View File

@@ -0,0 +1,145 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Data.OleDb;
using Microsoft.Search.Interop;
using Wox.Plugin.Indexer.SearchHelper;
namespace Wox.Test.Plugins
{
[TestFixture]
public class WindowsIndexerTest
{
private WindowsSearchAPI _api = new WindowsSearchAPI();
[Test]
public void InitQueryHelper_ShouldInitialize_WhenFunctionIsCalled()
{
// Arrange
int maxCount = 10;
ISearchQueryHelper queryHelper = null;
// Act
_api.InitQueryHelper(out queryHelper, maxCount);
// Assert
Assert.IsNotNull(queryHelper);
Assert.AreEqual(queryHelper.QueryMaxResults, maxCount);
}
[Test]
public void ModifyQueryHelper_ShouldSetQueryHelper_WhenPatternIsAsterisk()
{
// Arrange
ISearchQueryHelper queryHelper;
String pattern = "*";
_api.InitQueryHelper(out queryHelper, 10);
// Act
_api.ModifyQueryHelper(ref queryHelper, pattern);
// Assert
Assert.IsFalse(queryHelper.QueryWhereRestrictions.Contains("LIKE"));
Assert.IsFalse(queryHelper.QueryWhereRestrictions.Contains("Contains"));
}
[Test]
public void ModifyQueryHelper_ShouldSetQueryHelper_WhenPatternContainsAsterisk()
{
// Arrange
ISearchQueryHelper queryHelper;
String pattern = "tt*^&)";
_api.InitQueryHelper(out queryHelper, 10);
// Act
_api.ModifyQueryHelper(ref queryHelper, pattern);
// Assert
Assert.IsTrue(queryHelper.QueryWhereRestrictions.Contains("LIKE"));
Assert.IsFalse(queryHelper.QueryWhereRestrictions.Contains("Contains"));
}
[Test]
public void ModifyQueryHelper_ShouldSetQueryHelper_WhenPatternContainsPercent()
{
// Arrange
ISearchQueryHelper queryHelper;
String pattern = "tt%^&)";
_api.InitQueryHelper(out queryHelper, 10);
// Act
_api.ModifyQueryHelper(ref queryHelper, pattern);
// Assert
Assert.IsTrue(queryHelper.QueryWhereRestrictions.Contains("LIKE"));
Assert.IsFalse(queryHelper.QueryWhereRestrictions.Contains("Contains"));
}
[Test]
public void ModifyQueryHelper_ShouldSetQueryHelper_WhenPatternContainsUnderScore()
{
// Arrange
ISearchQueryHelper queryHelper;
String pattern = "tt_^&)";
_api.InitQueryHelper(out queryHelper, 10);
// Act
_api.ModifyQueryHelper(ref queryHelper, pattern);
// Assert
Assert.IsTrue(queryHelper.QueryWhereRestrictions.Contains("LIKE"));
Assert.IsFalse(queryHelper.QueryWhereRestrictions.Contains("Contains"));
}
[Test]
public void ModifyQueryHelper_ShouldSetQueryHelper_WhenPatternContainsQuestionMark()
{
// Arrange
ISearchQueryHelper queryHelper;
String pattern = "tt?^&)";
_api.InitQueryHelper(out queryHelper, 10);
// Act
_api.ModifyQueryHelper(ref queryHelper, pattern);
// Assert
Assert.IsTrue(queryHelper.QueryWhereRestrictions.Contains("LIKE"));
Assert.IsFalse(queryHelper.QueryWhereRestrictions.Contains("Contains"));
}
[Test]
public void ModifyQueryHelper_ShouldSetQueryHelper_WhenPatternDoesNotContainSplSymbols()
{
// Arrange
ISearchQueryHelper queryHelper;
String pattern = "tt^&)bc";
_api.InitQueryHelper(out queryHelper, 10);
// Act
_api.ModifyQueryHelper(ref queryHelper, pattern);
// Assert
Assert.IsFalse(queryHelper.QueryWhereRestrictions.Contains("LIKE"));
Assert.IsTrue(queryHelper.QueryWhereRestrictions.Contains("Contains"));
}
[Test]
public void ExecuteQuery_ShouldDisposeAllConnections_AfterFunctionCall()
{
// Arrange
ISearchQueryHelper queryHelper;
_api.InitQueryHelper(out queryHelper, 10);
_api.ModifyQueryHelper(ref queryHelper, "*");
string keyword = "test";
// Act
_api.ExecuteQuery(queryHelper, keyword);
// Assert
Assert.IsNull(_api.conn);
Assert.IsNull(_api.command);
Assert.IsNull(_api.WDSResults);
}
}
}

View File

@@ -38,6 +38,7 @@
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\SolutionAssemblyInfo.cs">
@@ -45,10 +46,15 @@
</Compile>
<Compile Include="FuzzyMatcherTest.cs" />
<Compile Include="Plugins\PluginInitTest.cs" />
<Compile Include="Plugins\WindowsIndexerTest.cs" />
<Compile Include="QueryBuilderTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Plugins\Wox.Plugin.Indexer\Wox.Plugin.Indexer.csproj">
<Project>{63c3cea8-51fe-472e-b97c-b58f8b17dd51}</Project>
<Name>Wox.Plugin.Indexer</Name>
</ProjectReference>
<ProjectReference Include="..\Wox.Core\Wox.Core.csproj">
<Project>{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}</Project>
<Name>Wox.Core</Name>
@@ -72,6 +78,9 @@
<PackageReference Include="NUnit3TestAdapter">
<Version>3.15.1</Version>
</PackageReference>
<PackageReference Include="tlbimp-Microsoft.Search.Interop">
<Version>1.0.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.