Created a Settings Service

Created a Recent Service
Created a Resources Service
Code refactor
Updated tests
This commit is contained in:
BONNEVILLE Geoffroy
2017-12-01 17:59:38 +01:00
parent f172e31250
commit 744858df81
35 changed files with 552 additions and 141 deletions

View File

@@ -4,13 +4,14 @@ using Windows.Storage;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using ModernKeePass.Services;
using ModernKeePass.ViewModels;
using ModernKeePassApp.Test.Mock;
namespace ModernKeePassApp.Test
{
[TestClass]
public class DatabaseTests
{
private readonly DatabaseService _database = new DatabaseService();
private readonly DatabaseService _database = new DatabaseService(new SettingsServiceMock());
[TestMethod]
public void TestCreate()
@@ -47,12 +48,12 @@ namespace ModernKeePassApp.Test
{
_database.Open(null, createNew);
Assert.AreEqual((int)DatabaseService.DatabaseStatus.NoCompositeKey, _database.Status);
var compositeKey = new CompositeKeyVm(_database)
var compositeKey = new CompositeKeyVm(_database, new ResourceServiceMock())
{
HasPassword = true,
Password = "test"
};
compositeKey.OpenDatabase(createNew);
compositeKey.OpenDatabase(createNew).GetAwaiter().GetResult();
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Opened, _database.Status);
}
}

View File

@@ -8,7 +8,7 @@ using Windows.Storage;
namespace ModernKeePassApp.Test.Mock
{
public class DatabaseHelperMock : IDatabase
public class DatabaseServiceMock : IDatabase
{
public PwCompressionAlgorithm CompressionAlgorithm { get; set; }

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using ModernKeePass.Interfaces;
using Windows.Storage;
namespace ModernKeePassApp.Test.Mock
{
class RecentServiceMock : IRecent
{
public int EntryCount => 0;
public void Add(IStorageItem file, string metadata)
{
throw new NotImplementedException();
}
public ObservableCollection<IRecentItem> GetAllFiles(bool removeIfNonExistant = true)
{
throw new NotImplementedException();
}
public Task<IStorageItem> GetFileAsync(string token)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,13 @@
using System;
using ModernKeePass.Interfaces;
namespace ModernKeePassApp.Test.Mock
{
class ResourceServiceMock : IResource
{
public string GetResourceValue(string key)
{
return string.Empty;
}
}
}

View File

@@ -0,0 +1,18 @@
using System;
using ModernKeePass.Interfaces;
namespace ModernKeePassApp.Test.Mock
{
public class SettingsServiceMock : ISettings
{
public T GetSetting<T>(string property)
{
return default(T);
}
public void PutSetting<T>(string property, T value)
{
throw new NotImplementedException();
}
}
}

View File

@@ -120,7 +120,10 @@
</ItemGroup>
<ItemGroup>
<Compile Include="DatabaseTests.cs" />
<Compile Include="Mock\DatabaseHelperMock.cs" />
<Compile Include="Mock\DatabaseServiceMock.cs" />
<Compile Include="Mock\RecentServiceMock.cs" />
<Compile Include="Mock\ResourceServiceMock.cs" />
<Compile Include="Mock\SettingsServiceMock.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ViewModelsTests.cs" />
</ItemGroup>

View File

@@ -3,6 +3,8 @@ using System.Linq;
using Windows.ApplicationModel;
using Windows.Storage.AccessCache;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using ModernKeePass.Pages;
using ModernKeePass.Pages.SettingsPageFrames;
using ModernKeePass.ViewModels;
using ModernKeePassApp.Test.Mock;
@@ -11,6 +13,9 @@ namespace ModernKeePassApp.Test
[TestClass]
public class ViewModelsTests
{
private RecentServiceMock _recent = new RecentServiceMock();
private ResourceServiceMock _resource = new ResourceServiceMock();
[TestMethod]
public void TestAboutVm()
{
@@ -21,29 +26,30 @@ namespace ModernKeePassApp.Test
[TestMethod]
public void TestMainVm()
{
var database = new DatabaseHelperMock();
var mainVm = new MainVm(null, null, database);
var database = new DatabaseServiceMock();
var mainVm = new MainVm(null, null, database, _resource, _recent);
Assert.AreEqual(1, mainVm.MainMenuItems.Count());
var firstGroup = mainVm.MainMenuItems.FirstOrDefault();
Assert.AreEqual(6, firstGroup.Count());
database.Status = 1;
mainVm = new MainVm(null, null, database);
mainVm = new MainVm(null, null, database, _resource, _recent);
Assert.IsNotNull(mainVm.SelectedItem);
Assert.AreEqual("Open", ((MainMenuItemVm) mainVm.SelectedItem).Title);
Assert.AreEqual(typeof(OpenDatabasePage), ((MainMenuItemVm) mainVm.SelectedItem).PageType);
database.Status = 2;
mainVm = new MainVm(null, null, database);
mainVm = new MainVm(null, null, database, _resource, _recent);
Assert.IsNotNull(mainVm.SelectedItem);
Assert.AreEqual(2, mainVm.MainMenuItems.Count());
Assert.AreEqual("Save", ((MainMenuItemVm) mainVm.SelectedItem).Title);
Assert.AreEqual(typeof(SaveDatabasePage), ((MainMenuItemVm) mainVm.SelectedItem).PageType);
}
[TestMethod]
public void TestCompositeKeyVm()
{
var database = new DatabaseHelperMock();
var compositeKeyVm = new CompositeKeyVm(database);
var database = new DatabaseServiceMock();
var compositeKeyVm = new CompositeKeyVm(database, _resource);
Assert.IsTrue(compositeKeyVm.OpenDatabase(false).GetAwaiter().GetResult());
compositeKeyVm.StatusType = 1;
compositeKeyVm.Password = "test";
@@ -54,7 +60,7 @@ namespace ModernKeePassApp.Test
[TestMethod]
public void TestOpenVm()
{
var database = new DatabaseHelperMock
var database = new DatabaseServiceMock
{
Status = 1,
DatabaseFile = Package.Current.InstalledLocation.GetFileAsync(@"Databases\TestDatabase.kdbx")
@@ -78,7 +84,7 @@ namespace ModernKeePassApp.Test
.GetAwaiter().GetResult(), "MockDatabase");
var recentVm = new RecentVm();
Assert.IsTrue(recentVm.RecentItems.Count == 1);
recentVm.SelectedItem = recentVm.RecentItems.FirstOrDefault();
recentVm.SelectedItem = recentVm.RecentItems.FirstOrDefault() as RecentItemVm;
Assert.IsTrue(recentVm.SelectedItem.IsSelected);
mru.Clear();
}
@@ -91,13 +97,14 @@ namespace ModernKeePassApp.Test
[TestMethod]
public void TestSettingsVm()
{
var settingsVm = new SettingsVm();
var settingsVm = new SettingsVm(new DatabaseServiceMock(), _resource);
Assert.AreEqual(1, settingsVm.MenuItems.Count());
var firstGroup = settingsVm.MenuItems.FirstOrDefault();
Assert.AreEqual(1, firstGroup.Count());
// All groups have an empty title, so all settings are put inside the empty group
Assert.AreEqual(3, firstGroup.Count());
Assert.IsNotNull(settingsVm.SelectedItem);
var selectedItem = (ListMenuItemVm) settingsVm.SelectedItem;
Assert.AreEqual("New", selectedItem.Title);
Assert.AreEqual(typeof(SettingsNewDatabasePage), selectedItem.PageType);
}
}
}