sharee.bike-App/TestTINKLib/Fixtures/ObjectTests/ViewModel/TestBikeViewModel.cs

150 lines
5.9 KiB
C#
Raw Normal View History

2021-07-12 21:31:46 +02:00
using NUnit.Framework;
using System;
using TINK.Model.Bike;
using TINK.Model.User;
using TINK.Model.User.Account;
using static TINK.Repository.CopriCallsMemory;
using TINK.Model.State;
using System.Collections.Generic;
using TINK.Repository;
using TINK.ViewModel.Bikes.Bike;
2021-11-14 23:27:29 +01:00
using TestFramework.Model.User.Account;
2021-07-12 21:31:46 +02:00
namespace UITest.Fixtures.ViewModel
{
public class TestBikeViewModel
{
private class BikeInfoMutable : TINK.Model.Bike.BC.BikeInfoMutable
{
public BikeInfoMutable(
2022-01-04 18:59:16 +01:00
string id,
2022-04-25 22:15:15 +02:00
LockModel lockModel,
2022-01-04 18:59:16 +01:00
bool pisDemo = false,
IEnumerable<string> group = null,
WheelType? wheelType = null,
TypeOfBike? typeOfBike = null,
2021-07-12 21:31:46 +02:00
string description = null,
2022-01-04 18:59:16 +01:00
string stationId = null,
string stationName = null,
2021-07-12 21:31:46 +02:00
Uri operatorUri = null,
2022-04-25 22:15:15 +02:00
Func<DateTime> dateTimeProvider = null,
IStateInfo stateInfo = null) : base(id, lockModel, pisDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, null, dateTimeProvider, stateInfo)
2021-07-12 21:31:46 +02:00
{
}
}
/// <summary>
/// Tests base class functionaltiy by using child.
/// </summary>
public static BikeViewModelBase TestStateText_LoggedIn_Reserved(Func<TINK.Model.Bike.BC.BikeInfoMutable, User, BikeViewModelBase> p_oFactory)
{
var l_oBike = new BikeInfoMutable(
"2",
2022-04-25 22:15:15 +02:00
LockModel.ILockIt,
2021-07-12 21:31:46 +02:00
false,
new List<string> { "TINK" },
WheelType.Trike,
2022-04-25 22:15:15 +02:00
TypeOfBike.Cargo,
2021-07-12 21:31:46 +02:00
"Test description",
"3",
2022-01-04 18:59:16 +01:00
"Radstation",
2021-07-12 21:31:46 +02:00
null,
() => new DateTime(1980, 1, 1)); // Now time stamp
// Update state from Copri.
l_oBike.State.Load(
InUseStateEnum.Reserved, // Copri acknowledges state reserved.
new DateTime(1980, 1, 1), // Date when bike was booked.
"ragu@gnu-systems.de"); // Owner from Copri.
2022-01-04 18:59:16 +01:00
var l_oStoreMock = new StoreMock(new Account("ragu@gnu-systems.de", "123456789" /* password */, false, "987654321" /* session cookie */, new List<string> { "TINK" }));
2021-07-12 21:31:46 +02:00
var l_oUser = new User(
l_oStoreMock,
l_oStoreMock.Load().Result,
"123456789");
// Verify prerequisites
Assert.AreEqual(InUseStateEnum.Reserved, l_oBike.State.Value);
Assert.IsTrue(l_oUser.IsLoggedIn);
Assert.AreEqual(l_oBike.State.MailAddress, l_oUser.Mail);
// Do not update from Copri
var l_oViewModel = p_oFactory(l_oBike, l_oUser);
return l_oViewModel;
}
/// <summary>
/// Tests base class functionaltiy by using child.
/// </summary>
public static BikeViewModelBase TestStateText_LoggedIn_ReservedWithCopriConnect(Func<TINK.Model.Bike.BC.BikeInfoMutable, User, BikeViewModelBase> p_oFactory)
{
var l_oBike = new BikeInfoMutable(
2022-04-25 22:15:15 +02:00
"2",
LockModel.ILockIt,
2021-07-12 21:31:46 +02:00
false,
new List<string> { "TINK" },
WheelType.Trike,
TypeOfBike.Cargo,
"Test description",
"3",
2022-01-04 18:59:16 +01:00
"Radstation",
2021-07-12 21:31:46 +02:00
null,
() => (new DateTime(1980, 1, 1)).Add(new TimeSpan(0, 8, 0)));
// Update state from Copri.
l_oBike.State.Load(
InUseStateEnum.Reserved, // Copri acknowledges state reserved.
new DateTime(1980, 1, 1),
"ragu@gnu-systems.de", // Owner from Copri.
"4asdfA"); // Reservation code from Copri
2022-01-04 18:59:16 +01:00
var l_oStoreMock = new StoreMock(new Account("ragu@gnu-systems.de", "123456789" /* password */, false, "987654321" /* session cookie */, new List<string> { "TINK" }));
2021-07-12 21:31:46 +02:00
var l_oUser = new User(
l_oStoreMock, // Mocks account store functionality.
l_oStoreMock.Load().Result,
"123456789");
// Verify prerequisites
Assert.AreEqual(InUseStateEnum.Reserved, l_oBike.State.Value);
Assert.IsTrue(l_oUser.IsLoggedIn);
Assert.AreEqual(l_oBike.State.MailAddress, l_oUser.Mail);
var l_oViewModel = p_oFactory(l_oBike, l_oUser); // Bikes collection mock.
return l_oViewModel;
}
/// <summary>
/// Tests base class functionaltiy by using child.
/// </summary>
public static BikeViewModelBase TestStateText_LoggedIn_Booked(Func<TINK.Model.Bike.BC.BikeInfoMutable, User, BikeViewModelBase> p_oFactory)
{
2022-04-25 22:15:15 +02:00
var l_oBike = new BikeInfoMutable("2", LockModel.ILockIt, false, new List<string> { "TINK" }, WheelType.Two, TypeOfBike.Cargo, "Test description", "3");
2021-07-12 21:31:46 +02:00
// Update from Copri.
l_oBike.State.Load(
InUseStateEnum.Booked,
new DateTime(2017, 10, 24, 21, 49, 3),
"ragu@gnu-systems.de",
"4asdfA");
var l_oCopriServer = new CopriCallsMemory(SampleSets.Set1, 1);
2022-01-04 18:59:16 +01:00
var l_oStoreMock = new StoreMock(new Account("ragu@gnu-systems.de", "123456789" /* password */, false, "987654321" /* session cookie */, new List<string> { "TINK" }));
2021-07-12 21:31:46 +02:00
var l_oUser = new User(
l_oStoreMock,
l_oStoreMock.Load().Result,
"123456789"); // Device id
// Verify prerequisites
Assert.AreEqual(InUseStateEnum.Booked, l_oBike.State.Value);
Assert.IsTrue(l_oUser.IsLoggedIn);
Assert.AreEqual(l_oBike.State.MailAddress, l_oUser.Mail);
var l_oViewModel = p_oFactory(l_oBike, l_oUser);
return l_oViewModel;
}
}
}