From 7ff6bccbc42e78e98fd292701ed1d722a4c4e3d6 Mon Sep 17 00:00:00 2001 From: BONNEVILLE Geoffroy Date: Mon, 18 Dec 2017 18:53:42 +0100 Subject: [PATCH] Added some tests Removed false first group, replaced it a button in the header Code refactor --- ModernKeePass/ModernKeePassApp.csproj | 4 +- ModernKeePass/Services/LicenseService.cs | 26 -------- ModernKeePass/Strings/en-US/Resources.resw | 2 +- ModernKeePass/ViewModels/GroupVm.cs | 3 +- .../ViewModels/Items/SettingsDatabaseVm.cs | 1 + ModernKeePass/Views/GroupDetailPage.xaml | 61 +++++++++--------- ModernKeePass/Views/GroupDetailPage.xaml.cs | 7 +- .../{Databases => Data}/TestDatabase.kdbx | Bin .../Data/WindowsStoreProxy.xml | 0 ModernKeePassApp.Test/DatabaseTests.cs | 2 +- .../Mock/DatabaseServiceMock.cs | 2 +- .../Mock/LicenseServiceMock.cs | 31 +++++++++ .../ModernKeePassApp.Test.csproj | 6 +- ModernKeePassApp.Test/ViewModelsTests.cs | 53 +++++++++++++-- 14 files changed, 127 insertions(+), 71 deletions(-) rename ModernKeePassApp.Test/{Databases => Data}/TestDatabase.kdbx (100%) rename {ModernKeePass => ModernKeePassApp.Test}/Data/WindowsStoreProxy.xml (100%) create mode 100644 ModernKeePassApp.Test/Mock/LicenseServiceMock.cs diff --git a/ModernKeePass/ModernKeePassApp.csproj b/ModernKeePass/ModernKeePassApp.csproj index e9c3505..59ae845 100644 --- a/ModernKeePass/ModernKeePassApp.csproj +++ b/ModernKeePass/ModernKeePassApp.csproj @@ -434,10 +434,8 @@ - - Designer - + 12.0 diff --git a/ModernKeePass/Services/LicenseService.cs b/ModernKeePass/Services/LicenseService.cs index 39f3af0..833a729 100644 --- a/ModernKeePass/Services/LicenseService.cs +++ b/ModernKeePass/Services/LicenseService.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using Windows.ApplicationModel; using Windows.ApplicationModel.Store; using ModernKeePass.Interfaces; @@ -27,34 +26,13 @@ namespace ModernKeePass.Services public LicenseService() { - // Initialize the license info for use in the app that is uploaded to the Store. - // Uncomment the following line in the release version of your app. - //_licenseInformation = CurrentApp.LicenseInformation; - - // Initialize the license info for testing. - // Comment the following line in the release version of your app. - //_licenseInformation = CurrentAppSimulator.LicenseInformation; -#if DEBUG - try - { - var proxyFile = Package.Current.InstalledLocation.GetFileAsync("data\\WindowsStoreProxy.xml").GetAwaiter().GetResult(); - CurrentAppSimulator.ReloadSimulatorAsync(proxyFile).GetAwaiter().GetResult(); - } - catch { } - var listing = CurrentAppSimulator.LoadListingInformationAsync().GetAwaiter().GetResult(); -#else var listing = CurrentApp.LoadListingInformationAsync().GetAwaiter().GetResult(); -#endif Products = listing.ProductListings; } public async Task Purchase(string addOn) { -#if DEBUG - var purchaseResults = await CurrentAppSimulator.RequestProductPurchaseAsync(addOn); -#else var purchaseResults = await CurrentApp.RequestProductPurchaseAsync(addOn); -#endif switch (purchaseResults.Status) { case ProductPurchaseStatus.Succeeded: @@ -79,11 +57,7 @@ namespace ModernKeePass.Services private async Task ReportFulfillmentAsync(Guid transactionId, string productName) { -#if DEBUG - var result = await CurrentAppSimulator.ReportConsumableFulfillmentAsync(productName, transactionId); -#else var result = await CurrentApp.ReportConsumableFulfillmentAsync(productName, transactionId); -#endif return (PurchaseResult) result; } diff --git a/ModernKeePass/Strings/en-US/Resources.resw b/ModernKeePass/Strings/en-US/Resources.resw index 005ef55..46f4554 100644 --- a/ModernKeePass/Strings/en-US/Resources.resw +++ b/ModernKeePass/Strings/en-US/Resources.resw @@ -175,7 +175,7 @@ Donate - Like this app? Why not make a small donation to support my work and help this app stay ad-free :) ? + Like this app? Why not make a small donation to support my work and help me keep it ad-free :) ? Expiration date diff --git a/ModernKeePass/ViewModels/GroupVm.cs b/ModernKeePass/ViewModels/GroupVm.cs index e41213e..4292b7b 100644 --- a/ModernKeePass/ViewModels/GroupVm.cs +++ b/ModernKeePass/ViewModels/GroupVm.cs @@ -61,7 +61,7 @@ namespace ModernKeePass.ViewModels { get { - if (_pwGroup == null) return Symbol.Add; + //if (_pwGroup == null) return Symbol.Add; var result = PwIconToSegoeMapping.GetSymbolFromIcon(_pwGroup.IconId); return result == Symbol.More ? Symbol.Folder : result; } @@ -115,7 +115,6 @@ namespace ModernKeePass.ViewModels Entries = new ObservableCollection(pwGroup.Entries.Select(e => new EntryVm(e, this))); Entries.CollectionChanged += Entries_CollectionChanged; Groups = new ObservableCollection(pwGroup.Groups.Select(g => new GroupVm(g, this, recycleBinId))); - Groups.Insert(0, new GroupVm()); } private void Entries_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) diff --git a/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs b/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs index 70d6e5c..c3efdbd 100644 --- a/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs +++ b/ModernKeePass/ViewModels/Items/SettingsDatabaseVm.cs @@ -94,6 +94,7 @@ namespace ModernKeePass.ViewModels { _database = database; Groups = _database?.RootGroup.Groups; + Groups?.Insert(0, new GroupVm()); } } } diff --git a/ModernKeePass/Views/GroupDetailPage.xaml b/ModernKeePass/Views/GroupDetailPage.xaml index 7b2b598..6326d67 100644 --- a/ModernKeePass/Views/GroupDetailPage.xaml +++ b/ModernKeePass/Views/GroupDetailPage.xaml @@ -126,7 +126,7 @@ RequestedTheme="Dark" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Foreground="{ThemeResource DefaultTextForegroundThemeBrush}"> - + @@ -137,17 +137,7 @@ - - - - - - - - - - - + @@ -161,23 +151,31 @@ - - - - - - - - - - + + + + + + + + + + + + + + - - - @@ -370,13 +368,18 @@ + + + - + - + diff --git a/ModernKeePass/Views/GroupDetailPage.xaml.cs b/ModernKeePass/Views/GroupDetailPage.xaml.cs index c23ff6a..8feccb3 100644 --- a/ModernKeePass/Views/GroupDetailPage.xaml.cs +++ b/ModernKeePass/Views/GroupDetailPage.xaml.cs @@ -84,9 +84,6 @@ namespace ModernKeePass.Views { case -1: return; - case 0: - group = Model.AddNewGroup(); - break; default: group = LeftListView.SelectedItem as GroupVm; break; @@ -145,6 +142,10 @@ namespace ModernKeePass.Views { Frame.Navigate(typeof(EntryDetailPage), Model.AddNewEntry()); } + private void CreateGroup_ButtonClick(object sender, RoutedEventArgs e) + { + Frame.Navigate(typeof(GroupDetailPage), Model.AddNewGroup()); + } private void GridView_DragItemsStarting(object sender, DragItemsStartingEventArgs e) { diff --git a/ModernKeePassApp.Test/Databases/TestDatabase.kdbx b/ModernKeePassApp.Test/Data/TestDatabase.kdbx similarity index 100% rename from ModernKeePassApp.Test/Databases/TestDatabase.kdbx rename to ModernKeePassApp.Test/Data/TestDatabase.kdbx diff --git a/ModernKeePass/Data/WindowsStoreProxy.xml b/ModernKeePassApp.Test/Data/WindowsStoreProxy.xml similarity index 100% rename from ModernKeePass/Data/WindowsStoreProxy.xml rename to ModernKeePassApp.Test/Data/WindowsStoreProxy.xml diff --git a/ModernKeePassApp.Test/DatabaseTests.cs b/ModernKeePassApp.Test/DatabaseTests.cs index c192971..51f8eda 100644 --- a/ModernKeePassApp.Test/DatabaseTests.cs +++ b/ModernKeePassApp.Test/DatabaseTests.cs @@ -28,7 +28,7 @@ namespace ModernKeePassApp.Test public void TestOpen() { Assert.AreEqual((int)DatabaseService.DatabaseStatus.Closed, _database.Status); - _database.DatabaseFile = Package.Current.InstalledLocation.GetFileAsync(@"Databases\TestDatabase.kdbx").GetAwaiter().GetResult(); + _database.DatabaseFile = Package.Current.InstalledLocation.GetFileAsync(@"Data\TestDatabase.kdbx").GetAwaiter().GetResult(); Assert.AreEqual((int)DatabaseService.DatabaseStatus.Opening, _database.Status); OpenOrCreateDatabase(false); } diff --git a/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs b/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs index 97cb630..e9e4b08 100644 --- a/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs +++ b/ModernKeePassApp.Test/Mock/DatabaseServiceMock.cs @@ -50,7 +50,7 @@ namespace ModernKeePassApp.Test.Mock public void Save() { - throw new NotImplementedException(); + // Do Nothing } public void Save(StorageFile file) diff --git a/ModernKeePassApp.Test/Mock/LicenseServiceMock.cs b/ModernKeePassApp.Test/Mock/LicenseServiceMock.cs new file mode 100644 index 0000000..18d1fb1 --- /dev/null +++ b/ModernKeePassApp.Test/Mock/LicenseServiceMock.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Store; +using ModernKeePass.Interfaces; + +namespace ModernKeePassApp.Test.Mock +{ + public class LicenseServiceMock: ILicenseService + { + public IReadOnlyDictionary Products { get; } + + public LicenseServiceMock() + { + try + { + var proxyFile = Package.Current.InstalledLocation.GetFileAsync("data\\WindowsStoreProxy.xml").GetAwaiter().GetResult(); + CurrentAppSimulator.ReloadSimulatorAsync(proxyFile).GetAwaiter().GetResult(); + } + catch { } + var listing = CurrentAppSimulator.LoadListingInformationAsync().GetAwaiter().GetResult(); + Products = listing.ProductListings; + } + + public Task Purchase(string addOn) + { + throw new System.NotImplementedException(); + } + } +} diff --git a/ModernKeePassApp.Test/ModernKeePassApp.Test.csproj b/ModernKeePassApp.Test/ModernKeePassApp.Test.csproj index 6cd7422..65819c8 100644 --- a/ModernKeePassApp.Test/ModernKeePassApp.Test.csproj +++ b/ModernKeePassApp.Test/ModernKeePassApp.Test.csproj @@ -121,6 +121,7 @@ + @@ -131,11 +132,14 @@ Designer - + + + Designer + PreserveNewest diff --git a/ModernKeePassApp.Test/ViewModelsTests.cs b/ModernKeePassApp.Test/ViewModelsTests.cs index d66cddc..4f89541 100644 --- a/ModernKeePassApp.Test/ViewModelsTests.cs +++ b/ModernKeePassApp.Test/ViewModelsTests.cs @@ -6,6 +6,7 @@ using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; using ModernKeePass.ViewModels; using ModernKeePass.Views; using ModernKeePassApp.Test.Mock; +using ModernKeePassLib; namespace ModernKeePassApp.Test { @@ -56,13 +57,20 @@ namespace ModernKeePassApp.Test Assert.AreEqual(15.0, compositeKeyVm.PasswordComplexityIndicator); } + [TestMethod] + public void TestDonateVm() + { + var donateVm = new DonateVm(new LicenseServiceMock()); + Assert.AreEqual(4, donateVm.Donations.Count); + } + [TestMethod] public void TestOpenVm() { var database = new DatabaseServiceMock { Status = 1, - DatabaseFile = Package.Current.InstalledLocation.GetFileAsync(@"Databases\TestDatabase.kdbx") + DatabaseFile = Package.Current.InstalledLocation.GetFileAsync(@"Data\TestDatabase.kdbx") .GetAwaiter().GetResult() }; var openVm = new OpenVm(database); @@ -79,7 +87,7 @@ namespace ModernKeePassApp.Test public void TestRecentVm() { var mru = StorageApplicationPermissions.MostRecentlyUsedList; - mru.Add(Package.Current.InstalledLocation.GetFileAsync(@"Databases\TestDatabase.kdbx") + mru.Add(Package.Current.InstalledLocation.GetFileAsync(@"Data\TestDatabase.kdbx") .GetAwaiter().GetResult(), "MockDatabase"); var recentVm = new RecentVm(); Assert.IsTrue(recentVm.RecentItems.Count == 1); @@ -88,10 +96,19 @@ namespace ModernKeePassApp.Test mru.Clear(); } - /*[TestMethod] + [TestMethod] public void TestSaveVm() { - }*/ + var database = new DatabaseServiceMock + { + Status = 2 + }; + var saveVm = new SaveVm(database); + saveVm.Save(false); + Assert.AreEqual(2, database.Status); + saveVm.Save(); + Assert.AreEqual(0, database.Status); + } [TestMethod] public void TestSettingsVm() @@ -105,5 +122,33 @@ namespace ModernKeePassApp.Test var selectedItem = (ListMenuItemVm) settingsVm.SelectedItem; Assert.AreEqual(typeof(SettingsNewDatabasePage), selectedItem.PageType); } + + [TestMethod] + public void TestEntryVm() + { + var database = new DatabaseServiceMock + { + Status = 2 + }; + var entryVm = new EntryVm(new PwEntry(true, true), new GroupVm(), database) + { + Name = "Test", + UserName = "login", + Password = "password" + }; + } + + [TestMethod] + public void TestGroupVm() + { + var database = new DatabaseServiceMock + { + Status = 2 + }; + var entryVm = new GroupVm(new PwGroup(true, true), new GroupVm(), database) + { + Name = "Test" + }; + } } }