2023-01-18 14:22:51 +01:00
using System ;
2023-08-31 12:20:06 +02:00
using NSubstitute ;
2022-08-30 15:42:25 +02:00
using NUnit.Framework ;
2021-11-14 23:27:29 +01:00
using TestFramework.Model.Services.Geolocation ;
using TestFramework.Services.BluetoothLock ;
2023-01-18 14:22:51 +01:00
using TINK.Model.Bikes.BikeInfoNS.BC ;
2022-08-30 15:42:25 +02:00
using TINK.Model.Bikes.BikeInfoNS.BikeNS ;
using TINK.Model.Bikes.BikeInfoNS.DriveNS ;
2023-08-31 12:20:06 +02:00
using TINK.Model.Connector ;
2021-07-12 21:31:46 +02:00
using TINK.Model.Device ;
using TINK.Model.User ;
2023-08-31 12:20:06 +02:00
using TINK.Services.BluetoothLock ;
using TINK.Services.Geolocation ;
2021-07-12 21:31:46 +02:00
using TINK.ViewModel ;
using TINK.ViewModel.Bikes ;
using TINK.ViewModel.Bikes.Bike ;
namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
{
2022-09-06 16:08:19 +02:00
[TestFixture]
public class TestBikeViewModelFactory
{
2023-04-19 12:14:14 +02:00
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 )
{
}
}
2022-09-06 16:08:19 +02:00
[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
2023-08-31 12:20:06 +02:00
Substitute . For < ISmartDevice > ( ) ,
2022-09-06 16:08:19 +02:00
null , // viewService
2023-08-31 12:20:06 +02:00
new TINK . Model . Bikes . BikeInfoNS . BluetoothLock . BikeInfoMutable (
Substitute . For < IGeolocationService > ( ) ,
Substitute . For < ILocksService > ( ) ,
( ) = > false /* not connected */ ,
( _ ) = > Substitute . For < IConnector > ( ) ,
( ) = > Substitute . For < IPollingUpdateTaskManager > ( ) ,
2023-08-31 12:31:38 +02:00
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" ) ,
2023-08-31 12:20:06 +02:00
Substitute . For < IUser > ( ) , // user
null /*ViewContext*/ ,
Substitute . For < IInUseStateInfoProvider > ( ) ,
Substitute . For < IBikesViewModel > ( ) ,
2022-09-06 16:08:19 +02:00
url = > { } ) . GetType ( ) ) ; // stateInfoProvider
}
2021-07-12 21:31:46 +02:00
2022-09-06 16:08:19 +02:00
[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
2023-08-31 12:31:38 +02:00
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" ) ,
2023-03-08 13:18:54 +01:00
NSubstitute . Substitute . For < IUser > ( ) , // user
2023-07-04 11:06:38 +02:00
new ViewContext ( PageContext . BikesAtStation , "FR1012" ) , // Context does not matter for this test.
2023-03-08 13:18:54 +01:00
NSubstitute . Substitute . For < IInUseStateInfoProvider > ( ) ,
NSubstitute . Substitute . For < IBikesViewModel > ( ) ,
2022-09-06 16:08:19 +02:00
url = > { } ) . GetType ( ) ) ; // stateInfoProvider
}
2022-04-25 22:15:15 +02:00
2022-09-06 16:08:19 +02:00
[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
2023-08-31 12:31:38 +02:00
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" ) ,
2023-03-08 13:18:54 +01:00
NSubstitute . Substitute . For < IUser > ( ) , // user
2023-07-04 11:06:38 +02:00
new ViewContext ( PageContext . BikesAtStation , "FR1012" ) , // Context does not matter for this test.
2023-03-08 13:18:54 +01:00
NSubstitute . Substitute . For < IInUseStateInfoProvider > ( ) ,
NSubstitute . Substitute . For < IBikesViewModel > ( ) ,
2022-09-06 16:08:19 +02:00
url = > { } ) ,
Is . Null ) ;
}
}
2021-07-12 21:31:46 +02:00
}