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"
+ };
+ }
}
}