Added functionality for left/right key navigation (#5067)

* Added functionality for left/right key navigation

* Update Behviour of left/right navigation

* Code cleanup

* Null check for results VM

* Added tests for results view model

* Update test namings
This commit is contained in:
Divyansh Srivastava
2020-07-22 12:48:42 -07:00
committed by GitHub
parent 25d43354b3
commit f773604dec
6 changed files with 238 additions and 4 deletions

View File

@@ -0,0 +1,172 @@
using NUnit.Framework;
using PowerLauncher.ViewModel;
using System;
using System.Collections.Generic;
using System.Text;
using Wox.Core.Plugin;
using Wox.Plugin;
namespace Wox.Test
{
[TestFixture]
class ResultsViewModelTest
{
[Test]
public void ContextMenuSelectedIndex_ShouldEqualNoSelectionIndex_WhenInitialized()
{
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu"
});
rvm.SelectedItem = selectedItem;
// Assert
Assert.AreEqual(selectedItem.ContextMenuSelectedIndex, ResultViewModel.NoSelectionIndex);
}
[Test]
public void SelectNextContextMenuItem_IncrementsContextMenuSelectedIndex_WhenCalled()
{
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu"
});
rvm.SelectedItem = selectedItem;
// Act
rvm.SelectNextContextMenuItem();
// Assert
Assert.AreEqual(selectedItem.ContextMenuSelectedIndex, 0);
}
[Test]
public void SelectNextContextMenuItem_DoesnNotIncrementContextMenuSelectedIndex_WhenCalledOnLastItem()
{
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu"
});
rvm.SelectedItem = selectedItem;
// Act
rvm.SelectNextContextMenuItem();
// Assert
Assert.AreEqual(selectedItem.ContextMenuSelectedIndex, 0);
}
[Test]
public void SelectPreviousContextMenuItem_DecrementsContextMenuSelectedIndex_WhenCalled()
{
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu 1"
});
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu 2"
});
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu 3"
});
rvm.SelectedItem = selectedItem;
// Act
rvm.SelectNextContextMenuItem();
rvm.SelectNextContextMenuItem();
rvm.SelectNextContextMenuItem();
rvm.SelectPreviousContextMenuItem();
// Assert
Assert.AreEqual(selectedItem.ContextMenuSelectedIndex, 1);
}
[Test]
public void SelectPreviousContextMenuItem_ResetsContextMenuSelectedIndex_WhenCalledOnFirstItem()
{
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu"
});
rvm.SelectedItem = selectedItem;
// Act
rvm.SelectNextContextMenuItem();
rvm.SelectPreviousContextMenuItem();
// Assert
Assert.AreEqual(selectedItem.ContextMenuSelectedIndex, ResultViewModel.NoSelectionIndex);
}
[Test]
public void IsContextMenuItemSelected_ReturnsTrue_WhenContextMenuItemIsSelected()
{
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu"
});
rvm.SelectedItem = selectedItem;
// Act
rvm.SelectNextContextMenuItem();
bool isContextMenuItemSelected = rvm.IsContextMenuItemSelected();
// Assert
Assert.IsTrue(isContextMenuItemSelected);
}
[Test]
public void IsContextMenuItemSelected_ReturnsFalse_WhenContextMenuItemIsNotSelected()
{
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel()
{
Title = "Dummy Context Menu"
});
rvm.SelectedItem = selectedItem;
// Act
rvm.SelectNextContextMenuItem();
rvm.SelectPreviousContextMenuItem();
bool isContextMenuItemSelected = rvm.IsContextMenuItemSelected();
// Assert
Assert.IsFalse(isContextMenuItemSelected);
}
}
}