mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-04-29 07:46:27 +02:00
Version 3.0.381
This commit is contained in:
parent
f963c0a219
commit
3a363acf3a
1525 changed files with 60589 additions and 125098 deletions
24
SharedBusinessLogic.Tests.Framework/DateTimeMocker.cs
Normal file
24
SharedBusinessLogic.Tests.Framework/DateTimeMocker.cs
Normal file
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SharedBusinessLogic.Tests
|
||||
{
|
||||
public class DateTimeMocker
|
||||
{
|
||||
private static int m_iIndex;
|
||||
private static IList<DateTime> m_oDateTimeSeries;
|
||||
|
||||
public DateTimeMocker(IList<DateTime> p_oDateTimeSeries)
|
||||
{
|
||||
if (p_oDateTimeSeries.Count < 1)
|
||||
{
|
||||
throw new Exception("Can not initialize mock object. List must contain at least one date time.");
|
||||
}
|
||||
|
||||
m_iIndex = 0;
|
||||
m_oDateTimeSeries = p_oDateTimeSeries;
|
||||
}
|
||||
|
||||
public Func<DateTime> GetDateTime = () => m_oDateTimeSeries[m_iIndex < m_oDateTimeSeries.Count ? m_iIndex++ : m_iIndex = 0];
|
||||
}
|
||||
}
|
65
SharedBusinessLogic.Tests.Framework/LoginSessionCopriInfo.cs
Normal file
65
SharedBusinessLogic.Tests.Framework/LoginSessionCopriInfo.cs
Normal file
|
@ -0,0 +1,65 @@
|
|||
namespace SharedBusinessLogic.Tests
|
||||
{
|
||||
/// <summary>
|
||||
/// Object do define login session info from copri.
|
||||
/// </summary>
|
||||
public struct LoginSessionCopriInfo
|
||||
{
|
||||
public LoginSessionCopriInfo(
|
||||
string p_strMail,
|
||||
string p_strPwd,
|
||||
string p_strAuthCookie,
|
||||
string p_strDeviceId)
|
||||
{
|
||||
Mail = p_strMail;
|
||||
Pwd = p_strPwd;
|
||||
AuthCookie = p_strAuthCookie;
|
||||
DeviceId = p_strDeviceId;
|
||||
}
|
||||
|
||||
public string Mail { get; private set; }
|
||||
public string Pwd { get; private set; }
|
||||
public string AuthCookie { get; private set; }
|
||||
public string DeviceId { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// First test user which typically has some bikes.
|
||||
/// </summary>
|
||||
public static LoginSessionCopriInfo JavaministerHardwareNr1 = new LoginSessionCopriInfo(
|
||||
"javaminister@gmail.com",
|
||||
"javaminister",
|
||||
"6103_4da3044c8657a04ba60e2eaa753bc51a_",
|
||||
"HwId1000000000000"
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// First test user which typically has some bikes.
|
||||
/// </summary>
|
||||
public static LoginSessionCopriInfo SkiministerHardwareNr1 = new LoginSessionCopriInfo(
|
||||
"skiminister@posteo.de",
|
||||
"skiminister",
|
||||
"",
|
||||
"HwId1000000000000"
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// User which does not exist in copri.
|
||||
/// </summary>
|
||||
public static LoginSessionCopriInfo JavaministerGibtsNet = new LoginSessionCopriInfo(
|
||||
"javaminister@gmail.com.GibtsNet",
|
||||
"javaminister",
|
||||
"",
|
||||
"HwId1000000000000"
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// User which does not exist in copri.
|
||||
/// </summary>
|
||||
public static LoginSessionCopriInfo JavaministerKeksGibtsNet = new LoginSessionCopriInfo(
|
||||
"javaminister@gmail.com",
|
||||
"javaminister",
|
||||
"6103_ThisKeksDoesNotExist_",
|
||||
"HwId1000000000000"
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
using ShareeBike.Model.Device;
|
||||
using Xamarin.Essentials;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Model.Device
|
||||
{
|
||||
public class DeviceMock : ISmartDevice
|
||||
{
|
||||
/// <summary>
|
||||
/// Holds the id of the device.
|
||||
/// </summary>
|
||||
private string m_strDeviceId = "522c6ff6886198fd";
|
||||
|
||||
public string Manufacturer => "Faiphone";
|
||||
|
||||
public string Model => "987";
|
||||
|
||||
public DevicePlatform Platform => DevicePlatform.UWP;
|
||||
|
||||
public string VersionText => "17.11";
|
||||
|
||||
/// <summary>
|
||||
/// Constructs a device mock object setting device id to default value.
|
||||
/// </summary>
|
||||
public DeviceMock()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructs a device mock object.
|
||||
/// </summary>
|
||||
/// <param name="p_strDeviceId">Mocked Id</param>
|
||||
public DeviceMock(string p_strDeviceId)
|
||||
{
|
||||
m_strDeviceId = p_strDeviceId;
|
||||
}
|
||||
|
||||
/// <summary> Gets the device ID.</summary>
|
||||
/// <returns></returns>
|
||||
public string Identifier
|
||||
=> m_strDeviceId;
|
||||
|
||||
/// <summary> Close the application. </summary>
|
||||
public void CloseApplication()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
using ShareeBike.Model.Device;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Model.Device
|
||||
{
|
||||
public class SpecialFolderMock : ISpecialFolder
|
||||
{
|
||||
/// <summary>
|
||||
/// Get the folder name of external folder to write to.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetExternalFilesDir()
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary> Gets the folder name of the personal data folder dir on internal storage. </summary>
|
||||
/// <returns>Directory name.</returns>
|
||||
public string GetInternalPersonalDir()
|
||||
{
|
||||
return System.IO.Path.GetTempPath();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
using System.Threading.Tasks;
|
||||
using ShareeBike.Model.User.Account;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Model.User.Account
|
||||
{
|
||||
public class StoreMock : IStore
|
||||
{
|
||||
IAccount m_oAccount;
|
||||
|
||||
/// <summary>
|
||||
/// Instantiates
|
||||
/// - a dummy account to simulate a logged in user before end of last session
|
||||
/// - an empty account to simulate no user logged in before end of last session
|
||||
/// </summary>
|
||||
/// <param name="p_oAccount">If null no user is logged in.</param>
|
||||
public StoreMock(IAccount p_oAccount = null)
|
||||
{
|
||||
m_oAccount = new ShareeBike.Model.User.Account.Account(p_oAccount ?? new EmptyAccount());
|
||||
}
|
||||
|
||||
public Task<IAccount> Load()
|
||||
{
|
||||
return Task.FromResult<IAccount>(new ShareeBike.Model.User.Account.Account(m_oAccount));
|
||||
}
|
||||
|
||||
public IAccount Delete(IAccount p_oAccount)
|
||||
{
|
||||
// Set member to empty.
|
||||
m_oAccount = new EmptyAccount();
|
||||
|
||||
// Return empty account.
|
||||
return new EmptyAccount();
|
||||
}
|
||||
|
||||
public Task Save(IAccount p_oAccount)
|
||||
{
|
||||
m_oAccount = new ShareeBike.Model.User.Account.Account(p_oAccount);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,341 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using ShareeBike.Model;
|
||||
using ShareeBike.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using ShareeBike.Model.Connector;
|
||||
using ShareeBike.Repository;
|
||||
using ShareeBike.Repository.Request;
|
||||
using ShareeBike.Repository.Response;
|
||||
using ShareeBike.Repository.Response.Stations;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Repository
|
||||
{
|
||||
/// <summary> Provides functionality for keeping a set of COPRI responses. </summary>
|
||||
public abstract class CopriCallMemoryBase
|
||||
{
|
||||
private string BikesAvailableResponse { get; }
|
||||
|
||||
private string BikesOccupiedResponse { get; }
|
||||
|
||||
private string AuthResponse { get; }
|
||||
|
||||
private string AuthOutResponse { get; }
|
||||
|
||||
private string Stations { get; }
|
||||
|
||||
private string BookingRequestResponse { get; }
|
||||
|
||||
private string CancelBookingRequestResponse { get; }
|
||||
|
||||
private IRequestBuilder requestBuilder;
|
||||
|
||||
/// <summary>
|
||||
/// Constructs copri server mock from build in resources.
|
||||
/// </summary>
|
||||
/// <param name="bikesAvailableResponseResource"></param>
|
||||
/// <param name="bikesOccupiedResponseResoure"></param>
|
||||
/// <param name="authResponseResource"></param>
|
||||
/// <param name="authOutResponseResource"></param>
|
||||
/// <param name="stationsResponseResource"></param>
|
||||
/// <param name="bookingRequestResponseResource"></param>
|
||||
/// <param name="cancelBookingRequestResponseResource"></param>
|
||||
/// <param name="sessionCookie">Session cookie.</param>
|
||||
/// <param name="merchantId">Merchant identifier.</param>
|
||||
public CopriCallMemoryBase(
|
||||
string bikesAvailableResponseResource = null,
|
||||
string bikesOccupiedResponseResoure = null,
|
||||
string authResponseResource = null,
|
||||
string authOutResponseResource = null,
|
||||
string stationsResponseResource = null,
|
||||
string bookingRequestResponseResource = null,
|
||||
string cancelBookingRequestResponseResource = null,
|
||||
string sessionCookie = null,
|
||||
string merchantId = null)
|
||||
{
|
||||
string ReadResource(string resourceName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(resourceName))
|
||||
return string.Empty;
|
||||
|
||||
using (var streamReader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)))
|
||||
{
|
||||
return streamReader.ReadToEnd();
|
||||
}
|
||||
}
|
||||
|
||||
MerchantId = merchantId ?? ShareeBikeApp.MerchantId;
|
||||
|
||||
SessionCookie = sessionCookie;
|
||||
|
||||
BikesAvailableResponse = ReadResource(bikesAvailableResponseResource);
|
||||
BikesOccupiedResponse = ReadResource(bikesOccupiedResponseResoure);
|
||||
AuthResponse = ReadResource(authResponseResource);
|
||||
AuthOutResponse = ReadResource(authOutResponseResource);
|
||||
Stations = ReadResource(stationsResponseResource);
|
||||
BookingRequestResponse = ReadResource(bookingRequestResponseResource);
|
||||
CancelBookingRequestResponse = ReadResource(cancelBookingRequestResponseResource);
|
||||
|
||||
requestBuilder = string.IsNullOrEmpty(sessionCookie)
|
||||
? new RequestBuilder(merchantId ?? MerchantId, null /*UI language */) as IRequestBuilder
|
||||
: new RequestBuilderLoggedIn(merchantId ?? MerchantId, null /*UI language */, sessionCookie);
|
||||
}
|
||||
|
||||
/// <summary> Holds the session id of the logged in user, null otherwise. </summary>
|
||||
public string SessionCookie { get; private set; }
|
||||
|
||||
/// <summary> Logs user in. </summary>
|
||||
/// <param name="p_oUser">User to log in.</param>
|
||||
/// <param name="deviceId">Id specifying user and hardware.</param>
|
||||
/// <param name="mailAddress">Mail address of user to log in.</param>
|
||||
/// <param name="password">Password to log in.</param>
|
||||
/// <remarks>Response which holds auth cookie <see cref="ResponseBase.authcookie"/></remarks>
|
||||
public async Task<AuthorizationResponse> DoAuthorizationAsync(
|
||||
string mailAddress,
|
||||
string password,
|
||||
string deviceId)
|
||||
=> await Task.Run(() => DoAuthorize(AuthResponse, mailAddress, password, deviceId));
|
||||
|
||||
/// <summary> Logs user out. </summary>
|
||||
/// <param name="sessionCookie">User to log in.</param>
|
||||
/// <remarks>Response which holds auth cookie <see cref="ResponseBase.authcookie"/></remarks>
|
||||
public async Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
=> await Task.Run(() => DoAuthout(AuthOutResponse, SessionCookie));
|
||||
|
||||
/// <summary>
|
||||
/// Gets list of bikes from memory.
|
||||
/// </summary>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <returns></returns>
|
||||
public async Task<BikesAvailableResponse> GetBikesAvailableAsync(Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
=> await Task.Run(() => GetBikesAvailable(
|
||||
BikesAvailableResponse,
|
||||
null /* merchant id*/,
|
||||
SessionCookie,
|
||||
operatorUri,
|
||||
stationId,
|
||||
bikeId));
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of bikes reserved/ booked by active user from Copri.
|
||||
/// </summary>
|
||||
/// <param name="p_strSessionCookie">Cookie to authenticate user.</param>
|
||||
/// <returns>Response holding list of bikes.</returns>
|
||||
public async Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
requestBuilder.GetBikesOccupied(); // Non mock implementation if ICopriServer call this member as well. To ensure comparable behavior this member is called here as well.
|
||||
}
|
||||
catch (NotSupportedException)
|
||||
{
|
||||
// No user logged in.
|
||||
await Task.CompletedTask;
|
||||
return ResponseHelper.GetBikesOccupiedNone();
|
||||
}
|
||||
return await Task.Run(() => GetBikesOccupied(BikesOccupiedResponse, SessionCookie));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get list of stations from file.
|
||||
/// </summary>
|
||||
/// <param name="cookie">Auto cookie of user if user is logged in.</param>
|
||||
/// <returns>List of files.</returns>
|
||||
public async Task<StationsAvailableResponse> GetStationsAsync()
|
||||
=> await Task.Run(() => GetStationsAll(Stations, null, SessionCookie));
|
||||
|
||||
/// <summary>
|
||||
/// Gets booking request response.
|
||||
/// </summary>
|
||||
/// <param name="bikeId">Id of the bike to book.</param>
|
||||
/// <returns>Booking response.</returns>
|
||||
public async Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
=> await Task.Run(() => DoReserve(BookingRequestResponse, bikeId, SessionCookie));
|
||||
|
||||
/// <summary>
|
||||
/// Gets cancel booking request response.
|
||||
/// </summary>
|
||||
/// <param name="bikeId">Id of the bike to book.</param>
|
||||
/// <param name="cookie">Cookie of the logged in user.</param>
|
||||
/// <returns>Response on cancel booking request.</returns>
|
||||
public async Task<BookingActionResponse> DoCancelReservationAsync(string bikeId, Uri operatorUri)
|
||||
=> await Task.Run(() => DoCancelReservation(CancelBookingRequestResponse, bikeId, SessionCookie));
|
||||
|
||||
|
||||
/// <summary> Gets the merchant id.</summary>
|
||||
public string MerchantId { get; }
|
||||
|
||||
/// <summary> Returns false because cached values are returned. </summary>
|
||||
public bool IsConnected => false;
|
||||
|
||||
/// <summary> Logs user in. </summary>
|
||||
/// <param name="deviceId">Id specifying user and hardware.</param>
|
||||
/// <param name="mailAddress">Mail address of user to log in.</param>
|
||||
/// <param name="password">Password to log in.</param>
|
||||
/// <remarks>Response which holds auth cookie <see cref="ResponseBase.authcookie"/></remarks>
|
||||
public static AuthorizationResponse DoAuthorize(
|
||||
string doAuthResponse,
|
||||
string mailAddress,
|
||||
string password,
|
||||
string deviceId)
|
||||
{
|
||||
return mailAddress == "javaminister@gmail.com"
|
||||
&& password == "*********" &&
|
||||
deviceId == "HwId1000000000000"
|
||||
? JsonConvertRethrow.DeserializeObject<ResponseContainer<AuthorizationResponse>>(doAuthResponse).shareejson
|
||||
: JsonConvertRethrow.DeserializeObject<ResponseContainer<AuthorizationResponse>>(DO_AUTH_Unknown_User_FILE).shareejson;
|
||||
|
||||
}
|
||||
|
||||
/// <summary> Logs user in. </summary>
|
||||
/// <remarks>Response which holds auth cookie <see cref="ResponseBase.authcookie"/></remarks>
|
||||
public static AuthorizationoutResponse DoAuthout(
|
||||
string authOutResponse,
|
||||
string sessionCookie)
|
||||
{
|
||||
// Response contains auth cookie of user "JavaministerHardwareNr1"
|
||||
// For this reason do not return answer if mail and pwd do not match.
|
||||
|
||||
return !string.IsNullOrEmpty(sessionCookie)
|
||||
? JsonConvertRethrow.DeserializeObject<ResponseContainer<AuthorizationoutResponse>>(authOutResponse).shareejson
|
||||
: throw new NotSupportedException();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets list of bikes from memory.
|
||||
/// </summary>
|
||||
/// <param name="merchantId">Id of the merchant.</param>
|
||||
/// <param name="sessionCookie">Auto cookie of user if user is logged in.</param>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <returns></returns>
|
||||
public static BikesAvailableResponse GetBikesAvailable(
|
||||
string BikesAvailableResponse,
|
||||
string merchantId,
|
||||
string sessionCookie = null,
|
||||
Uri operatorUri = null,
|
||||
string stationId = null,
|
||||
string bikeid = null)
|
||||
{
|
||||
return CopriCallsStatic.DeserializeResponse<BikesAvailableResponse>(BikesAvailableResponse)
|
||||
.FilterByStation(stationId)
|
||||
.FilterByBike(bikeid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets stations response.
|
||||
/// </summary>
|
||||
/// <param name="merchantId">Id of the merchant.</param>
|
||||
/// <param name="cookie">Auto cookie of user if user is logged in.</param>
|
||||
/// <param name="p_eSampleSet"></param>
|
||||
/// <param name="p_lStageIndex"></param>
|
||||
/// <returns></returns>
|
||||
public static StationsAvailableResponse GetStationsAll(
|
||||
string stations,
|
||||
string merchantId,
|
||||
string cookie = null)
|
||||
=> JsonConvertRethrow.DeserializeObject<ResponseContainer<StationsAvailableResponse>>(stations).shareejson;
|
||||
|
||||
/// <summary>
|
||||
/// Gets booking request response.
|
||||
/// </summary>
|
||||
/// <param name="bikeId">Id of the bike.</param>
|
||||
/// <param name="sessionCookie">Identifies the logged in user.</param>
|
||||
/// <param name="sampleSet">Sample set to use.</param>
|
||||
/// <param name="stageIndex">Index of the stage.</param>
|
||||
/// <returns></returns>
|
||||
public static ReservationBookingResponse DoReserve(
|
||||
string bookingRequestResponse,
|
||||
string bikeId,
|
||||
string sessionCookie)
|
||||
=> JsonConvertRethrow.DeserializeObject<ResponseContainer<ReservationBookingResponse>>(bookingRequestResponse).shareejson;
|
||||
|
||||
/// <summary>
|
||||
/// Gets cancel booking request response.
|
||||
/// </summary>
|
||||
/// <param name="bikeId">Id of the bike to book.</param>
|
||||
/// <param name="cookie">Cookie of the logged in user.</param>
|
||||
/// <returns>Response on cancel booking request.</returns>
|
||||
public static BookingActionResponse DoCancelReservation(
|
||||
string cancelBookingRequestResponse,
|
||||
string bikeId,
|
||||
string cookie)
|
||||
=> JsonConvertRethrow.DeserializeObject<ResponseContainer<BookingActionResponse>>(cancelBookingRequestResponse).shareejson;
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryLevel,
|
||||
IVersionInfo versionInfo)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> null;
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(
|
||||
string bikeId,
|
||||
LocationDto geolocation,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of bikes reserved/ booked by active user from Copri.
|
||||
/// </summary>
|
||||
/// <param name="sessionCookie">Cookie to authenticate user.</param>
|
||||
/// <param name="SampleSet">Sample set to use.</param>
|
||||
/// <param name="p_lStageIndex">Index of the stage.</param>
|
||||
/// <returns>Response holding list of bikes.</returns>
|
||||
public static BikesReservedOccupiedResponse GetBikesOccupied(
|
||||
string bikesOccupied,
|
||||
string sessionCookie = null)
|
||||
{
|
||||
var response = CopriCallsStatic.DeserializeResponse<BikesReservedOccupiedResponse>(bikesOccupied);
|
||||
return sessionCookie != null && (response?.authcookie?.Contains(sessionCookie) ?? false)
|
||||
? response
|
||||
: ResponseHelper.GetBikesOccupiedNone(sessionCookie);
|
||||
|
||||
}
|
||||
|
||||
public const string DO_AUTH_Unknown_User_FILE = @"
|
||||
{
|
||||
""shareejson"" : {
|
||||
""response"" : ""authorization"",
|
||||
""authcookie"" : 0,
|
||||
""response_state"" : ""Failure: cannot generate authcookie"",
|
||||
""apiserver"" : ""https://tinkwwp.copri-bike.de""
|
||||
}
|
||||
}";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,158 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using ShareeBike.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using ShareeBike.Model.Connector;
|
||||
using ShareeBike.Model.Services.CopriApi;
|
||||
using ShareeBike.MultilingualResources;
|
||||
using ShareeBike.Repository;
|
||||
using ShareeBike.Repository.Request;
|
||||
using ShareeBike.Repository.Response;
|
||||
using ShareeBike.Repository.Response.Stations;
|
||||
using static ShareeBike.Repository.CopriCallsMemory;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Repository
|
||||
{
|
||||
/// <summary> Allows use of memory for retrieving defined responses.</summary>
|
||||
public class CopriCallsCacheMemory : ICopriCache
|
||||
{
|
||||
private CopriCallsMemory server;
|
||||
|
||||
public CopriCallsCacheMemory(
|
||||
string merchantId,
|
||||
SampleSets? sampleSet = null,
|
||||
int? index = null,
|
||||
string sessionCookie = null)
|
||||
{
|
||||
server = new CopriCallsMemory(merchantId, sampleSet, index, sessionCookie);
|
||||
}
|
||||
|
||||
public bool IsStationsExpired => true;
|
||||
|
||||
public bool IsBikesAvailableExpired => true;
|
||||
|
||||
public bool IsBikesOccupiedExpired => true;
|
||||
|
||||
public bool IsConnected => server.IsConnected;
|
||||
|
||||
public string SessionCookie => server.SessionCookie;
|
||||
|
||||
public string MerchantId => server.MerchantId;
|
||||
|
||||
public void AddToCache(StationsAvailableResponse stations)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary> Adds a bikes response to cache.</summary>
|
||||
/// <param name="bikes">Bikes to add.</param>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which was used for filtering bikes. Null if no filtering was applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which was used for filtering bikes. Null if no filtering was applied.</param>
|
||||
public void AddToCache(BikesAvailableResponse bikes, Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesReservedOccupiedResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public Task<AuthorizationResponse> DoAuthorizationAsync(string p_strMailAddress, string p_strPassword, string p_strDeviceId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<BookingActionResponse> DoCancelReservationAsync(string p_iBikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotSupportedException();
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryPercentage,
|
||||
IVersionInfo versionInfo)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Returns a bike and starts closing. </summary>
|
||||
/// <param name="bikeId">Id of the bike to return.</param>
|
||||
/// <param name="smartDevice">Provides info about hard and software.</param>
|
||||
/// <param name="operatorUri">Holds the uri of the operator or null, in case of single operator setup.</param>
|
||||
/// <returns>Response on returning request.</returns>
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new System.Exception(AppResources.ErrorNoWeb);
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Gets a list of bikes from Copri. </summary>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <returns>Response holding list of bikes.</returns>
|
||||
public Task<BikesAvailableResponse> GetBikesAvailableAsync(Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
=> server.GetBikesAvailableAsync(operatorUri, stationId, bikeId);
|
||||
|
||||
public Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
return server.GetBikesOccupiedAsync();
|
||||
}
|
||||
|
||||
public Task<StationsAvailableResponse> GetStationsAsync()
|
||||
{
|
||||
return server.GetStationsAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates cache from bike which changed rental state.
|
||||
/// </summary>
|
||||
/// <param name="response">Response to update from.</param>
|
||||
public void Update(BikeInfoReservedOrBooked response)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Updates cache from bike which changed rental state (reservation/ booking canceled). </summary>
|
||||
public void Update(BookingActionResponse response)
|
||||
=> throw new NotImplementedException();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,146 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using ShareeBike.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using ShareeBike.Model.Connector;
|
||||
using ShareeBike.Model.Services.CopriApi;
|
||||
using ShareeBike.Repository.Request;
|
||||
using ShareeBike.Repository.Response;
|
||||
using ShareeBike.Repository.Response.Stations;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Repository
|
||||
{
|
||||
/// <summary> Allows use of memory for retrieving defined responses.</summary>
|
||||
public class CopriCallsCacheMemory001 : ICopriCache
|
||||
{
|
||||
private CopriCallsMemory001 server;
|
||||
|
||||
public CopriCallsCacheMemory001(string sessionCookie = null)
|
||||
{
|
||||
server = new CopriCallsMemory001(sessionCookie);
|
||||
}
|
||||
|
||||
public bool IsStationsExpired => true;
|
||||
|
||||
public bool IsBikesAvailableExpired => true;
|
||||
|
||||
public bool IsBikesOccupiedExpired => true;
|
||||
|
||||
public bool IsConnected => server.IsConnected;
|
||||
|
||||
public string SessionCookie => server.SessionCookie;
|
||||
|
||||
public string MerchantId => server.MerchantId;
|
||||
|
||||
public void AddToCache(StationsAvailableResponse stations)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary> Adds a bikes response to cache.</summary>
|
||||
/// <param name="bikes">Bikes to add.</param>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which was used for filtering bikes. Null if no filtering was applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which was used for filtering bikes. Null if no filtering was applied.</param>
|
||||
public void AddToCache(BikesAvailableResponse bikes, Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesReservedOccupiedResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public Task<AuthorizationResponse> DoAuthorizationAsync(string p_strMailAddress, string p_strPassword, string p_strDeviceId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<BookingActionResponse> DoCancelReservationAsync(string p_iBikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotSupportedException();
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryPercentage,
|
||||
IVersionInfo versionInfo)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Gets a list of bikes from Copri. </summary>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <returns>Response holding list of bikes.</returns>
|
||||
public Task<BikesAvailableResponse> GetBikesAvailableAsync(Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
=> server.GetBikesAvailableAsync(operatorUri, stationId, bikeId);
|
||||
|
||||
public Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
return server.GetBikesOccupiedAsync();
|
||||
}
|
||||
|
||||
public Task<StationsAvailableResponse> GetStationsAsync()
|
||||
{
|
||||
return server.GetStationsAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates cache from bike which changed rental state.
|
||||
/// </summary>
|
||||
/// <param name="response">Response to update from.</param>
|
||||
public void Update(BikeInfoReservedOrBooked response)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Updates cache from bike which changed rental state (reservation/ booking canceled). </summary>
|
||||
public void Update(BookingActionResponse response)
|
||||
=> throw new NotImplementedException();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,145 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using ShareeBike.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using ShareeBike.Model.Connector;
|
||||
using ShareeBike.Repository.Request;
|
||||
using ShareeBike.Repository.Response.Stations;
|
||||
using ShareeBike.Repository.Response;
|
||||
using ShareeBike.Model.Services.CopriApi;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Repository
|
||||
{
|
||||
public class CopriCallsCacheMemory001v2NotLoggedIn : ICopriCache
|
||||
{
|
||||
private CopriCallsMemory001v2NotLoggedIn server;
|
||||
|
||||
public CopriCallsCacheMemory001v2NotLoggedIn(string sessionCookie = null)
|
||||
{
|
||||
server = new CopriCallsMemory001v2NotLoggedIn(sessionCookie);
|
||||
}
|
||||
|
||||
public bool IsStationsExpired => true;
|
||||
|
||||
public bool IsBikesAvailableExpired => true;
|
||||
|
||||
public bool IsBikesOccupiedExpired => true;
|
||||
|
||||
public bool IsConnected => server.IsConnected;
|
||||
|
||||
public string SessionCookie => server.SessionCookie;
|
||||
|
||||
public string MerchantId => server.MerchantId;
|
||||
|
||||
public void AddToCache(StationsAvailableResponse stations)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary> Adds a bikes response to cache.</summary>
|
||||
/// <param name="bikes">Bikes to add.</param>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which was used for filtering bikes. Null if no filtering was applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which was used for filtering bikes. Null if no filtering was applied.</param>
|
||||
public void AddToCache(BikesAvailableResponse bikes, Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesReservedOccupiedResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public Task<AuthorizationResponse> DoAuthorizationAsync(string p_strMailAddress, string p_strPassword, string p_strDeviceId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<BookingActionResponse> DoCancelReservationAsync(string p_iBikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotSupportedException();
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryPercentage,
|
||||
IVersionInfo versionInfo)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Gets a list of bikes from Copri. </summary>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <returns>Response holding list of bikes.</returns>
|
||||
public Task<BikesAvailableResponse> GetBikesAvailableAsync(Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
=> server.GetBikesAvailableAsync(operatorUri, stationId, bikeId);
|
||||
|
||||
public Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
return server.GetBikesOccupiedAsync();
|
||||
}
|
||||
|
||||
public Task<StationsAvailableResponse> GetStationsAsync()
|
||||
{
|
||||
return server.GetStationsAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates cache from bike which changed rental state.
|
||||
/// </summary>
|
||||
/// <param name="response">Response to update from.</param>
|
||||
public void Update(BikeInfoReservedOrBooked response)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Updates cache from bike which changed rental state (reservation/ booking canceled). </summary>
|
||||
public void Update(BookingActionResponse response)
|
||||
=> throw new NotImplementedException();
|
||||
}
|
||||
}
|
1791
SharedBusinessLogic.Tests.Framework/Repository/CopriCallsMemory.cs
Normal file
1791
SharedBusinessLogic.Tests.Framework/Repository/CopriCallsMemory.cs
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,24 @@
|
|||
using ShareeBike.Repository;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Repository
|
||||
{
|
||||
/// <summary>
|
||||
/// Holds some COPRI responses for testing purposes.
|
||||
/// </summary>
|
||||
/// <remarks> Holds some demo LastenradBayern bikes
|
||||
/// </remarks>
|
||||
public class CopriCallsMemory001 : CopriCallMemoryBase, ICopriServer
|
||||
{
|
||||
/// <param name="sessionCookie">Session cookie.</param>
|
||||
/// <param name="merchantId">Merchant identifier.</param>
|
||||
public CopriCallsMemory001(string sessionCookie = null, string merchantId = null) : base(
|
||||
bikesAvailableResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001.BikesAvailableResponse.json",
|
||||
bikesOccupiedResponseResoure: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001.BikesOccupiedResponse.json",
|
||||
authResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001.AuthorizationResponse.json",
|
||||
authOutResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001.AuthoutResponse.json",
|
||||
stationsResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001.StationsAvailable.json",
|
||||
sessionCookie: sessionCookie,
|
||||
merchantId: merchantId)
|
||||
{ }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"clearing_cache": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"user_id": "javaminister@gmail.com",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_name": "sharee.bike | TeilRad GmbH",
|
||||
"operator_hours": "B<>rozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_phone": "+49 761 45370097",
|
||||
"operator_email": "hotline@sharee.bike",
|
||||
"operator_color": "#009699"
|
||||
},
|
||||
"response": "authorization",
|
||||
"agb_checked": "0",
|
||||
"agb_html": "site/agb.html",
|
||||
"response_text": "Herzlich willkommen im Fahrradmietsystem",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"response_state": "OK, nothing todo",
|
||||
"new_authcoo": "1",
|
||||
"user_tour": [],
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"user_group": []
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"copri_version": "4.1.8.21",
|
||||
"authcookie": "1",
|
||||
"user_tour": [],
|
||||
"user_group": null,
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"response_state": "OK, logout",
|
||||
"new_authcoo": "0",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_hours": "Bürozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_name": "sharee.bike | TeilRad GmbH",
|
||||
"operator_email": "hotline@sharee.bike",
|
||||
"operator_phone": "+49 761 45370097",
|
||||
"operator_color": "#009699"
|
||||
},
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"impress_html": "site/impress.html",
|
||||
"response_text": "Auf Wiedersehen.",
|
||||
"agb_html": "site/agb.html",
|
||||
"response": "authout",
|
||||
"agb_checked": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"clearing_cache": "0",
|
||||
"user_id": "javaminister@gmail.com"
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,270 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"agb_checked": "1",
|
||||
"response": "bikes_available",
|
||||
"agb_html": "site/agb.html",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_color": "#008dd2",
|
||||
"operator_email": "hotline@lastenraddemo.bayern",
|
||||
"operator_phone": "+49 089 / 111111111",
|
||||
"operator_name": "Lastenrad Bayern",
|
||||
"operator_hours": "Bürozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_logo": ""
|
||||
},
|
||||
"user_id": "ohauff@posteo.de",
|
||||
"clearing_cache": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"bikes": {
|
||||
// Entry manually created (copy-paste). Might contain dupe entries (2021-11-12).
|
||||
"FR9999": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR103",
|
||||
"description": "Quest Carbon",
|
||||
"Ilockit_ID": "ISHAREIT-9999999",
|
||||
"authed": "1",
|
||||
"bike": "FR9999",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
// Entry manually created (copy-paste). Might contain dupe entries (2021-11-12).
|
||||
"FR9998": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Bacchetta Giro",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR103",
|
||||
"description": "Quest Carbon",
|
||||
"Ilockit_ID": "ISHAREIT-9999999",
|
||||
"authed": "1",
|
||||
"bike": "FR9998",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
"FR1543": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR101",
|
||||
"description": "Contributor-bike Dominik",
|
||||
"Ilockit_ID": "ISHAREIT-2200543",
|
||||
"authed": "1",
|
||||
"bike": "FR1543",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
"FR1003": {
|
||||
"bike": "FR1003",
|
||||
"authed": "1",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"Ilockit_ID": "ISHAREIT-2200545",
|
||||
"station": "FR101",
|
||||
"description": "Stadtrad",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"number": "5491",
|
||||
"eur_per_hour": "2.00",
|
||||
"1003": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic"
|
||||
},
|
||||
"state": "available",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-e38bf9d32234",
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255772",
|
||||
"latitude": "47.9765188"
|
||||
},
|
||||
"lock_state": "locked"
|
||||
},
|
||||
"FR1540": {
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"Ilockit_ID": "ISHAREIT-2200540",
|
||||
"description": "Contributor-bike Dieter",
|
||||
"station": "FR101",
|
||||
"bike": "FR1540",
|
||||
"authed": "1",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-fc3c002a2add",
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8256267",
|
||||
"latitude": "47.976803"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"tariff_description": {
|
||||
"1540": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"max_eur_per_day": "10.00",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494"
|
||||
},
|
||||
"state": "available"
|
||||
},
|
||||
"FR1002": {
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"description": "Lasten-Dreirad",
|
||||
"station": "FR101",
|
||||
"Ilockit_ID": "ISHAREIT-2200539",
|
||||
"authed": "1",
|
||||
"bike": "FR1002",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"gps": {
|
||||
"latitude": "47.976552",
|
||||
"longitude": "7.8255068"
|
||||
},
|
||||
"system": "Ilockit",
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-f0b4a692e169",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"1002": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"eur_per_hour": "2.00",
|
||||
"number": "5491",
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic"
|
||||
}
|
||||
},
|
||||
"FR1538": {
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"authed": "1",
|
||||
"bike": "FR1538",
|
||||
"station": "FR105",
|
||||
"description": "Contributor-bike Rainer",
|
||||
"Ilockit_ID": "ISHAREIT-2200538",
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1538": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic"
|
||||
},
|
||||
"gps": {
|
||||
"latitude": "47.9275957",
|
||||
"longitude": "7.973976"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"system": "Ilockit",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-db0319a2555b"
|
||||
},
|
||||
"FR1001": {
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"station": "FR101",
|
||||
"description": "Lastenrad",
|
||||
"Ilockit_ID": "ISHAREIT-2200536",
|
||||
"authed": "1",
|
||||
"bike": "FR1001",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"lock_state": "locked",
|
||||
"gps": {
|
||||
"latitude": "47.9765091",
|
||||
"longitude": "7.8255631"
|
||||
},
|
||||
"system": "Ilockit",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-caa87760e53e",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic",
|
||||
"eur_per_hour": "2.00",
|
||||
"number": "5491",
|
||||
"max_eur_per_day": "10.00",
|
||||
"1001": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user_group": [
|
||||
"FR300103",
|
||||
"FR300101"
|
||||
],
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"user_tour": [],
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"response_state": "OK, nothing todo",
|
||||
"new_authcoo": "0",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,107 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"user_tour": [],
|
||||
"user_group": [
|
||||
"FR300103",
|
||||
"FR300101"
|
||||
],
|
||||
"bikes_occupied": {
|
||||
"157056": {
|
||||
"K_seed": "[-20, -104, -112, -49, 3, -74, -43, -115, -53, 34, -48, -29, -64, -90, -26, -74]",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"bike": "FR1544",
|
||||
"unit_price": "3.00",
|
||||
"description": "Contributor-Paul",
|
||||
"station": "FR103",
|
||||
"request_time": "2021-11-06 18:57:20.034438+01",
|
||||
"Ilockit_ID": "ISHAREIT-2200544",
|
||||
"total_price": "25.50",
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"K_u": "[43, -16, 72, -5, 23, -117, 43, 57, 124, -106, -115, 97, -93, -30, -34, -7, -21, 119, 109, 92, 0, 0, 0, 0]",
|
||||
"computed_hours": "8.50",
|
||||
"end_time": "2021-11-08 21:14:35",
|
||||
"state": "occupied",
|
||||
"tariff_description": {
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"max_eur_per_day": "10.00",
|
||||
"name": "Tester Basic",
|
||||
"free_hours": "0.50",
|
||||
"track_info": "Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!",
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"latitude": "47.9994661873206",
|
||||
"longitude": "7.7904340904206"
|
||||
},
|
||||
"real_hours": "50.2833333333333",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-dc969f648732",
|
||||
"start_time": "2021-11-06 18:57:25.445447+01"
|
||||
},
|
||||
"157072": {
|
||||
"bike": "FR1004",
|
||||
"K_seed": "[-31, -81, -41, 95, 112, -113, -78, -22, 84, -112, -73, 31, -125, -49, 125, 10]",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"total_price": "0.00",
|
||||
"description": "Contributor-Recumbent",
|
||||
"station": "FR103",
|
||||
"request_time": "2021-11-08 21:10:24.829395+01",
|
||||
"Ilockit_ID": "ISHAREIT-2302373",
|
||||
"unit_price": "3.00",
|
||||
"end_time": "2021-11-08 21:10:00+01",
|
||||
"state": "requested",
|
||||
"tariff_description": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB).",
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"max_eur_per_day": "10.00",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494"
|
||||
},
|
||||
"computed_hours": "0",
|
||||
"K_u": "[126, -125, 125, 83, 104, -121, -80, 40, 77, -35, 81, 27, 89, -124, -37, 57, 118, -113, 71, -37, 0, 0, 0, 0]",
|
||||
"start_time": "2021-11-08 21:10:24.829395+01",
|
||||
"gps": {
|
||||
"latitude": "47.9980777",
|
||||
"longitude": "7.7848769"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"system": "Ilockit",
|
||||
"real_hours": "0",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-fe3962c08bcc"
|
||||
}
|
||||
},
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"debuglevel": "1",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"new_authcoo": "0",
|
||||
"response_state": "OK, nothing todo",
|
||||
"last_used_operator": {
|
||||
"operator_color": "#008dd2",
|
||||
"operator_phone": "+49 089 / 111111111",
|
||||
"operator_email": "hotline@lastenraddemo.bayern",
|
||||
"operator_hours": "Bürozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_name": "Lastenrad Bayern",
|
||||
"operator_logo": ""
|
||||
},
|
||||
"lang": "DE",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"agb_html": "site/agb.html",
|
||||
"response": "user_bikes_occupied",
|
||||
"agb_checked": "1",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"clearing_cache": "0",
|
||||
"user_id": "ohauff@posteo.de"
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,23 @@
|
|||
using ShareeBike.Repository;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Repository
|
||||
{
|
||||
/// <summary>
|
||||
/// Holds some COPRI responses for testing purposes.
|
||||
/// </summary>
|
||||
/// <remarks> Holds some demo LastenradBayern bikes
|
||||
/// </remarks>
|
||||
public class CopriCallsMemory001v2NotLoggedIn : CopriCallMemoryBase, ICopriServer
|
||||
{
|
||||
public CopriCallsMemory001v2NotLoggedIn(string sessionCookie = null, string merchantId = null) : base(
|
||||
bikesAvailableResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001v2NotLoggedIn.BikesAvailableResponse.json",
|
||||
bikesOccupiedResponseResoure: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001v2NotLoggedIn.BikesOccupiedResponse.json",
|
||||
authResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001v2NotLoggedIn.AuthorizationResponse.json",
|
||||
authOutResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001v2NotLoggedIn.AuthoutResponse.json",
|
||||
stationsResponseResource: "SharedBusinessLogic.Tests.Framework.Repository.CopriCallsMemory001v2NotLoggedIn.StationsAvailable.json",
|
||||
sessionCookie: sessionCookie,
|
||||
merchantId: merchantId)
|
||||
{ }
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"clearing_cache": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"user_id": "javaminister@gmail.com",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_name": "sharee.bike | TeilRad GmbH",
|
||||
"operator_hours": "B<>rozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_phone": "+49 761 45370097",
|
||||
"operator_email": "hotline@sharee.bike",
|
||||
"operator_color": "#009699"
|
||||
},
|
||||
"response": "authorization",
|
||||
"agb_checked": "0",
|
||||
"agb_html": "site/agb.html",
|
||||
"response_text": "Herzlich willkommen im Fahrradmietsystem",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"response_state": "OK, nothing todo",
|
||||
"new_authcoo": "1",
|
||||
"user_tour": [],
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"user_group": []
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"copri_version": "4.1.8.21",
|
||||
"authcookie": "1",
|
||||
"user_tour": [],
|
||||
"user_group": null,
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"response_state": "OK, logout",
|
||||
"new_authcoo": "0",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_hours": "Bürozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_name": "sharee.bike | TeilRad GmbH",
|
||||
"operator_email": "hotline@sharee.bike",
|
||||
"operator_phone": "+49 761 45370097",
|
||||
"operator_color": "#009699"
|
||||
},
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"impress_html": "site/impress.html",
|
||||
"response_text": "Auf Wiedersehen.",
|
||||
"agb_html": "site/agb.html",
|
||||
"response": "authout",
|
||||
"agb_checked": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"clearing_cache": "0",
|
||||
"user_id": "javaminister@gmail.com"
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,270 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"agb_checked": "1",
|
||||
"response": "bikes_available",
|
||||
"agb_html": "site/agb.html",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_color": "#008dd2",
|
||||
"operator_email": "hotline@lastenraddemo.bayern",
|
||||
"operator_phone": "+49 089 / 111111111",
|
||||
"operator_name": "Lastenrad Bayern",
|
||||
"operator_hours": "Bürozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_logo": ""
|
||||
},
|
||||
"user_id": "ohauff@posteo.de",
|
||||
"clearing_cache": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"bikes": {
|
||||
// Entry manually created (copy-paste). Might contain dupe entries (2021-11-12).
|
||||
"FR9999": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR103",
|
||||
"description": "Quest Carbon",
|
||||
"Ilockit_ID": "ISHAREIT-9999999",
|
||||
"authed": "1",
|
||||
"bike": "FR9999",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
// Entry manually created (copy-paste). Might contain dupe entries (2021-11-12).
|
||||
"FR9998": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Bacchetta Giro",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR103",
|
||||
"description": "Quest Carbon",
|
||||
"Ilockit_ID": "ISHAREIT-9999999",
|
||||
"authed": "1",
|
||||
"bike": "FR9998",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
"FR1543": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR101",
|
||||
"description": "Contributor-bike Dominik",
|
||||
"Ilockit_ID": "ISHAREIT-2200543",
|
||||
"authed": "1",
|
||||
"bike": "FR1543",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
"FR1003": {
|
||||
"bike": "FR1003",
|
||||
"authed": "1",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"Ilockit_ID": "ISHAREIT-2200545",
|
||||
"station": "FR101",
|
||||
"description": "Stadtrad",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"number": "5491",
|
||||
"eur_per_hour": "2.00",
|
||||
"1003": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic"
|
||||
},
|
||||
"state": "available",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-e38bf9d32234",
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255772",
|
||||
"latitude": "47.9765188"
|
||||
},
|
||||
"lock_state": "locked"
|
||||
},
|
||||
"FR1540": {
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"Ilockit_ID": "ISHAREIT-2200540",
|
||||
"description": "Contributor-bike Dieter",
|
||||
"station": "FR101",
|
||||
"bike": "FR1540",
|
||||
"authed": "1",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-fc3c002a2add",
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8256267",
|
||||
"latitude": "47.976803"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"tariff_description": {
|
||||
"1540": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"max_eur_per_day": "10.00",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494"
|
||||
},
|
||||
"state": "available"
|
||||
},
|
||||
"FR1002": {
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"description": "Lasten-Dreirad",
|
||||
"station": "FR101",
|
||||
"Ilockit_ID": "ISHAREIT-2200539",
|
||||
"authed": "1",
|
||||
"bike": "FR1002",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"gps": {
|
||||
"latitude": "47.976552",
|
||||
"longitude": "7.8255068"
|
||||
},
|
||||
"system": "Ilockit",
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-f0b4a692e169",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"1002": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"eur_per_hour": "2.00",
|
||||
"number": "5491",
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic"
|
||||
}
|
||||
},
|
||||
"FR1538": {
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"authed": "1",
|
||||
"bike": "FR1538",
|
||||
"station": "FR105",
|
||||
"description": "Contributor-bike Rainer",
|
||||
"Ilockit_ID": "ISHAREIT-2200538",
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1538": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic"
|
||||
},
|
||||
"gps": {
|
||||
"latitude": "47.9275957",
|
||||
"longitude": "7.973976"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"system": "Ilockit",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-db0319a2555b"
|
||||
},
|
||||
"FR1001": {
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"station": "FR101",
|
||||
"description": "Lastenrad",
|
||||
"Ilockit_ID": "ISHAREIT-2200536",
|
||||
"authed": "1",
|
||||
"bike": "FR1001",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"lock_state": "locked",
|
||||
"gps": {
|
||||
"latitude": "47.9765091",
|
||||
"longitude": "7.8255631"
|
||||
},
|
||||
"system": "Ilockit",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-caa87760e53e",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic",
|
||||
"eur_per_hour": "2.00",
|
||||
"number": "5491",
|
||||
"max_eur_per_day": "10.00",
|
||||
"1001": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user_group": [
|
||||
"FR300103",
|
||||
"FR300101"
|
||||
],
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"user_tour": [],
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"response_state": "OK, nothing todo",
|
||||
"new_authcoo": "0",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"user_tour": [],
|
||||
"user_group": [
|
||||
"FR300103",
|
||||
"FR300101"
|
||||
],
|
||||
"bikes_occupied": {
|
||||
},
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"debuglevel": "1",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"new_authcoo": "0",
|
||||
"response_state": "OK, nothing todo",
|
||||
"last_used_operator": {
|
||||
"operator_color": "#008dd2",
|
||||
"operator_phone": "+49 089 / 111111111",
|
||||
"operator_email": "hotline@lastenraddemo.bayern",
|
||||
"operator_hours": "B<>rozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_name": "Lastenrad Bayern",
|
||||
"operator_logo": ""
|
||||
},
|
||||
"lang": "DE",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"agb_html": "site/agb.html",
|
||||
"response": "user_bikes_occupied",
|
||||
"agb_checked": "1",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"clearing_cache": "0",
|
||||
"user_id": "ohauff@posteo.de"
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using ShareeBike.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using ShareeBike.Model.Connector;
|
||||
using ShareeBike.Model.Device;
|
||||
using ShareeBike.Repository;
|
||||
using ShareeBike.Repository.Request;
|
||||
using ShareeBike.Repository.Response;
|
||||
using ShareeBike.Repository.Response.Stations;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Repository
|
||||
{
|
||||
/// <summary> Simulates communication errors when connecting to copri.</summary>
|
||||
public class ExceptionServer : ICopriServer
|
||||
{
|
||||
private Func<string, Exception> ExceptionFactory { get; }
|
||||
|
||||
/// <summary> Constructs object.</summary>
|
||||
/// <param name="exceptionFactory"> Provides exceptions which are thrown when querying information from server.</param>
|
||||
public ExceptionServer(Func<string, Exception> exceptionFactory)
|
||||
{
|
||||
ExceptionFactory = exceptionFactory;
|
||||
}
|
||||
|
||||
public bool IsConnected => true;
|
||||
|
||||
public string SessionCookie => string.Empty;
|
||||
|
||||
public string MerchantId => string.Empty;
|
||||
|
||||
public Task<AuthorizationResponse> DoAuthorizationAsync(string p_strMailAddress, string p_strPassword, string p_strDeviceId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<BookingActionResponse> DoCancelReservationAsync(string p_iBikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryPercentage,
|
||||
IVersionInfo versionInfo)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Gets a list of bikes from Copri. </summary>
|
||||
/// <param name="operatorUri">Uri of the operator host to get bikes from or null if bikes have to be gotten form primary host.</param>
|
||||
/// <param name="stationId"> Id of station which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <param name="bikeId"> Id of bike which is used for filtering bikes. Null if no filtering should be applied.</param>
|
||||
/// <returns>Response holding list of bikes.</returns>
|
||||
public Task<BikesAvailableResponse> GetBikesAvailableAsync(Uri operatorUri = null, string stationId = null, string bikeId = null)
|
||||
=> throw ExceptionFactory($"Simulated error thrown at {nameof(GetBikesAvailableAsync)}.");
|
||||
|
||||
public Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
throw ExceptionFactory($"Simulated error thrown at {nameof(GetBikesOccupiedAsync)}.");
|
||||
}
|
||||
|
||||
public Task<StationsAvailableResponse> GetStationsAsync()
|
||||
{
|
||||
throw ExceptionFactory($"Simulated error thrown at {nameof(GetStationsAsync)}.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using ShareeBike.Model.Bikes;
|
||||
using ShareeBike.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using ShareeBike.Services.BluetoothLock;
|
||||
using ShareeBike.Services.BluetoothLock.Tdo;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Services.BluetoothLock
|
||||
{
|
||||
public class LocksServiceMock : ILocksService
|
||||
{
|
||||
/// <param name="connectTimeout">Timeout for connect operation of a single lock.</param>
|
||||
public async Task<IEnumerable<LockInfoTdo>> GetLocksStateAsync(IEnumerable<LockInfoAuthTdo> locksInfo, TimeSpan connectTimeout)
|
||||
{
|
||||
return await Task.FromResult(new List<LockInfoTdo>());
|
||||
}
|
||||
|
||||
/// <summary> Holds timeout values for series of connecting attempts to a lock or multiple locks. </summary>
|
||||
public ITimeOutProvider TimeOut { get; set; }
|
||||
|
||||
public void UpdateSimulation(BikeCollection bikes) { }
|
||||
|
||||
/// <summary> Opens lock.</summary>
|
||||
/// <param name="bike">Bike object to update.</param>
|
||||
public async Task<LockitLockingState?> OpenAsync(int lockId, byte[] copriKey) => await Task.FromResult(LockitLockingState.Open);
|
||||
|
||||
/// <summary> Closes lock.</summary>
|
||||
/// <param name="bike">Bike object to update.</param>
|
||||
public async Task<LockitLockingState?> CloseAsync(int lockId, byte[] copriKey) => await Task.FromResult(LockitLockingState.Closed);
|
||||
|
||||
/// <summary> Gets the state of a bike. </summary>
|
||||
/// <param name="lockId">Id of lockId to get state for.</param>
|
||||
/// <returns></returns>
|
||||
public async Task<LockitLockingState?> GetState(string lockId) => await Task.FromResult((LockitLockingState?)null);
|
||||
|
||||
/// <summary> Connects to lock.</summary>
|
||||
/// <param name="authInfo"> Info required to connect to lock.</param>
|
||||
/// <param name="connectTimeout">Timeout for connect operation.</param>
|
||||
public async Task<LockInfoTdo> ConnectAsync(LockInfoAuthTdo authInfo, TimeSpan connectTimeout)
|
||||
{
|
||||
return await Task.FromResult(new LockInfoTdo.Builder { Id = 12, Guid = new System.Guid("00000000-0000-0000-0000-000000000042"), State = null }.Build());
|
||||
}
|
||||
|
||||
/// <summary> Set sound settings.</summary>
|
||||
/// <param name="lockId">Id of lock to set sound settings.</param>
|
||||
public async Task<bool> SetSoundAsync(int lockId, SoundSettings settings)
|
||||
{
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary> Gets battery percentage.</summary>
|
||||
/// <param name="lockId">Id of lock to get info for.</param>
|
||||
public Task<double> GetBatteryPercentageAsync(int lockId)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
/// <summary> Sets whether alarm is on or off.</summary>
|
||||
/// <param name="lockId">Id of lock to get info from.</param>
|
||||
public async Task SetIsAlarmOffAsync(int lockId, bool activated)
|
||||
{
|
||||
await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary> Gets whether alarm is on or off.</summary>
|
||||
/// <param name="lockId">Id of lock to get info for.</param>
|
||||
public async Task<bool> GetIsAlarmOffAsync(int lockId)
|
||||
{
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>Gets a lock by bike Id.</summary>
|
||||
/// <param name="bikeId"></param>
|
||||
/// <returns>Lock object</returns>
|
||||
public ILockService this[int bikeId]
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Task<LockingState> DisconnectAsync(int bikeId, Guid bikeGuid) => throw new NotSupportedException();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using ShareeBike.Services.Geolocation;
|
||||
using Xamarin.Essentials;
|
||||
|
||||
namespace SharedBusinessLogic.Tests.Framework.Model.Services.Geolocation
|
||||
{
|
||||
public class GeolocationMock : IGeolocationService
|
||||
{
|
||||
|
||||
public Task<IGeolocation> GetAsync(CancellationToken? cancelToken = null, DateTime? timeStamp = null)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <summary> If true location data returned is simulated.</summary>
|
||||
public bool IsSimulation { get => true; }
|
||||
|
||||
public bool IsGeolcationEnabled => true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Repository\CopriCallsMemory001v2NotLoggedIn\AuthorizationResponse.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001v2NotLoggedIn\AuthoutResponse.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001v2NotLoggedIn\BikesAvailableResponse.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001v2NotLoggedIn\BikesOccupiedResponse.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001v2NotLoggedIn\StationsAvailable.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001v2NotLoggedIn\StationsAvailableNotLoggedIn.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001\AuthorizationResponse.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001\AuthoutResponse.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001\BikesOccupiedResponse.json" />
|
||||
<None Remove="Repository\CopriCallsMemory001\StationsAvailable.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001v2NotLoggedIn\AuthorizationResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001v2NotLoggedIn\AuthoutResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001v2NotLoggedIn\BikesAvailableResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001v2NotLoggedIn\BikesOccupiedResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001v2NotLoggedIn\StationsAvailable.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001\AuthorizationResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001\AuthoutResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001\BikesAvailableResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001\BikesOccupiedResponse.json" />
|
||||
<EmbeddedResource Include="Repository\CopriCallsMemory001\StationsAvailable.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Model\Device\" />
|
||||
<Folder Include="Model\User\Account\" />
|
||||
<Folder Include="Services\BluetoothLock\" />
|
||||
<Folder Include="Services\Geolocation\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SharedBusinessLogic\SharedBusinessLogic.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,253 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32014.148
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharedBusinessLogic", "..\SharedBusinessLogic\SharedBusinessLogic.csproj", "{B77F4222-0860-4494-A07C-EE8E09FA9983}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharedBusinessLogic.Tests.Framework", "SharedBusinessLogic.Tests.Framework.csproj", "{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D5B69C6F-3413-4773-923E-21A65B21C3A3}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\.editorconfig = ..\.editorconfig
|
||||
..\.vsspell = ..\.vsspell
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockIt.BusinessLogic", "..\LockIt.BusinessLogic\LockIt.BusinessLogic.csproj", "{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockIt.BLE", "..\LockIt.BLE\LockIt.BLE.csproj", "{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1EB6AC57-4829-4C7E-9AF9-2345C3A7B5EE}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2B427A2D-F898-4A9C-AFE7-2C890E13B6AF}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C6529CD7-C3F7-4E80-89B5-002E2B8E3EB5}
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
Policies = $0
|
||||
$0.DotNetNamingPolicy = $1
|
||||
$1.DirectoryNamespaceAssociation = PrefixedHierarchical
|
||||
version = 3.0
|
||||
EndGlobalSection
|
||||
EndGlobal
|
13
SharedBusinessLogic.Tests.Framework/TestFrameworkCore.csproj
Normal file
13
SharedBusinessLogic.Tests.Framework/TestFrameworkCore.csproj
Normal file
|
@ -0,0 +1,13 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SharedBusinessLogic\ShareeBikeLibCore.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
253
SharedBusinessLogic.Tests.Framework/TestFrameworkCore.sln
Normal file
253
SharedBusinessLogic.Tests.Framework/TestFrameworkCore.sln
Normal file
|
@ -0,0 +1,253 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32014.148
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D5B69C6F-3413-4773-923E-21A65B21C3A3}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\.editorconfig = ..\.editorconfig
|
||||
..\.vsspell = ..\.vsspell
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockIt.BLECore", "..\LockIt.BLE\LockIt.BLECore.csproj", "{F633CF35-0FD3-4425-863D-14EC1835204E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockIt.BusinessLogicCore", "..\LockIt.BusinessLogic\LockIt.BusinessLogicCore.csproj", "{AF74E33D-76BA-4285-9CFC-452448603D70}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShareeBikeLib", "..\SharedBusinessLogic\ShareeBikeLib.csproj", "{B720A87F-1D34-4FFD-95EB-D97D1F578389}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharedBusinessLogic.Tests.FrameworkCore", "SharedBusinessLogic.Tests.FrameworkCore.csproj", "{24E05FA9-55B9-4F88-956B-4971A1B3564F}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F633CF35-0FD3-4425-863D-14EC1835204E}.Release|x86.Build.0 = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|x64.Build.0 = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{AF74E33D-76BA-4285-9CFC-452448603D70}.Release|x86.Build.0 = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|x64.Build.0 = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B720A87F-1D34-4FFD-95EB-D97D1F578389}.Release|x86.Build.0 = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{24E05FA9-55B9-4F88-956B-4971A1B3564F}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C6529CD7-C3F7-4E80-89B5-002E2B8E3EB5}
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
Policies = $0
|
||||
$0.DotNetNamingPolicy = $1
|
||||
$1.DirectoryNamespaceAssociation = PrefixedHierarchical
|
||||
version = 3.0
|
||||
EndGlobalSection
|
||||
EndGlobal
|
18
SharedBusinessLogic.Tests.Framework/TestHelper.cs
Normal file
18
SharedBusinessLogic.Tests.Framework/TestHelper.cs
Normal file
|
@ -0,0 +1,18 @@
|
|||
namespace SharedBusinessLogic.Tests.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides helper functionality. Used in SharedBusinessLogic.Tests and SharedBusinessLogic.Tests.
|
||||
/// </summary>
|
||||
public static class TestHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Eases comparison of xml- files.
|
||||
/// </summary>
|
||||
/// <param name="p_strXmlFile"></param>
|
||||
/// <returns></returns>
|
||||
public static string PrepareXmlForStringCompare(string p_strXmlFile)
|
||||
{
|
||||
return p_strXmlFile.Replace("\r\n", string.Empty).Replace("\t", string.Empty).Replace(" ", string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue