Contact page shows operator specific info

This commit is contained in:
Oliver Hauff 2021-07-20 23:06:09 +02:00
parent e436e83c1d
commit a58c33f005
51 changed files with 948 additions and 221 deletions

View file

@ -305,7 +305,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector
var https = Substitute.For<ICopriServer>();
cache.IsStationsExpired.Returns(false);
cache.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAllResponse>(STATIONSALL)));
cache.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAvailableResponse>(STATIONSALL)));
var provider = new CopriProviderHttps(
new Uri("http://1.2.3.4"),
@ -329,7 +329,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector
var https = Substitute.For<ICopriServer>();
cache.IsStationsExpired.Returns(true);
cache.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAllResponse>(STATIONSALL)));
cache.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAvailableResponse>(STATIONSALL)));
var provider = new CopriProviderHttps(
new Uri("http://1.2.3.4"),
@ -352,7 +352,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector
var https = Substitute.For<ICopriServer>();
cache.IsStationsExpired.Returns(true);
https.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAllResponse>(STATIONSALL)));
https.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAvailableResponse>(STATIONSALL)));
var provider = new CopriProviderHttps(
new Uri("http://1.2.3.4"),
@ -375,8 +375,8 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector
var https = Substitute.For<ICopriServer>();
cache.IsStationsExpired.Returns(true);
cache.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAllResponse>(STATIONSALL)));
https.GetStationsAsync().Returns<StationsAllResponse>(x => { throw new WebConnectFailureException("Bang...", new Exception()); });
cache.GetStationsAsync().Returns(Task.Run(() => JsonConvert.DeserializeObject<StationsAvailableResponse>(STATIONSALL)));
https.GetStationsAsync().Returns<StationsAvailableResponse>(x => { throw new WebConnectFailureException("Bang...", new Exception()); });
var provider = new CopriProviderHttps(
new Uri("http://1.2.3.4"),
@ -411,17 +411,17 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector
try
{
// Do not add if an excption occurred
provider.AddToCache(new Result<StationsAllResponse>(typeof(CopriCallsHttps), JsonConvert.DeserializeObject<StationsAllResponse>(STATIONSALL), new System.Exception("Bang...")));
provider.AddToCache(new Result<StationsAvailableResponse>(typeof(CopriCallsHttps), JsonConvert.DeserializeObject<StationsAvailableResponse>(STATIONSALL), new System.Exception("Bang...")));
stations = await provider.GetStations(true);
Assert.AreEqual(0, stations.Response.stations.Count);
// Do not add if results from cache
provider.AddToCache(new Result<StationsAllResponse>(typeof(CopriCallsMonkeyStore), JsonConvert.DeserializeObject<StationsAllResponse>(STATIONSALL)));
provider.AddToCache(new Result<StationsAvailableResponse>(typeof(CopriCallsMonkeyStore), JsonConvert.DeserializeObject<StationsAvailableResponse>(STATIONSALL)));
stations = await provider.GetStations(true);
Assert.AreEqual(0, stations.Response.stations.Count);
// Add result
provider.AddToCache(new Result<StationsAllResponse>(typeof(CopriCallsHttps), JsonConvert.DeserializeObject<StationsAllResponse>(STATIONSALL)));
provider.AddToCache(new Result<StationsAvailableResponse>(typeof(CopriCallsHttps), JsonConvert.DeserializeObject<StationsAvailableResponse>(STATIONSALL)));
stations = await provider.GetStations(true);
Assert.AreEqual(3, stations.Response.stations.Count);
}

View file

@ -13,6 +13,7 @@ using static TINK.Repository.CopriCallsMemory;
using BikeInfo = TINK.Model.Bike.BluetoothLock.BikeInfo;
using TINK.Model.User.Account;
using Xamarin.Forms;
namespace TestTINKLib.Fixtures.Connector
{
@ -42,6 +43,125 @@ namespace TestTINKLib.Fixtures.Connector
Assert.AreEqual("Südstadt Station", l_oStationsTarget.GetById("31").StationName);
}
[Test]
public void TestGetAllStations_OperatorData()
{
var stations = UpdaterJSON.GetStationsAllMutable(JsonConvert.DeserializeObject<ResponseContainer<StationsAvailableResponse>>(STATIONS_AVAILABLE_LOGGEDIN_20210720).shareejson);
var station = stations.FirstOrDefault(x => x.Id == "LV_3");
Assert.That(
station,
Is.Not.Null,
"Station LV_3 must exist.");
Assert.That(
station.OperatorData.Color,
Is.EqualTo(Color.FromHex("#006269")));
Assert.That(
station.OperatorData.Hours,
Is.EqualTo(string.Empty));
Assert.That(
station.OperatorData.Name,
Is.EqualTo("LastenVelo Freiburg"));
Assert.That(
station.OperatorData.MailAddressText,
Is.EqualTo("info@lastenvelofreiburg.de"));
Assert.That(
station.OperatorData.PhoneNumberText,
Is.EqualTo(string.Empty));
station = stations.FirstOrDefault(x => x.Id == "FR_105");
Assert.That(
station,
Is.Not.Null,
"Station FR_105 must exist.");
Assert.That(
station.OperatorData.Color,
Is.EqualTo(Color.FromHex("#009699")));
Assert.That(
station.OperatorData.Hours,
Is.EqualTo("B<>rozeiten: Montag, Mittwoch, Freitag 9-12 Uhr"));
Assert.That(
station.OperatorData.Name,
Is.EqualTo("sharee.bike | TeilRad GmbH"));
Assert.That(
station.OperatorData.MailAddressText,
Is.EqualTo("hotline@sharee.bike"));
Assert.That(
station.OperatorData.PhoneNumberText,
Is.EqualTo("+49 761 45370097"));
}
[Test]
public void TestGetAllStations_OperatorData_NoOperatorData()
{
var stations = UpdaterJSON.GetStationsAllMutable(JsonConvert.DeserializeObject<ResponseContainer<StationsAvailableResponse>>(@"
{
""shareejson"": {
""lang"": ""DE"",
""impress_html"": ""site/impress.html"",
""tariff_info_html"": ""site/tariff_info_1.html"",
""debuglevel"": ""1"",
""user_tour"": [
null,
""""
],
""response"": ""stations_available"",
""user_id"": ""ohauff@posteo.de"",
""stations"": {
""LV_3"": {
""service_tour"": ""LV_1"",
""uri_operator"": ""https://shareeapp-lv.copri.eu"",
""authed"": ""1"",
""station"": ""LV_3"",
""gps"": {
""latitude"": ""47.9973"",
""longitude"": ""7.8585""
},
""gps_radius"": ""100"",
""description"": ""Katholische Akademie"",
""state"": ""available"",
""station_group"": [
""LV_300005""
]
},
},
}
}").shareejson);
var station = stations.FirstOrDefault(x => x.Id == "LV_3");
Assert.That(
station.OperatorData.Color,
Is.Null);
Assert.That(
station.OperatorData.Hours,
Is.EqualTo(string.Empty));
Assert.That(
station.OperatorData.Name,
Is.EqualTo(string.Empty));
Assert.That(
station.OperatorData.MailAddressText,
Is.EqualTo(string.Empty));
Assert.That(
station.OperatorData.PhoneNumberText,
Is.EqualTo(string.Empty));
}
[Test]
public void TestUpdateBikesAvailable_BikeNr5GetBooked()
{

View file

@ -0,0 +1,61 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Text;
namespace TestShareeLib.Model.Station
{
[TestFixture]
public class TestData
{
[Test]
public void TestCtor()
{
var data = new TINK.Model.Station.Operator.Data();
Assert.That(
data.Color,
Is.Null);
Assert.That(
data.Hours,
Is.EqualTo(string.Empty));
Assert.That(
data.Name,
Is.EqualTo(string.Empty));
Assert.That(
data.MailAddressText,
Is.EqualTo(string.Empty));
Assert.That(
data.PhoneNumberText,
Is.EqualTo(string.Empty));
}
[Test]
public void TestCtor_Null()
{
var data = new TINK.Model.Station.Operator.Data(null, null, null, null, null);
Assert.That(
data.Color,
Is.Null);
Assert.That(
data.Hours,
Is.EqualTo(string.Empty));
Assert.That(
data.Name,
Is.EqualTo(string.Empty));
Assert.That(
data.MailAddressText,
Is.EqualTo(string.Empty));
Assert.That(
data.PhoneNumberText,
Is.EqualTo(string.Empty));
}
}
}

View file

@ -19,7 +19,7 @@ namespace UITest.Fixtures.ObjectTests.Connector
var bikesOccupied = JsonConvert.DeserializeObject<BikesReservedOccupiedResponse>(CopriCallsMonkeyStore.BIKESOCCUPIED);
Assert.NotNull(bikesOccupied?.bikes_occupied);
var stations = JsonConvert.DeserializeObject<StationsAllResponse>(CopriCallsMonkeyStore.STATIONSALL);
var stations = JsonConvert.DeserializeObject<StationsAvailableResponse>(CopriCallsMonkeyStore.STATIONSALL);
Assert.NotNull(stations?.stations);
}