mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-04-20 20:16:30 +02:00
Merge branch 'master' into US-166/location-permission
# Conflicts: # TINK/TINK/View/Map/MapPage.xaml.cs # TINKLib/ViewModel/Map/MapPageViewModel.cs # TestFramework/Services/Permissions/PermissionsMock.cs # TestTINKLib/TestTINKLib.csproj
This commit is contained in:
commit
30c4e4879b
80 changed files with 2737 additions and 481 deletions
24
TestSharee/TestSharee.csproj
Normal file
24
TestSharee/TestSharee.csproj
Normal file
|
@ -0,0 +1,24 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="UseCase\Startup\TestTinkApp.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="UseCase\Startup\TestTinkApp.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NSubstitute" Version="4.2.2" />
|
||||
<PackageReference Include="NUnit" Version="3.13.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\TestFramework\TestFramework.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
37
TestSharee/TestSharee.sln
Normal file
37
TestSharee/TestSharee.sln
Normal file
|
@ -0,0 +1,37 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.31829.152
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestSharee", "TestSharee.csproj", "{A86E5489-2A44-44C5-8CCF-A2C6777F9E78}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TINKLib", "..\TINKLib\TINKLib.csproj", "{3D53D769-56F1-439E-B237-ADE4A9370F51}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestFramework", "..\TestFramework\TestFramework.csproj", "{CA8997CD-32A6-4273-9A2B-451C787208EC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A86E5489-2A44-44C5-8CCF-A2C6777F9E78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A86E5489-2A44-44C5-8CCF-A2C6777F9E78}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A86E5489-2A44-44C5-8CCF-A2C6777F9E78}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A86E5489-2A44-44C5-8CCF-A2C6777F9E78}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3D53D769-56F1-439E-B237-ADE4A9370F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3D53D769-56F1-439E-B237-ADE4A9370F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3D53D769-56F1-439E-B237-ADE4A9370F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3D53D769-56F1-439E-B237-ADE4A9370F51}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CA8997CD-32A6-4273-9A2B-451C787208EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CA8997CD-32A6-4273-9A2B-451C787208EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CA8997CD-32A6-4273-9A2B-451C787208EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CA8997CD-32A6-4273-9A2B-451C787208EC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {9BA7D1A2-6C7D-4569-A23B-C86853F51DCF}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
382
TestSharee/UseCase/Startup/TestTinkApp.cs
Normal file
382
TestSharee/UseCase/Startup/TestTinkApp.cs
Normal file
|
@ -0,0 +1,382 @@
|
|||
using NUnit.Framework;
|
||||
using TINK.Model;
|
||||
|
||||
using TINK.Model.User.Account;
|
||||
using TINK.Model.Connector;
|
||||
using System;
|
||||
using TINK.Model.Station;
|
||||
using static TINK.Repository.CopriCallsMemory;
|
||||
using TINK.Model.State;
|
||||
using System.Collections.Generic;
|
||||
using TINK.Repository;
|
||||
using TINK.ViewModel.Map;
|
||||
using TINK.ViewModel.Settings;
|
||||
using TINK.Services;
|
||||
using TINK.Model.Services.Geolocation;
|
||||
using TestFramework.Model.User.Account;
|
||||
using TestFramework.Model.Device;
|
||||
using TestFramework.Services.BluetoothLock;
|
||||
using TestFramework.Repository;
|
||||
using TestFramework.Model.Services.Geolocation;
|
||||
using TestFramework.Services.Permissions;
|
||||
using NSubstitute;
|
||||
using TestFramework;
|
||||
|
||||
namespace TestShareeLib.UseCases.Startup
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestTinkApp
|
||||
{
|
||||
[Test]
|
||||
public void NotLoggedIn()
|
||||
{
|
||||
var l_oConnector = new ConnectorCache(
|
||||
string.Empty,
|
||||
string.Empty,
|
||||
new CopriCallsMemory(SampleSets.Set2, 1));
|
||||
|
||||
var l_oTinkApp = new TinkApp(
|
||||
new TINK.Model.Settings.Settings(
|
||||
new GroupFilterMapPage(new Dictionary<string, FilterState> { { FilterHelper.FILTERTINKGENERAL, FilterState.On } }),
|
||||
new GroupFilterSettings(new Dictionary<string, FilterState> { { FilterHelper.FILTERTINKGENERAL, FilterState.On }, { FilterHelper.FILTERKONRAD, FilterState.On } }),
|
||||
new Uri("https://tinkwwp.copri-bike.de/APIjsonserver"),
|
||||
new TINK.Settings.PollingParameters(new TimeSpan(10000), true),
|
||||
Serilog.Events.LogEventLevel.Error,
|
||||
activeLockService: typeof(LocksServiceMock).FullName,
|
||||
activeGeolocationService: typeof(GeolocationMock).FullName),
|
||||
new StoreMock(),
|
||||
(isConnected, uri, sessionCookie, mail, expiresAfter) => new ConnectorCache(sessionCookie, mail, new CopriCallsMemory001()),
|
||||
Substitute.For<IServicesContainer<IGeolocation>>(),
|
||||
new LocksServiceMock(),
|
||||
new DeviceMock(),
|
||||
new SpecialFolderMock(),
|
||||
null, // Cipher
|
||||
isConnectedFunc: () => true,
|
||||
currentVersion: new Version(3, 2, 0, 115), // Current app version
|
||||
lastVersion: new Version(3, 0, 173)); // Current app version. Must be larger or equal 3.0.173 to
|
||||
|
||||
var l_oStations = l_oTinkApp.GetConnector(true).Query.GetBikesAndStationsAsync().Result.Response;
|
||||
|
||||
// Check stations.
|
||||
Assert.AreEqual(21, l_oStations.StationsAll.Count);
|
||||
Assert.NotNull(l_oStations.StationsAll.GetById("KN4")); // Id of station was "4" in former version of COPRI.
|
||||
Assert.AreEqual("KN4", l_oStations.StationsAll.GetById("KN4").Id);
|
||||
Assert.AreEqual(new Position(47.658592, 9.168569), l_oStations.StationsAll.GetById("KN4").Position); // Former position was 47.6586936667, 9.16863116667
|
||||
|
||||
// Verify selected station.
|
||||
Assert.AreEqual(
|
||||
null,
|
||||
l_oTinkApp.SelectedStation.Id,
|
||||
"When starting app selected station must always be invlid");
|
||||
|
||||
// Verify bikes at station.
|
||||
Assert.AreEqual(
|
||||
0,
|
||||
TestHelper.GetBikesAtStation(l_oTinkApp.ActiveUser, l_oConnector, l_oTinkApp.SelectedStation.Id).Result.Count,
|
||||
"If no station is selected BikesAtStation- list count must be zero");
|
||||
|
||||
// Check my bikes.
|
||||
Assert.IsFalse(l_oTinkApp.ActiveUser.IsLoggedIn);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void LoggedIn_BikesReservedBooked()
|
||||
{
|
||||
var l_oConnector = new ConnectorCache(
|
||||
"4da3044c8657a04ba60e2eaa753bc51a",
|
||||
"javaminister@gmail.com",
|
||||
new CopriCallsMemory(SampleSets.Set2, 1, "4da3044c8657a04ba60e2eaa753bc51a"));
|
||||
|
||||
// User logged in is initial state to verify.
|
||||
var l_oTinkApp = new TinkApp(
|
||||
new TINK.Model.Settings.Settings(
|
||||
new GroupFilterMapPage(new Dictionary<string, FilterState> { { FilterHelper.FILTERTINKGENERAL, FilterState.On } }),
|
||||
new GroupFilterSettings(new Dictionary<string, FilterState> { { FilterHelper.FILTERTINKGENERAL, FilterState.On }, { FilterHelper.FILTERKONRAD, FilterState.On } }),
|
||||
new Uri("https://tinkwwp.copri-bike.de/APIjsonserver"), new TINK.Settings.PollingParameters(new TimeSpan(10000), true),
|
||||
Serilog.Events.LogEventLevel.Error,
|
||||
activeLockService: typeof(LocksServiceMock).FullName,
|
||||
activeGeolocationService: typeof(GeolocationMock).FullName),
|
||||
new StoreMock(new Account("javaminister@gmail.com", "javaminister" /* password */, "4da3044c8657a04ba60e2eaa753bc51a" /* session cookie */, new List<string> { FilterHelper.FILTERTINKGENERAL, FilterHelper.FILTERKONRAD })),
|
||||
(isConnected, uri, sessionCookie, mail, expiresAfter) => new ConnectorCache(sessionCookie, mail, new CopriCallsMemory001("6103_112e96b36ba33de245943c5ffaf369cd_")),
|
||||
Substitute.For<IServicesContainer<IGeolocation>>(),
|
||||
new LocksServiceMock(),
|
||||
new DeviceMock(),
|
||||
new SpecialFolderMock(),
|
||||
null, // Cipher
|
||||
isConnectedFunc: () => true,
|
||||
currentVersion: new Version(3, 2, 0, 115),
|
||||
lastVersion: new Version(3, 0, 173)); // Current app version. Must be larger or equal 3.0.173 to
|
||||
|
||||
var l_oStations = l_oTinkApp.GetConnector(true).Query.GetBikesAndStationsAsync().Result.Response;
|
||||
|
||||
// Check stations.
|
||||
Assert.AreEqual(21, l_oStations.StationsAll.Count);
|
||||
Assert.NotNull(l_oStations.StationsAll.GetById("KN4"));
|
||||
Assert.AreEqual("KN4", l_oStations.StationsAll.GetById("KN4").Id);
|
||||
Assert.AreEqual(new Position(47.658592, 9.168569), l_oStations.StationsAll.GetById("KN4").Position); // Former position was 47.6586936667, 9.16863116667
|
||||
|
||||
// Verify selected station.
|
||||
Assert.AreEqual(
|
||||
null,
|
||||
l_oTinkApp.SelectedStation.Id,
|
||||
"When starting app selected station must always be invlid");
|
||||
|
||||
// Verify bikes at station.
|
||||
Assert.AreEqual(
|
||||
0,
|
||||
TestHelper.GetBikesAtStation(l_oTinkApp.ActiveUser, l_oConnector, l_oTinkApp.SelectedStation.Id).Result.Count,
|
||||
"If no station is selected BikesAtStation- list count must be zero");
|
||||
|
||||
// Check my bikes
|
||||
var l_oBikes = l_oTinkApp.GetConnector(true).Query.GetBikesOccupiedAsync().Result.Response;
|
||||
Assert.AreEqual(2, l_oBikes.Count);
|
||||
Assert.AreEqual("FR1544", l_oBikes.GetById("FR1544").Id); // Bike used here was from set CopriCallsMemory(SampleSets.Set2, 1) and had ID 8
|
||||
Assert.AreEqual(InUseStateEnum.Booked, l_oBikes.GetById("FR1544").State.Value);
|
||||
Assert.AreEqual("FR103", l_oBikes.GetById("FR1544").CurrentStation); // // Bike used here was at station 5
|
||||
Assert.That(l_oBikes.GetById("FR1544").TypeOfBike, Is.Null); // Bike used here was TypeOfBike.Cargo
|
||||
Assert.That(l_oBikes.GetById("FR1544").WheelType, Is.Null); // Bike was of Type WheelType.Two
|
||||
Assert.AreEqual("FR1004", l_oBikes.GetById("FR1004").Id);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void LoggedIn_AllBikesDisposable_FilterTINK()
|
||||
{
|
||||
var l_oConnector = new ConnectorCache(
|
||||
"1234",
|
||||
"mgrimm@gmail.com",
|
||||
new CopriCallsMemory(SampleSets.Set2, 1));
|
||||
|
||||
// No user logged in is initial state to verify.
|
||||
var l_oTinkApp = new TinkApp(
|
||||
new TINK.Model.Settings.Settings(
|
||||
new GroupFilterMapPage(new Dictionary<string, FilterState> { { FilterHelper.FILTERTINKGENERAL, FilterState.On } }),
|
||||
new GroupFilterSettings(new Dictionary<string, FilterState> { { FilterHelper.FILTERTINKGENERAL, FilterState.On }, { FilterHelper.FILTERKONRAD, FilterState.On } }),
|
||||
new Uri("https://app.tink-konstanz.de/APIjsonserver"),
|
||||
new TINK.Settings.PollingParameters(new TimeSpan(10000), true),
|
||||
Serilog.Events.LogEventLevel.Error,
|
||||
activeLockService: typeof(LocksServiceMock).FullName,
|
||||
activeGeolocationService: typeof(GeolocationMock).FullName),
|
||||
new StoreMock(new Account("mgrimm@gmail.com", "123456789" /* password */, "1234" /* session cookie */, new List<string> { FilterHelper.FILTERTINKGENERAL, FilterHelper.FILTERKONRAD })),
|
||||
(isConnected, uri, sessionCookie, mail, expiresAfter) => new ConnectorCache(sessionCookie, mail, new CopriCallsMemory001()),
|
||||
Substitute.For<IServicesContainer<IGeolocation>>(),
|
||||
new LocksServiceMock(),
|
||||
new DeviceMock(),
|
||||
new SpecialFolderMock(),
|
||||
null, // Cipher
|
||||
isConnectedFunc: () => true,
|
||||
currentVersion: new Version(3, 2, 0, 115),
|
||||
lastVersion: new Version(3, 0, 173)); // Current app version. Must be larger or equal 3.0.173 to
|
||||
|
||||
var l_oStations = l_oTinkApp.GetConnector(true).Query.GetBikesAndStationsAsync().Result.Response;
|
||||
|
||||
// Check stations.
|
||||
Assert.AreEqual(21, l_oStations.StationsAll.Count);
|
||||
Assert.NotNull(l_oStations.StationsAll.GetById("KN4"));
|
||||
Assert.AreEqual("KN4", l_oStations.StationsAll.GetById("KN4").Id);
|
||||
Assert.AreEqual(new Position(47.658592, 9.168569), l_oStations.StationsAll.GetById("KN4").Position); // Former position was 47.6586936667, 9.16863116667
|
||||
|
||||
// Verify selected station.
|
||||
Assert.AreEqual(
|
||||
null,
|
||||
l_oTinkApp.SelectedStation.Id,
|
||||
"When starting app selected station must always be invlid");
|
||||
|
||||
// Verify bikes at station.
|
||||
Assert.AreEqual(
|
||||
0,
|
||||
TestHelper.GetBikesAtStation(l_oTinkApp.ActiveUser, l_oConnector, l_oTinkApp.SelectedStation.Id).Result.Count,
|
||||
"If no station is selected BikesAtStation- list count must be zero");
|
||||
|
||||
// Check my bikes
|
||||
Assert.IsTrue(l_oTinkApp.ActiveUser.IsLoggedIn);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void LoggedIn_AllBikesDisposable_FilterKonrad()
|
||||
{
|
||||
var l_oCopriServer = new CopriCallsMemory(SampleSets.Set2, 1);
|
||||
var l_oConnector = new ConnectorCache(
|
||||
"1234",
|
||||
"mgrimm@gmail.com",
|
||||
new CopriCallsMemory(SampleSets.Set2, 1));
|
||||
|
||||
// No user logged in is initial state to verify.
|
||||
var l_oTinkApp = new TinkApp(
|
||||
new TINK.Model.Settings.Settings(
|
||||
new GroupFilterMapPage(new Dictionary<string, FilterState> { { FilterHelper.FILTERKONRAD, FilterState.On } }),
|
||||
new GroupFilterSettings(new Dictionary<string, FilterState> { { FilterHelper.FILTERTINKGENERAL, FilterState.On }, { FilterHelper.FILTERKONRAD, FilterState.On } }),
|
||||
new Uri("https://app.tink-konstanz.de/APIjsonserver"),
|
||||
new TINK.Settings.PollingParameters(new TimeSpan(10000), true),
|
||||
Serilog.Events.LogEventLevel.Error,
|
||||
activeLockService: typeof(LocksServiceMock).FullName,
|
||||
activeGeolocationService: typeof(GeolocationMock).FullName),
|
||||
new StoreMock(new Account("mgrimm@gmail.com", "123456789" /* password */, "1234" /* session cookie */, new List<string> { FilterHelper.FILTERTINKGENERAL, FilterHelper.FILTERKONRAD })),
|
||||
(isConnected, uri, sessionCookie, mail, expiresAfter) => new ConnectorCache(sessionCookie, mail, new CopriCallsMemory001()),
|
||||
Substitute.For<IServicesContainer<IGeolocation>>(),
|
||||
new LocksServiceMock(),
|
||||
new DeviceMock(),
|
||||
new SpecialFolderMock(),
|
||||
null, // Cipher
|
||||
isConnectedFunc: () => true,
|
||||
currentVersion: new Version(3, 2, 0, 115),
|
||||
lastVersion: new Version(3, 0, 173)); // Current app version. Must be larger or equal 3.0.173 to
|
||||
|
||||
var l_oStations = l_oTinkApp.GetConnector(true).Query.GetBikesAndStationsAsync().Result.Response;
|
||||
|
||||
// Check stations.
|
||||
Assert.AreEqual(27, l_oStations.StationsAll.Count);
|
||||
Assert.NotNull(l_oStations.StationsAll.GetById("KN1")); // Former station id was 14 when bike was read from CopriCallsMemory(SampleSets.Set2, 1)
|
||||
Assert.AreEqual("KN1", l_oStations.StationsAll.GetById("KN1").Id);
|
||||
Assert.AreEqual(new Position(47.66267, 9.17262), l_oStations.StationsAll.GetById("KN1").Position); // Former station was 47.66698054007847, 9.169303178787231
|
||||
|
||||
// Verify selected station.
|
||||
Assert.AreEqual(
|
||||
null,
|
||||
l_oTinkApp.SelectedStation.Id,
|
||||
"When starting app selected station must always be invlid");
|
||||
|
||||
// Verify bikes at station.
|
||||
Assert.AreEqual(
|
||||
0,
|
||||
TestHelper.GetBikesAtStation(l_oTinkApp.ActiveUser, l_oConnector, l_oTinkApp.SelectedStation.Id).Result.Count,
|
||||
"If no station is selected BikesAtStation- list count must be zero");
|
||||
|
||||
// Check my bikes
|
||||
Assert.IsTrue(l_oTinkApp.ActiveUser.IsLoggedIn);
|
||||
}
|
||||
|
||||
[Test, Ignore("Todo: Check if reserved bikes are released even if system is offline.")]
|
||||
public void LoggedIn_BikesReserved_OfflineAfterStart()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test if Whats New logic works as expected. Form version 3.0.0.115 or smaller no Whats New dialog existed.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void FirstInstall_WhatsNew()
|
||||
{
|
||||
var l_oAppVersion = new Version(3, 2, 0, 120);
|
||||
|
||||
var l_oTinkApp = new TinkApp(
|
||||
new TINK.Model.Settings.Settings(
|
||||
new GroupFilterMapPage(new Dictionary<string, FilterState> { { "TINK", FilterState.On } }),
|
||||
new GroupFilterSettings(new Dictionary<string, FilterState> { { "TINK", FilterState.On }, { "Konrad", FilterState.On } }),
|
||||
new Uri("https://shareeapp-primary.copri-bike.de/APIjsonserver"),
|
||||
new TINK.Settings.PollingParameters(new TimeSpan(10000), true),
|
||||
Serilog.Events.LogEventLevel.Error),
|
||||
new StoreMock(),
|
||||
(isConnected, uri, sessionCookie, mail, expiresAfter) => new ConnectorCache(sessionCookie, mail, new CopriCallsMemory(SampleSets.Set2, 1)),
|
||||
Substitute.For<IServicesContainer<IGeolocation>>(),
|
||||
null, // use default locks service
|
||||
new DeviceMock(),
|
||||
new SpecialFolderMock(),
|
||||
null, // Cipher
|
||||
#if ARENDI
|
||||
Substitute.For<ICentral>(),
|
||||
#endif
|
||||
isConnectedFunc: () => true,
|
||||
currentVersion: l_oAppVersion, // Current app version
|
||||
lastVersion: null, // Last version.
|
||||
whatsNewShownInVersion: null); // First install.
|
||||
|
||||
// Whats new page
|
||||
Assert.IsFalse(
|
||||
l_oTinkApp.WhatsNew.IsShowRequired,
|
||||
$"Whats new should not be displayed because first install has been detected.");
|
||||
|
||||
// Call member which view model calls when using app.
|
||||
l_oTinkApp.SetWhatsNewWasShown();
|
||||
|
||||
// Whats new page
|
||||
Assert.IsFalse(
|
||||
l_oTinkApp.WhatsNew.IsShowRequired,
|
||||
$"Whats new should mot be displayed first install detected.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Upgrade120_WhatsNew()
|
||||
{
|
||||
var l_oAppVersion = new Version(3, 0, 0, 120);
|
||||
Version lastVersion = new Version(3, 0, 0, 116);
|
||||
|
||||
var l_oTinkApp = new TinkApp(
|
||||
new TINK.Model.Settings.Settings(
|
||||
new GroupFilterMapPage(new Dictionary<string, FilterState> { { "TINK", FilterState.On } }),
|
||||
new GroupFilterSettings(new Dictionary<string, FilterState> { { "TINK", FilterState.On }, { "Konrad", FilterState.On } }),
|
||||
new Uri("https://shareeapp-primary.copri-bike.de/APIjsonserver"),
|
||||
new TINK.Settings.PollingParameters(new TimeSpan(10000), true),
|
||||
Serilog.Events.LogEventLevel.Error),
|
||||
new StoreMock(),
|
||||
(isConnected, uri, sessionCookie, mail, expiresAfter) => new ConnectorCache(sessionCookie, mail, new CopriCallsMemory(SampleSets.Set2, 1)),
|
||||
Substitute.For<IServicesContainer<IGeolocation>>(),
|
||||
null, // use default locks service
|
||||
new DeviceMock(),
|
||||
new SpecialFolderMock(),
|
||||
null, // Cipher
|
||||
#if ARENDI // Requires LockItArendi library.
|
||||
Substitute.For<ICentral>(),
|
||||
#endif
|
||||
isConnectedFunc: () => true,
|
||||
currentVersion: l_oAppVersion, // Current app version
|
||||
lastVersion: lastVersion,
|
||||
whatsNewShownInVersion: null); // Whats new page was never shown.
|
||||
|
||||
// Whats new page
|
||||
Assert.IsTrue(
|
||||
l_oTinkApp.WhatsNew.IsShowRequired,
|
||||
$"Whats new should be displayed because app version is {l_oAppVersion} and version when \"Whats New\" was shown last is {lastVersion} (null means never).");
|
||||
|
||||
// Call member which view model calls when using app.
|
||||
l_oTinkApp.SetWhatsNewWasShown();
|
||||
|
||||
// Whats new page
|
||||
Assert.IsFalse(
|
||||
l_oTinkApp.WhatsNew.IsShowRequired,
|
||||
$"Whats new should mot be displayed because app version is {l_oAppVersion} and version when \"Whats New\" was shown last is {lastVersion} equals.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SubsequentStart_WhatsNew()
|
||||
{
|
||||
var l_oAppVersion = new Version(3, 2, 0, 115);
|
||||
var l_oWhatsNewVersion = new Version(3, 2, 0, 115);
|
||||
|
||||
var l_oTinkApp = new TinkApp(
|
||||
new TINK.Model.Settings.Settings(
|
||||
new GroupFilterMapPage(new Dictionary<string, FilterState> { { "TINK", FilterState.On } }),
|
||||
new GroupFilterSettings(new Dictionary<string, FilterState> { { "TINK", FilterState.On }, { "Konrad", FilterState.On } }),
|
||||
new Uri("https://shareeapp-primary.copri-bike.de/APIjsonserver"),
|
||||
new TINK.Settings.PollingParameters(new TimeSpan(10000), true),
|
||||
Serilog.Events.LogEventLevel.Error,
|
||||
activeLockService: typeof(TINK.Services.BluetoothLock.BLE.LockItByGuidService).FullName,
|
||||
activeGeolocationService: typeof(TINK.Model.Services.Geolocation.LastKnownGeolocationService).FullName),
|
||||
new StoreMock(),
|
||||
(isConnected, uri, sessionCookie, mail, expiresAfter) => new ConnectorCache(sessionCookie, mail, new CopriCallsMemory(SampleSets.Set2, 1)),
|
||||
Substitute.For<IServicesContainer<IGeolocation>>(),
|
||||
null, // use default locks service
|
||||
new DeviceMock(),
|
||||
new SpecialFolderMock(),
|
||||
null, // Cipher
|
||||
#if ARENDI // Requires LockItArendi library.
|
||||
Substitute.For<ICentral>(),
|
||||
#endif
|
||||
isConnectedFunc: () => true,
|
||||
currentVersion: l_oAppVersion, // Current app version<
|
||||
lastVersion: l_oWhatsNewVersion); // Whats new page was never shown.
|
||||
|
||||
// Whats new page
|
||||
Assert.IsFalse(
|
||||
l_oTinkApp.WhatsNew.IsShowRequired,
|
||||
$"Whats new should not be displayed because app version is {l_oAppVersion} and version when \"Whats New\" was shown last is {l_oWhatsNewVersion} equals.");
|
||||
|
||||
// Call member which view model would call if Whats New would have been shonw.
|
||||
l_oTinkApp.SetWhatsNewWasShown();
|
||||
|
||||
// Whats new page
|
||||
Assert.IsFalse(
|
||||
l_oTinkApp.WhatsNew.IsShowRequired,
|
||||
$"Whats new should mot be displayed because app version is {l_oAppVersion} and version when \"Whats New\" was shown last is {l_oWhatsNewVersion} equals.");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue