Version 3.0.255

This commit is contained in:
Oliver Hauff 2021-11-07 19:42:59 +01:00
parent db9c288584
commit 5a26bf273b
1495 changed files with 159465 additions and 5060 deletions

View file

@ -10,13 +10,20 @@ namespace UITest.Fixtures.ObjectTests.User.Account
[Test]
public void TestConstruct()
{
var l_oAccount = new TINK.Model.User.Account.Account("a@b", "112", "3330", new List<string> { "Honkey", "Tonkey" }, TINK.Model.User.Account.Permissions.None);
// Act
var account = new TINK.Model.User.Account.Account(
"hans.musterman@hotmail.com", // Mail
"myPasswd", // Pwd
"aktuellerKeks", // Cookie
new List<string> { "Honkey", "Tonkey" }, // Group
TINK.Model.User.Account.Permissions.None);
Assert.AreEqual("a@b", l_oAccount.Mail);
Assert.AreEqual("112", l_oAccount.Pwd);
Assert.AreEqual("3330", l_oAccount.SessionCookie);
Assert.AreEqual("Honkey,Tonkey", String.Join(",", l_oAccount.Group));
Assert.AreEqual(TINK.Model.User.Account.Permissions.None, l_oAccount.DebugLevel);
// Assert
Assert.AreEqual("hans.musterman@hotmail.com", account.Mail);
Assert.AreEqual("myPasswd", account.Pwd);
Assert.AreEqual("aktuellerKeks", account.SessionCookie);
Assert.AreEqual("Honkey,Tonkey", String.Join(",", account.Group));
Assert.AreEqual(TINK.Model.User.Account.Permissions.None, account.DebugLevel);
}
[Test]

View file

