Skip to content

Commit

Permalink
Add filtering for TestExplorer
Browse files Browse the repository at this point in the history
  • Loading branch information
IvenBach committed May 15, 2019
1 parent 93b93c3 commit d66e16c
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 0 deletions.
12 changes: 12 additions & 0 deletions Rubberduck.Core/UI/UnitTesting/TestExplorerControl.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,18 @@

<Separator />

<Label Content="{Resx Key=TestExplorer_Filter, ResxName=Rubberduck.Resources.UnitTesting.TestExplorer}" />
<TextBox MinWidth="50"
Text="{Binding TestNameFilter, UpdateSourceTrigger=PropertyChanged}"/>

<Label Content="{Resx Key=TestExplorer_Outcome, ResxName=Rubberduck.Resources.UnitTesting.TestExplorer}" />

<ComboBox Width="100"
ItemsSource="{Binding OutcomeFilters, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedOutcomeFilter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

<Separator />

<Button Name="CollapseAll" Command="{Binding CollapseAllCommand}" Margin="2"
ToolTip="{Resx ResxName=Rubberduck.Resources.RubberduckUI, Key=InspectionResults_CollapseAll}">
<Image Source="{StaticResource CollapseAllImage}" Style="{StaticResource ToolbarImageOpacity}" />
Expand Down
49 changes: 49 additions & 0 deletions Rubberduck.Core/UI/UnitTesting/TestExplorerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
using Rubberduck.VBEditor.ComManagement;
using Rubberduck.VBEditor.Utility;
using DataFormats = System.Windows.DataFormats;
using Rubberduck.Resources.UnitTesting;

namespace Rubberduck.UI.UnitTesting
{
Expand Down Expand Up @@ -67,6 +68,10 @@ internal sealed class TestExplorerViewModel : ViewModelBase, INavigateSelection,

OnPropertyChanged(nameof(Tests));
TestGrouping = TestExplorerGrouping.Outcome;

OutcomeFilters = new System.Collections.ObjectModel.ObservableCollection<string>(
new[] { _allResultsFilter }
.Concat(Enum.GetNames(typeof(TestOutcome)).Select(s => s.ToString())));
}

public TestExplorerModel Model { get; }
Expand Down Expand Up @@ -143,6 +148,50 @@ public bool ExpandedState
}
}

public System.Collections.ObjectModel.ObservableCollection<string> OutcomeFilters { get; }

private string _testNameFilter = string.Empty;
public string TestNameFilter
{
get => _testNameFilter;
set
{
if (_testNameFilter != value)
{
_testNameFilter = value;
OnPropertyChanged();
Tests.Filter = item => FilterResults(item);
}
}
}

private static readonly string _allResultsFilter = TestExplorer.ResourceManager.GetString("TestExplorer_AllResults", CultureInfo.CurrentUICulture);
private string _selectedOutcomeFilter = _allResultsFilter;
public string SelectedOutcomeFilter
{
get => _selectedOutcomeFilter;
set
{
if (_selectedOutcomeFilter != value)
{
_selectedOutcomeFilter = value.Replace(" ", string.Empty);
OnPropertyChanged();
Tests.Filter = item => FilterResults(item);
}
}
}

private bool FilterResults(object unitTest)
{
OnPropertyChanged(nameof(Tests));

var testMethodViewModel = unitTest as TestMethodViewModel;
var memberName = testMethodViewModel.QualifiedName.MemberName;

return memberName.ToUpper().Contains(TestNameFilter.ToUpper())
&& (SelectedOutcomeFilter.Equals(_allResultsFilter) || testMethodViewModel.Result.Outcome.ToString().Equals(_selectedOutcomeFilter));
}

private void HandleTestCompletion(object sender, TestCompletedEventArgs e)
{
if (TestGrouping != TestExplorerGrouping.Outcome)
Expand Down
18 changes: 18 additions & 0 deletions Rubberduck.Resources/UnitTesting/TestExplorer.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Rubberduck.Resources/UnitTesting/TestExplorer.resx
Original file line number Diff line number Diff line change
Expand Up @@ -343,4 +343,7 @@
<value>Spectacular Failure</value>
<comment>Easter egg status.</comment>
</data>
<data name="TestExplorer_Filter" xml:space="preserve">
<value>Test Name</value>
</data>
</root>

0 comments on commit d66e16c

Please sign in to comment.