mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2024-11-05 10:36:30 +01:00
116 lines
4.6 KiB
C#
116 lines
4.6 KiB
C#
using System;
|
|
using NSubstitute;
|
|
using NUnit.Framework;
|
|
using TestFramework.Model.Services.Geolocation;
|
|
using TestFramework.Services.BluetoothLock;
|
|
using TINK.Model.Bikes.BikeInfoNS.BC;
|
|
using TINK.Model.Bikes.BikeInfoNS.BikeNS;
|
|
using TINK.Model.Bikes.BikeInfoNS.DriveNS;
|
|
using TINK.Model.Connector;
|
|
using TINK.Model.Device;
|
|
using TINK.Model.User;
|
|
using TINK.Services.BluetoothLock;
|
|
using TINK.Services.Geolocation;
|
|
using TINK.ViewModel;
|
|
using TINK.ViewModel.Bikes;
|
|
using TINK.ViewModel.Bikes.Bike;
|
|
|
|
namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|
{
|
|
[TestFixture]
|
|
public class TestBikeViewModelFactory
|
|
{
|
|
private class BikeInfoMutableUnsupported : BikeInfoMutable
|
|
{
|
|
/// <summary> Constructs a bike object from source. </summary>
|
|
public BikeInfoMutableUnsupported(IBikeInfo bike, string stationName) : base(
|
|
bike != null
|
|
? bike.Bike
|
|
: throw new ArgumentNullException(nameof(bike)),
|
|
bike.Drive,
|
|
bike.DataSource,
|
|
bike.IsDemo,
|
|
bike.Group,
|
|
bike.StationId,
|
|
stationName,
|
|
bike.OperatorUri,
|
|
bike.TariffDescription,
|
|
null /* date time provider */,
|
|
bike.State)
|
|
{
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void TestCreateBluetoothLock()
|
|
{
|
|
Assert.AreEqual(
|
|
typeof(TINK.ViewModel.Bikes.Bike.BluetoothLock.BikeViewModel),
|
|
BikeViewModelFactory.Create(
|
|
() => false, // Is connected delegate,
|
|
(isconnected) => null, // connectorFactory
|
|
new GeolocationMock(), // geolocation
|
|
new LocksServiceMock(), // lock service
|
|
(index) => { }, // bikeRemoveDelegate
|
|
null, // viewUpdateManager
|
|
Substitute.For<ISmartDevice>(),
|
|
null, // viewService
|
|
new TINK.Model.Bikes.BikeInfoNS.BluetoothLock.BikeInfoMutable(
|
|
Substitute.For<IGeolocationService>(),
|
|
Substitute.For<ILocksService>(),
|
|
() => false /* not connected */,
|
|
(_) => Substitute.For<IConnector>(),
|
|
() => Substitute.For<IPollingUpdateTaskManager>(),
|
|
new TINK.Model.Bikes.BikeInfoNS.BluetoothLock.BikeInfo(new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike("42", LockModel.ILockIt), new DriveMutable(), DataSource.Copri, 5200544, new Guid("00000000-0000-0000-0000-000000000001"), "42"), "My Station Name"),
|
|
Substitute.For<IUser>(), // user
|
|
null /*ViewContext*/,
|
|
Substitute.For<IInUseStateInfoProvider>(),
|
|
Substitute.For<IBikesViewModel>(),
|
|
url => { }).GetType()); // stateInfoProvider
|
|
}
|
|
|
|
[Test]
|
|
public void TestCreateCopri()
|
|
{
|
|
Assert.AreEqual(
|
|
typeof(TINK.ViewModel.Bikes.Bike.CopriLock.BikeViewModel),
|
|
BikeViewModelFactory.Create(
|
|
() => false, // Is connected delegate,
|
|
(isconnected) => null, // connectorFactory
|
|
new GeolocationMock(), // geolocation
|
|
new LocksServiceMock(), // lock service
|
|
(index) => { }, // bikeRemoveDelegate
|
|
null, // viewUpdateManager
|
|
NSubstitute.Substitute.For<ISmartDevice>(),
|
|
null, // viewService
|
|
new TINK.Model.Bikes.BikeInfoNS.CopriLock.BikeInfoMutable(new TINK.Model.Bikes.BikeInfoNS.CopriLock.BikeInfo(new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike("42", LockModel.ILockIt), new DriveMutable(), TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri, "17", new TINK.Model.Bikes.BikeInfoNS.CopriLock.LockInfo.Builder { State = TINK.Model.Bikes.BikeInfoNS.CopriLock.LockingState.Closed }.Build()), "My Station Name"),
|
|
NSubstitute.Substitute.For<IUser>(), // user
|
|
new ViewContext(PageContext.BikesAtStation, "FR1012"), // Context does not matter for this test.
|
|
NSubstitute.Substitute.For<IInUseStateInfoProvider>(),
|
|
NSubstitute.Substitute.For<IBikesViewModel>(),
|
|
url => { }).GetType()); // stateInfoProvider
|
|
}
|
|
|
|
[Test]
|
|
public void TestCreateUnsupported()
|
|
{
|
|
Assert.That(
|
|
BikeViewModelFactory.Create(
|
|
() => false, // Is connected delegate,
|
|
(isconnected) => null, // connectorFactory
|
|
new GeolocationMock(), // geolocation
|
|
new LocksServiceMock(), // lock service
|
|
(index) => { }, // bikeRemoveDelegate
|
|
null, // viewUpdateManager
|
|
NSubstitute.Substitute.For<ISmartDevice>(),
|
|
null, // viewService
|
|
new BikeInfoMutableUnsupported(new TINK.Model.Bikes.BikeInfoNS.BluetoothLock.BikeInfo(new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike("42", TINK.Model.Bikes.BikeInfoNS.BikeNS.LockModel.ILockIt), new DriveMutable(), DataSource.Copri, 5200544, new Guid("00000000-0000-0000-0000-000000000001"), "42"), "My Station Name"),
|
|
NSubstitute.Substitute.For<IUser>(), // user
|
|
new ViewContext(PageContext.BikesAtStation, "FR1012"), // Context does not matter for this test.
|
|
NSubstitute.Substitute.For<IInUseStateInfoProvider>(),
|
|
NSubstitute.Substitute.For<IBikesViewModel>(),
|
|
url => { }),
|
|
Is.Null);
|
|
}
|
|
}
|
|
}
|