@ -21,6 +21,7 @@ using TINK.ViewModel.Settings;
using TINK.Model.Services.Geolocation;
using TINK.Services;
using NSubstitute;
using TINK.Services.Permissions;
namespace TestTINKLib.Fixtures.UseCases.Startup
{
@ -56,12 +57,15 @@ namespace TestTINKLib.Fixtures.UseCases.Startup
var viewService = MockRepository.GenerateStub<IViewService>();
var navigationService = MockRepository.GenerateStub<INavigation>();
var locationPermission = Substitute.For<ILocationPermission>();
locationPermission.CheckStatusAsync().Returns(Status.Granted);
var viewModel = new MapPageViewModel(
tinkApp,
new PermissionsMock(),
NSubstitute.Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
NSubstitute.Substitute.For<IGeolocation>(),
locationPermission,
Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
Substitute.For<IGeolocation>(),
(mapspan) => { },
viewService,
navigationService);
@ -128,10 +132,13 @@ namespace TestTINKLib.Fixtures.UseCases.Startup
var viewService = MockRepository.GenerateStub<IViewService>();
var navigationService = MockRepository.GenerateStub<INavigation>();
var locationPermission = Substitute.For<ILocationPermission>();
locationPermission.CheckStatusAsync().Returns(Status.Granted);
var viewModel = new MapPageViewModel(
tinkApp,
new PermissionsMock(),
locationPermission,
NSubstitute.Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
NSubstitute.Substitute.For<IGeolocation>(),
(mapspan) => { },
@ -197,10 +204,13 @@ namespace TestTINKLib.Fixtures.UseCases.Startup
var viewService = MockRepository.GenerateStub<IViewService>();
var navigationService = MockRepository.GenerateStub<INavigation>();
var locationPermission = Substitute.For<ILocationPermission>();
locationPermission.CheckStatusAsync().Returns(Status.Granted);
var viewModel = new MapPageViewModel(
tinkApp,
new PermissionsMock(),
locationPermission,
NSubstitute.Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
NSubstitute.Substitute.For<IGeolocation>(),
(mapspan) => { },
@ -261,10 +271,13 @@ namespace TestTINKLib.Fixtures.UseCases.Startup
var viewService = MockRepository.GenerateStub<IViewService>();
var navigationService = MockRepository.GenerateStub<INavigation>();
var locationPermission = Substitute.For<ILocationPermission>();
locationPermission.CheckStatusAsync().Returns(Status.Granted);
var viewModel = new MapPageViewModel(
tinkApp,
new PermissionsMock(),
locationPermission,
NSubstitute.Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
NSubstitute.Substitute.For<IGeolocation>(),
(mapspan) => { },
@ -325,10 +338,13 @@ namespace TestTINKLib.Fixtures.UseCases.Startup
var viewService = MockRepository.GenerateStub<IViewService>();
var navigationService = MockRepository.GenerateStub<INavigation>();
var locationPermission = Substitute.For<ILocationPermission>();
locationPermission.CheckStatusAsync().Returns(Status.Granted);
var viewModel = new MapPageViewModel(
tinkApp,
new PermissionsMock(),
locationPermission,
NSubstitute.Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
NSubstitute.Substitute.For<IGeolocation>(),
(mapspan) => { },
@ -403,10 +419,13 @@ namespace TestTINKLib.Fixtures.UseCases.Startup
var viewService = MockRepository.GenerateStub<IViewService>();
var navigationService = MockRepository.GenerateStub<INavigation>();
var locationPermission = Substitute.For<ILocationPermission>();
locationPermission.CheckStatusAsync().Returns(Status.Granted);
var viewModel = new MapPageViewModel(
tinkApp,
new PermissionsMock(),
locationPermission,
NSubstitute.Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
NSubstitute.Substitute.For<IGeolocation>(),
(mapspan) => { },
@ -484,10 +503,13 @@ namespace TestTINKLib.Fixtures.UseCases.Startup
var viewService = MockRepository.GenerateStub<IViewService>();
var navigationService = MockRepository.GenerateStub<INavigation>();
var locationPermission = Substitute.For<ILocationPermission>();
locationPermission.CheckStatusAsync().Returns(Status.Granted);
var viewModel = new MapPageViewModel(
tinkApp,
new PermissionsMock(),
locationPermission,
NSubstitute.Substitute.For<Plugin.BLE.Abstractions.Contracts.IBluetoothLE>(),
NSubstitute.Substitute.For<IGeolocation>(),
(mapspan) => { },

View file

@ -17,14 +17,13 @@ using TINK.Repository;
using static TINK.Repository.CopriCallsMemory;
using TINK.ViewModel.Map;
using TINK.ViewModel.Settings;
using Plugin.Permissions.Abstractions;
using Plugin.BLE.Abstractions.Contracts;
using TINK.Services.BluetoothLock;
using NSubstitute;
using TINK.ViewModel.BikesAtStation;
using Xamarin.Forms;
using TINK.Services.BluetoothLock.Tdo;
using Plugin.Permissions;
using TINK.Services.Permissions;
using TINK.Model.Services.Geolocation;
using NSubstitute.ExceptionExtensions;
using TINK.Services;
@ -42,7 +41,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
var tinkApp = new TinkApp(
@ -61,7 +60,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -114,7 +113,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
var tinkApp = new TinkApp(
@ -133,7 +132,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -178,11 +177,11 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
// Fake location permissions to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Granted));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Granted));
geolocation.Active.IsGeolcationEnabled.Returns(true); // Fake gps to be on
bluetooth.State.Returns(BluetoothState.On); // Fake bluetooth to be on
@ -210,7 +209,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -238,7 +237,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
var btDummy = bluetooth.Received().State;
locksService.GetLocksStateAsync(Arg.Any<IEnumerable<LockInfoAuthTdo>>(), Arg.Any<TimeSpan>());
@ -278,11 +277,11 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
// Fake location permissions not to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Denied));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Denied));
// Fake anwser on question whether to open permissions dialog
viewService.DisplayAlert(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>()).Returns(true);
@ -311,7 +310,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -339,9 +338,9 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
permissions.RequestPermissionAsync<LocationPermission>(); // Ask user from permissions.
permissions.RequestAsync(); // Ask user from permissions.
viewService.DisplayAlert(
"Hint",
"Please allow location sharing so that bike lock/locks can be managed.\r\nOpen sharing dialog?",
@ -384,11 +383,11 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
// Fake location permissions not to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Denied));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Denied));
permissions.OpenAppSettings().Throws<Exception>(); // Ensures that method is not called and fixture succeeds.
// Fake anwser on question whether to open permissions dialog
@ -418,7 +417,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -446,9 +445,9 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
permissions.RequestPermissionAsync<LocationPermission>(); // Ask user from permissions.
permissions.RequestAsync(); // Ask user from permissions.
viewService.DisplayAlert(
"Hint",
"Please allow location sharing so that bike lock/locks can be managed.\r\nOpen sharing dialog?",
@ -490,11 +489,11 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
// Fake location permissions to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Granted));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Granted));
geolocation.Active.IsGeolcationEnabled.Returns(false); // Fake gps to be off
bluetooth.State.Returns(BluetoothState.On); // Fake bluetooth to be on
@ -522,7 +521,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -550,7 +549,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
viewService.DisplayAlert(
"Hint",
@ -592,11 +591,11 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
// Fake location permissions to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Granted));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Granted));
geolocation.Active.IsGeolcationEnabled.Returns(true); // Fake gps to be on
bluetooth.State.Returns(BluetoothState.Off); // // Fake bluetooth to be off
@ -624,7 +623,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -652,7 +651,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
var btDummy = bluetooth.Received().State;
viewService.DisplayAlert(
@ -694,7 +693,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
bluetooth.State.Returns(BluetoothState.On);
@ -765,7 +764,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
bluetooth.State.Returns(BluetoothState.On);
@ -833,7 +832,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
bluetooth.State.Returns(BluetoothState.On);
@ -910,7 +909,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
bluetooth.State.Returns(BluetoothState.On);
@ -982,7 +981,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
bluetooth.State.Returns(BluetoothState.On);
@ -1068,7 +1067,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
bluetooth.State.Returns(BluetoothState.On);

View file

@ -16,13 +16,12 @@ using TINK.Repository;
using static TINK.Repository.CopriCallsMemory;
using TINK.ViewModel.Map;
using TINK.ViewModel.Settings;
using Plugin.Permissions.Abstractions;
using Plugin.BLE.Abstractions.Contracts;
using TINK.Services.BluetoothLock;
using NSubstitute;
using TINK.Services.BluetoothLock.Tdo;
using TINK.ViewModel.MyBikes;
using Plugin.Permissions;
using TINK.Services.Permissions;
using Xamarin.Forms;
using TINK.Model.Services.Geolocation;
using NSubstitute.ExceptionExtensions;
@ -41,14 +40,14 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
timeOut.MultiConnect.Returns(new TimeSpan(0));
// Fake location permissions to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Granted));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Granted));
geolocation.Active.IsGeolcationEnabled.Returns(true); // Fake gps to be on
bluetooth.State.Returns(BluetoothState.On); // Fake bluetooth to be on
@ -76,7 +75,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -102,7 +101,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
var btDummy = bluetooth.Received().State;
locksService.GetLocksStateAsync(Arg.Any<IEnumerable<LockInfoAuthTdo>>(), Arg.Any<TimeSpan>());
@ -132,14 +131,14 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
timeOut.MultiConnect.Returns(new TimeSpan(0));
// Fake location permissions not to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Denied));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Denied));
// Fake anwser on question whether to open permissions dialog
viewService.DisplayAlert(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>()).Returns(true);
@ -167,7 +166,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -193,9 +192,9 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
permissions.RequestPermissionAsync<LocationPermission>(); // Ask user from permissions.
permissions.RequestAsync(); // Ask user from permissions.
viewService.DisplayAlert(
"Hint",
"Please allow location sharing so that bike lock/locks can be managed.\r\nOpen sharing dialog?",
@ -228,14 +227,14 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
timeOut.MultiConnect.Returns(new TimeSpan(0));
// Fake location permissions not to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Denied));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Denied));
permissions.OpenAppSettings().Throws<Exception>(); // Ensures that method is not called and fixture succeeds.
@ -266,7 +265,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -292,9 +291,9 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
permissions.RequestPermissionAsync<LocationPermission>(); // Ask user from permissions.
permissions.RequestAsync(); // Ask user from permissions.
viewService.DisplayAlert(
"Hint",
"Please allow location sharing so that bike lock/locks can be managed.\r\nOpen sharing dialog?",
@ -326,14 +325,14 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
timeOut.MultiConnect.Returns(new TimeSpan(0));
// Fake location permissions to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Granted));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Granted));
geolocation.Active.IsGeolcationEnabled.Returns(false); // Fake gps to be off
// Fake bluetooth answer for locks with id 2200545 and 2200537.
@ -360,7 +359,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -386,7 +385,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
viewService.DisplayAlert(
"Hint",
@ -418,14 +417,14 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
timeOut.MultiConnect.Returns(new TimeSpan(0));
// Fake location permissions to be set
permissions.CheckPermissionStatusAsync<LocationPermission>().Returns(Task.FromResult(PermissionStatus.Granted));
permissions.CheckStatusAsync().Returns(Task.FromResult(Status.Granted));
geolocation.Active.IsGeolcationEnabled.Returns(true); // Fake gps to be on
bluetooth.State.Returns(BluetoothState.Off); // Fake bluetooth to be off
@ -452,7 +451,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions,
isConnectedFunc: () => true,
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -478,7 +477,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
// Verify behaviour
Received.InOrder(() =>
{
permissions.CheckPermissionStatusAsync<LocationPermission>();
permissions.CheckStatusAsync();
var glDummy = geolocation.Active.Received().IsGeolcationEnabled;
var btDummy = bluetooth.Received().State;
viewService.DisplayAlert(
@ -516,7 +515,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
@ -547,7 +546,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var myBikes = new MyBikesPageViewModel(
tinkApp.ActiveUser,
permissions,
permissions, // Permissions,
bluetooth,
Device.iOS,
() => tinkApp.GetIsConnected(),
@ -577,7 +576,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
@ -599,7 +598,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions
isConnectedFunc: () => false, // Offline
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -608,7 +607,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var myBikes = new MyBikesPageViewModel(
tinkApp.ActiveUser,
permissions,
null, // Permissions,
bluetooth,
Device.iOS,
() => tinkApp.GetIsConnected(),
@ -641,7 +640,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
@ -683,7 +682,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var myBikes = new MyBikesPageViewModel(
tinkApp.ActiveUser,
permissions,
null, // Permissions,
bluetooth,
Device.iOS,
() => tinkApp.GetIsConnected(),
@ -719,7 +718,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var locksService = Substitute.For<ILocksService>();
var timeOut = Substitute.For<ITimeOutProvider>();
var viewService = Substitute.For<IViewService>();
var permissions = Substitute.For<IPermissions>();
var permissions = Substitute.For<ILocationPermission>();
var bluetooth = Substitute.For<IBluetoothLE>();
locksService.TimeOut.Returns(timeOut);
@ -752,7 +751,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
new DeviceMock(),
new SpecialFolderMock(),
null, // Cipher
permissions,
null, // Permissions.
isConnectedFunc: () => false, // Offline
postAction: (d, obj) => d(obj),
currentVersion: new Version(3, 2, 0, 115), // Current app version
@ -761,7 +760,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
var myBikes = new MyBikesPageViewModel(
tinkApp.ActiveUser,
permissions,
null, // Permissions,
bluetooth,
Device.iOS,
() => tinkApp.GetIsConnected(),

View file

@ -177,7 +177,7 @@
<Version>3.6.1</Version>
</PackageReference>
<PackageReference Include="Serilog.Sinks.File">
<Version>4.1.0</Version>
<Version>5.0.0</Version>
</PackageReference>
<PackageReference Include="System.Private.DataContractSerialization">
<Version>4.3.0</Version>
@ -189,7 +189,7 @@
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.6.1</Version>
<Version>1.7.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>