mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-04-22 12:56:29 +02:00
Mini survey added.
Minor fiexes.
This commit is contained in:
parent
ddfea49ea6
commit
e321764119
73 changed files with 1628 additions and 185 deletions
|
@ -14,6 +14,7 @@ using static TINK.Repository.CopriCallsMemory;
|
|||
using BikeInfo = TINK.Model.Bike.BluetoothLock.BikeInfo;
|
||||
using TINK.Model.User.Account;
|
||||
using Xamarin.Forms;
|
||||
using TINK.Model.MiniSurvey;
|
||||
|
||||
namespace TestTINKLib.Fixtures.Connector
|
||||
{
|
||||
|
@ -844,7 +845,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{
|
||||
""eur_per_hour"" : ""10.50"",
|
||||
""abo_eur_per_month"" : ""920.99"",
|
||||
|
@ -877,7 +878,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_Name()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{
|
||||
""eur_per_hour"" : ""10.50"",
|
||||
""abo_eur_per_month"" : ""920.99"",
|
||||
|
@ -894,7 +895,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_Number()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{
|
||||
""eur_per_hour"" : ""10.50"",
|
||||
""abo_eur_per_month"" : ""920.99"",
|
||||
|
@ -911,7 +912,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_FreeTimePerSession()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{
|
||||
""eur_per_hour"" : ""10.50"",
|
||||
""abo_eur_per_month"" : ""920.99"",
|
||||
|
@ -928,7 +929,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_FeeEuroPerHour()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{
|
||||
""eur_per_hour"" : ""10.50"",
|
||||
""abo_eur_per_month"" : ""920.99"",
|
||||
|
@ -945,7 +946,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_AboEuroPerMonth()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{
|
||||
""eur_per_hour"" : ""10.50"",
|
||||
""abo_eur_per_month"" : ""920.99"",
|
||||
|
@ -962,7 +963,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_Name_Empty()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
|
@ -973,7 +974,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_Number_Empty()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
|
@ -984,7 +985,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_FreeTimePerSession_Empty()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
|
@ -995,7 +996,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_FeeEuroPerHour_Empty()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
|
@ -1006,7 +1007,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
[Test]
|
||||
public void TestCreateTariffDescription_AboEuroPerMonth_Empty()
|
||||
{
|
||||
var tariffDescription = TINK.Repository.Response.JsonConvertRethrow.DeserializeObject<TINK.Repository.Response.TariffDescription>(
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<TariffDescription>(
|
||||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
|
@ -1018,7 +1019,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_Name_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TINK.Repository.Response.TariffDescription)null).Name,
|
||||
BikeInfoFactory.Create((TariffDescription)null).Name,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
|
@ -1026,7 +1027,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_Number_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TINK.Repository.Response.TariffDescription)null).Number,
|
||||
BikeInfoFactory.Create((TariffDescription)null).Number,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
|
@ -1034,7 +1035,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_FreeTimePerSession_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TINK.Repository.Response.TariffDescription)null).FreeTimePerSession,
|
||||
BikeInfoFactory.Create((TariffDescription)null).FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.Zero));
|
||||
}
|
||||
|
||||
|
@ -1042,7 +1043,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_FeeEuroPerHour_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TINK.Repository.Response.TariffDescription)null).FeeEuroPerHour,
|
||||
BikeInfoFactory.Create((TariffDescription)null).FeeEuroPerHour,
|
||||
Is.NaN);
|
||||
}
|
||||
|
||||
|
@ -1050,8 +1051,230 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_AboEuroPerMonth_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TINK.Repository.Response.TariffDescription)null).AboEuroPerMonth,
|
||||
BikeInfoFactory.Create((TariffDescription)null).AboEuroPerMonth,
|
||||
Is.NaN);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// COPRI response shortened, part not belonging to user_miniquery discarded.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestCreateMiniSurvey()
|
||||
{
|
||||
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
|
||||
{
|
||||
""shareejson"" : {
|
||||
""user_miniquery"" : {
|
||||
""title"" : ""Bitte unterstützen Sie unsere Begleitforschung"",
|
||||
""footer"" : ""Herzlichen Dank und viel Spaß bei der nächsten Fahrt!"",
|
||||
""questions"" : {
|
||||
""q3"" : {
|
||||
""quest_text"" : ""3. Haben Sie Anmerkungen oder Anregungen?"",
|
||||
""type"" : ""text"",
|
||||
""query"" : {
|
||||
""opt1"" : """"
|
||||
}
|
||||
},
|
||||
""q1"" : {
|
||||
""type"" : ""check_one"",
|
||||
""quest_text"" : ""1. Was war der Hauptzweck dieser Ausleihe?"",
|
||||
""query"" : {
|
||||
""opt2"" : ""b. Kinderbeförderung"",
|
||||
""opt5"" : ""e. Ausprobieren"",
|
||||
""opt4"" : ""d. Freizeit"",
|
||||
""opt1"" : ""a. Einkauf"",
|
||||
""opt3"" : ""c. Lastentransport"",
|
||||
""opt6"" : ""f. Sonstiges""
|
||||
}
|
||||
},
|
||||
""q2"" : {
|
||||
""type"" : ""check_one"",
|
||||
""quest_text"" : ""2. Welches Verkehrsmittel hätten Sie ansonsten benutzt?"",
|
||||
""query"" : {
|
||||
""opt6"" : ""f. Keines (ich hätte die Fahrt sonst nicht gemacht)"",
|
||||
""opt3"" : ""c. Bus oder Bahn"",
|
||||
""opt1"" : ""a. Auto"",
|
||||
""opt2"" : ""b. Motorrad oder Motorroller"",
|
||||
""opt7"" : ""g. Sonstige"",
|
||||
""opt4"" : ""d. Eigenes Fahrrad"",
|
||||
""opt5"" : ""e. Zu Fuß""
|
||||
}
|
||||
}
|
||||
},
|
||||
""subtitle"" : ""Ihre drei Antworten werden anonym gespeichert.""
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
");
|
||||
|
||||
var survey = response.shareejson.Create();
|
||||
|
||||
Assert.That(
|
||||
survey,
|
||||
Is.Not.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Title,
|
||||
Is.EqualTo("Bitte unterstützen Sie unsere Begleitforschung"));
|
||||
|
||||
Assert.That(
|
||||
survey.Subtitle,
|
||||
Is.EqualTo("Ihre drei Antworten werden anonym gespeichert."));
|
||||
|
||||
Assert.That(
|
||||
survey.Footer,
|
||||
Is.EqualTo("Herzlichen Dank und viel Spaß bei der nächsten Fahrt!"));
|
||||
|
||||
Assert.That(
|
||||
survey.Questions.Count,
|
||||
Is.EqualTo(3));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// COPRI response shortened, part not belonging to user_miniquery discarded.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestCreateMiniSurvey_Null()
|
||||
{
|
||||
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
|
||||
{
|
||||
""shareejson"" : {
|
||||
}
|
||||
}
|
||||
|
||||
");
|
||||
|
||||
var survey = response.shareejson.Create();
|
||||
|
||||
Assert.That(
|
||||
survey,
|
||||
Is.Not.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Title,
|
||||
Is.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Subtitle,
|
||||
Is.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Footer,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// COPRI response shortened, part not belonging to user_miniquery discarded.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestCreateMiniSurvey_EmptyQuery()
|
||||
{
|
||||
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
|
||||
{
|
||||
""shareejson"" : {
|
||||
""user_miniquery"" : {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
");
|
||||
|
||||
var survey = response.shareejson.Create();
|
||||
|
||||
Assert.That(
|
||||
survey,
|
||||
Is.Not.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Title,
|
||||
Is.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Subtitle,
|
||||
Is.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Footer,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// COPRI response shortened, part not belonging to user_miniquery discarded.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestCreateMiniSurvey_InvalidQuestion_KeyNull()
|
||||
{
|
||||
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
|
||||
{
|
||||
""shareejson"" : {
|
||||
""user_miniquery"" : {
|
||||
""title"" : ""Bitte unterstützen Sie unsere Begleitforschung"",
|
||||
""footer"" : ""Herzlichen Dank und viel Spaß bei der nächsten Fahrt!"",
|
||||
""questions"" : {
|
||||
"""" : {
|
||||
""type"" : ""check_one"",
|
||||
""quest_text"" : ""1. Was war der Hauptzweck dieser Ausleihe?"",
|
||||
""query"" : {
|
||||
""opt2"" : ""b. Kinderbeförderung"",
|
||||
""opt5"" : ""e. Ausprobieren"",
|
||||
""opt4"" : ""d. Freizeit"",
|
||||
""opt1"" : ""a. Einkauf"",
|
||||
""opt3"" : ""c. Lastentransport"",
|
||||
""opt6"" : ""f. Sonstiges""
|
||||
}
|
||||
},
|
||||
},
|
||||
""subtitle"" : ""Ihre drei Antworten werden anonym gespeichert.""
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
");
|
||||
|
||||
var survey = response.shareejson.Create();
|
||||
|
||||
Assert.That(
|
||||
survey,
|
||||
Is.Not.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Questions.Count,
|
||||
Is.EqualTo(0));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// COPRI response shortened, part not belonging to user_miniquery discarded.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestCreateMiniSurvey_InvalidQuestion_ValueNull()
|
||||
{
|
||||
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
|
||||
{
|
||||
""shareejson"" : {
|
||||
""user_miniquery"" : {
|
||||
""title"" : ""Bitte unterstützen Sie unsere Begleitforschung"",
|
||||
""footer"" : ""Herzlichen Dank und viel Spaß bei der nächsten Fahrt!"",
|
||||
""questions"" : {
|
||||
""q1"" : {
|
||||
},
|
||||
},
|
||||
""subtitle"" : ""Ihre drei Antworten werden anonym gespeichert.""
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
");
|
||||
|
||||
var survey = response.shareejson.Create();
|
||||
|
||||
Assert.That(
|
||||
survey,
|
||||
Is.Not.Null);
|
||||
|
||||
Assert.That(
|
||||
survey.Questions.Count,
|
||||
Is.EqualTo(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
20
TestShareeLib/Model/MiniSurvey/TestMiniSurveyModel.cs
Normal file
20
TestShareeLib/Model/MiniSurvey/TestMiniSurveyModel.cs
Normal file
|
@ -0,0 +1,20 @@
|
|||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using TINK.Model.MiniSurvey;
|
||||
|
||||
namespace TestShareeLib.Model.MiniSurvey
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestMiniSurveyModel
|
||||
{
|
||||
[Test]
|
||||
public void TestCtor()
|
||||
{
|
||||
Assert.That(
|
||||
new MiniSurveyModel().Questions,
|
||||
Is.Not.Null);
|
||||
}
|
||||
}
|
||||
}
|
16
TestShareeLib/Model/MiniSurvey/TestQuestionModel.cs
Normal file
16
TestShareeLib/Model/MiniSurvey/TestQuestionModel.cs
Normal file
|
@ -0,0 +1,16 @@
|
|||
using NUnit.Framework;
|
||||
using TINK.Model.MiniSurvey;
|
||||
|
||||
namespace TestShareeLib.Model.MiniSurvey
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestQuestionModel
|
||||
{
|
||||
public void TestCtro()
|
||||
{
|
||||
Assert.That(
|
||||
new MiniSurveyModel.QuestionModel().PossibleAnswers,
|
||||
Is.Not.Null);
|
||||
}
|
||||
}
|
||||
}
|
70
TestShareeLib/Repository/Request/TestRequestBuilder.cs
Normal file
70
TestShareeLib/Repository/Request/TestRequestBuilder.cs
Normal file
|
@ -0,0 +1,70 @@
|
|||
using NUnit.Framework;
|
||||
using System;
|
||||
using TINK.Repository.Exception;
|
||||
using TINK.Repository.Request;
|
||||
|
||||
namespace TestShareeLib.Repository.Request
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestRequestBuilder
|
||||
{
|
||||
[Test]
|
||||
public void TestDoAuthorize()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=authorization&merchant_id=123&user_id=abc%40cde&user_pw=%2B%3F&hw_id=789",
|
||||
new RequestBuilder("123").DoAuthorization("abc@cde", "+?", "789"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoAuthout()
|
||||
{
|
||||
Assert.Throws<CallNotRequiredException>(() =>
|
||||
new RequestBuilder("123").DoAuthout());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetBikesAvailable()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=bikes_available&system=all&authcookie=123",
|
||||
new RequestBuilder("123").GetBikesAvailable());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetBikesOccupied()
|
||||
{
|
||||
Assert.Throws< NotSupportedException>(() =>
|
||||
new RequestBuilder("123").GetBikesOccupied());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetStations()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=stations_available&authcookie=123",
|
||||
new RequestBuilder("123").GetStations());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoReserve()
|
||||
{
|
||||
Assert.Throws<NotSupportedException>(() =>
|
||||
new RequestBuilder("123").DoReserve("42"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoCancelReservation()
|
||||
{
|
||||
Assert.Throws<NotSupportedException>(() =>
|
||||
new RequestBuilder("123").DoCancelReservation("42"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoSubmitFeedback()
|
||||
{
|
||||
Assert.Throws<NotSupportedException>(() =>
|
||||
new RequestBuilder("123").DoSubmitFeedback("bike3", "Hi", false));
|
||||
}
|
||||
}
|
||||
}
|
145
TestShareeLib/Repository/Request/TestRequestBuilderLoggedIn.cs
Normal file
145
TestShareeLib/Repository/Request/TestRequestBuilderLoggedIn.cs
Normal file
|
@ -0,0 +1,145 @@
|
|||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TINK.Repository.Exception;
|
||||
using TINK.Repository.Request;
|
||||
|
||||
namespace TestShareeLib.Repository.Request
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestRequestBuilderLoggedIn
|
||||
{
|
||||
|
||||
[Test]
|
||||
public void TestDoAuthorize()
|
||||
{
|
||||
Assert.Throws <CallNotRequiredException>(() =>new RequestBuilderLoggedIn("123", "456").DoAuthorization("abc@cde", "+?", "789"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoAuthout()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=authout&authcookie=456123",
|
||||
new RequestBuilderLoggedIn ("123", "456").DoAuthout());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetBikesAvailable()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=bikes_available&system=all&authcookie=456123",
|
||||
new RequestBuilderLoggedIn("123", "456").GetBikesAvailable());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetBikesAvailable_Null()
|
||||
{
|
||||
Assert.Throws<ArgumentException>(() =>
|
||||
new RequestBuilderLoggedIn("123", null).GetBikesAvailable());
|
||||
|
||||
Assert.Throws<ArgumentException>(() =>
|
||||
new RequestBuilderLoggedIn("123", string.Empty).GetBikesAvailable());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetBikesOccupied()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=user_bikes_occupied&system=all&genkey=1&authcookie=456123",
|
||||
new RequestBuilderLoggedIn("123", "456").GetBikesOccupied());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetBikesOccupied_Null()
|
||||
{
|
||||
Assert.Throws<ArgumentException>(() =>
|
||||
new RequestBuilderLoggedIn("123", null).GetBikesOccupied());
|
||||
|
||||
Assert.Throws<ArgumentException>(() =>
|
||||
new RequestBuilderLoggedIn("123", "").GetBikesOccupied());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetStations()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=stations_available&authcookie=456123",
|
||||
new RequestBuilderLoggedIn("123", "456").GetStations());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestGetStations_Null()
|
||||
{
|
||||
Assert.Throws<ArgumentException>(() =>
|
||||
new RequestBuilderLoggedIn("123", string.Empty).GetStations());
|
||||
|
||||
Assert.Throws<ArgumentException>(() =>
|
||||
new RequestBuilderLoggedIn("123", null).GetStations());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoReserve()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=booking_request&bike=42&authcookie=456123",
|
||||
new RequestBuilderLoggedIn("123", "456").DoReserve("42"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoCancelReservation()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=booking_cancel&bike=42&authcookie=456123",
|
||||
new RequestBuilderLoggedIn("123", "456").DoCancelReservation("42"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoBook()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=booking_update&bike=42&authcookie=456123&Ilockit_GUID=0000f00d-1212-efde-1523-785fef13d123&state=occupied&lock_state=unlocked&voltage=33.21",
|
||||
new RequestBuilderLoggedIn("123", "456").DoBook("42", new Guid("0000f00d-1212-efde-1523-785fef13d123"),33.21));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoBookNoBatery()
|
||||
{
|
||||
Assert.AreEqual(
|
||||
"request=booking_update&bike=42&authcookie=456123&Ilockit_GUID=0000f00d-1212-efde-1523-785fef13d123&state=occupied&lock_state=unlocked",
|
||||
new RequestBuilderLoggedIn("123", "456").DoBook("42", new Guid("0000f00d-1212-efde-1523-785fef13d123"), double.NaN));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoSubmitMiniSurvey()
|
||||
{
|
||||
Assert.That(
|
||||
new RequestBuilderLoggedIn("Merchy", "Keksi").DoSubmitMiniSurvey(new Dictionary<string, string> { { "q1", "opt5" }, { "q2", "opt4" }, { "q3", "der Freitext" } }),
|
||||
Is.EqualTo("request=user_minianswer&q1=opt5&q2=opt4&q3=der+Freitext&authcookie=KeksiMerchy"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoSubmitMiniSurveyNull()
|
||||
{
|
||||
Assert.That(
|
||||
new RequestBuilderLoggedIn("Merchy", "Keksi").DoSubmitMiniSurvey(null),
|
||||
Is.EqualTo("request=user_minianswer&authcookie=KeksiMerchy"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoSubmitMiniSurveyEmptyDict()
|
||||
{
|
||||
Assert.That(
|
||||
new RequestBuilderLoggedIn("Merchy", "Keksi").DoSubmitMiniSurvey(new Dictionary<string, string>()),
|
||||
Is.EqualTo("request=user_minianswer&authcookie=KeksiMerchy"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDoSubmitMiniSurveyFilterInvalidEntries()
|
||||
{
|
||||
Assert.That(
|
||||
new RequestBuilderLoggedIn("Merchy", "Keksi").DoSubmitMiniSurvey(new Dictionary<string, string> { { "q1", "opt5" }, { "", "opt99" }, { "q99", "" }, { "q2", "opt4" }, { "q3", "der Freitext" } }),
|
||||
Is.EqualTo("request=user_minianswer&q1=opt5&q2=opt4&q3=der+Freitext&authcookie=KeksiMerchy"));
|
||||
}
|
||||
}
|
||||
}
|
153
TestShareeLib/Repository/Response/TestMiniSurvey.cs
Normal file
153
TestShareeLib/Repository/Response/TestMiniSurvey.cs
Normal file
|
@ -0,0 +1,153 @@
|
|||
using Newtonsoft.Json;
|
||||
using NUnit.Framework;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using TINK.Repository.Response;
|
||||
|
||||
namespace TestShareeLib.Repository.Response
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestMiniSurvey
|
||||
{
|
||||
[DataContract]
|
||||
public class MiniSurveyTestContainer
|
||||
{
|
||||
[DataMember]
|
||||
public MiniSurveyResponse user_miniquery { get; set;}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCtor()
|
||||
{
|
||||
var mini = JsonConvert.DeserializeObject<MiniSurveyTestContainer>(@"{
|
||||
""user_miniquery"" : {
|
||||
""footer"" : ""Herzlichen Dank und viel Spaß bei der nächsten Fahrt!"",
|
||||
""subtitle"" : ""Ihre drei Antworten werden anonym gespeichert."",
|
||||
""title"" : ""Bitte unterstützen Sie unsere Begleitforschung"",
|
||||
""questions"" : {
|
||||
""q1"" : {
|
||||
""quest_text"" : ""1. Was war der Hauptzweck dieser Ausleihe?"",
|
||||
""type"" : ""check_one"",
|
||||
""query"" : {
|
||||
""opt5"" : ""e. Ausprobieren"",
|
||||
""opt3"" : ""c. Lastentransport"",
|
||||
""opt6"" : ""f. Sonstiges"",
|
||||
""opt1"" : ""a. Einkauf"",
|
||||
""opt4"" : ""d. Freizeit"",
|
||||
""opt2"" : ""b. Kinderbeförderung""
|
||||
}
|
||||
},
|
||||
""q2"" : {
|
||||
""type"" : ""check_one"",
|
||||
""quest_text"" : ""2. Welches Verkehrsmittel hätten Sie ansonsten benutzt?"",
|
||||
""query"" : {
|
||||
""opt1"" : ""a. Auto"",
|
||||
""opt7"" : ""g. Sonstige"",
|
||||
""opt2"" : ""b. Motorrad oder Motorroller"",
|
||||
""opt4"" : ""d. Eigenes Fahrrad"",
|
||||
""opt6"" : ""f. Keines (ich hätte die Fahrt sonst nicht gemacht)"",
|
||||
""opt5"" : ""e. Zu Fuß"",
|
||||
""opt3"" : ""c. Bus oder Bahn""
|
||||
},
|
||||
},
|
||||
""q3"" : {
|
||||
""type"" : ""text"",
|
||||
""quest_text"" : ""3. Haben Sie Anmerkungen oder Anregungen?"",
|
||||
""query"" : {
|
||||
""opt1"" : """"
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
mini.user_miniquery.title,
|
||||
Is.EqualTo("Bitte unterstützen Sie unsere Begleitforschung"));
|
||||
|
||||
Assert.That(
|
||||
mini.user_miniquery.subtitle,
|
||||
Is.EqualTo("Ihre drei Antworten werden anonym gespeichert."));
|
||||
|
||||
Assert.That(
|
||||
mini.user_miniquery.subtitle,
|
||||
Is.EqualTo("Ihre drei Antworten werden anonym gespeichert."));
|
||||
|
||||
Assert.That(
|
||||
mini.user_miniquery.questions.Count,
|
||||
Is.EqualTo(3));
|
||||
|
||||
Assert.That(
|
||||
mini.user_miniquery.questions.Count,
|
||||
Is.EqualTo(3));
|
||||
|
||||
// Verify first question.
|
||||
var query = mini.user_miniquery.questions.OrderBy(x => x.Key).ToArray()[0];
|
||||
|
||||
Assert.That(
|
||||
query.Value.quest_text,
|
||||
Is.EqualTo("1. Was war der Hauptzweck dieser Ausleihe?"));
|
||||
|
||||
Assert.That(
|
||||
query.Value.type,
|
||||
Is.EqualTo("check_one"));
|
||||
|
||||
Assert.That(
|
||||
query.Value.query.Count,
|
||||
Is.EqualTo(6));
|
||||
|
||||
var answer = query.Value.query.OrderBy(x => x.Key).ToArray()[0];
|
||||
|
||||
Assert.That(
|
||||
answer.Value,
|
||||
Is.EqualTo("a. Einkauf"));
|
||||
|
||||
answer = query.Value.query.OrderBy(x => x.Key).ToArray()[2];
|
||||
Assert.That(
|
||||
answer.Value,
|
||||
Is.EqualTo("c. Lastentransport"));
|
||||
|
||||
// Verify second question.
|
||||
query = mini.user_miniquery.questions.OrderBy(x => x.Key).ToArray()[1];
|
||||
|
||||
Assert.That(
|
||||
query.Value.quest_text,
|
||||
Is.EqualTo("2. Welches Verkehrsmittel hätten Sie ansonsten benutzt?"));
|
||||
|
||||
Assert.That(
|
||||
query.Value.type,
|
||||
Is.EqualTo("check_one"));
|
||||
|
||||
Assert.That(
|
||||
query.Value.query.Count,
|
||||
Is.EqualTo(7));
|
||||
|
||||
answer = query.Value.query.OrderBy(x => x.Key).ToArray()[1];
|
||||
|
||||
Assert.That(
|
||||
answer.Value,
|
||||
Is.EqualTo("b. Motorrad oder Motorroller"));
|
||||
|
||||
// Verify thired question.
|
||||
query = mini.user_miniquery.questions.OrderBy(x => x.Key).ToArray()[2];
|
||||
|
||||
Assert.That(
|
||||
query.Value.quest_text,
|
||||
Is.EqualTo("3. Haben Sie Anmerkungen oder Anregungen?"));
|
||||
|
||||
Assert.That(
|
||||
query.Value.type,
|
||||
Is.EqualTo("text"));
|
||||
|
||||
Assert.That(
|
||||
query.Value.query.Count,
|
||||
Is.EqualTo(1));
|
||||
|
||||
answer = query.Value.query.OrderBy(x => x.Key).ToArray()[0];
|
||||
|
||||
Assert.That(
|
||||
answer.Value,
|
||||
Is.EqualTo(""));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using TINK.ViewModel.MiniSurvey.Question;
|
||||
|
||||
namespace TestShareeLib.ViewModel.MiniSurvey.Question
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestCheckOneViewModel
|
||||
{
|
||||
[Test]
|
||||
public void TestCtor()
|
||||
{
|
||||
var vm = new CheckOneViewModel(
|
||||
new KeyValuePair<string, string>("q5", "wie ist das Wetter heute"),
|
||||
new Dictionary<string, string> { { "opt1", "regnerisch"}, { "opt2", "bewölkt" }, { "opt3", "sonnig" } });
|
||||
|
||||
Assert.That(
|
||||
vm.Question.Key,
|
||||
Is.EqualTo("q5"),
|
||||
"Key is essential for COPRI request.");
|
||||
|
||||
Assert.That(
|
||||
vm.QuestionText,
|
||||
Is.EqualTo("wie ist das Wetter heute"),
|
||||
"Question shown to user.");
|
||||
|
||||
Assert.That(
|
||||
string.Join(',', vm.AnswersText),
|
||||
Is.EqualTo("regnerisch,bewölkt,sonnig"),
|
||||
"Gui must show three options.");
|
||||
|
||||
Assert.That(
|
||||
vm.AnswerText,
|
||||
Is.EqualTo(null),
|
||||
"GUI should not show selected entry.");
|
||||
|
||||
Assert.That(
|
||||
vm.Answer.Key,
|
||||
Is.EqualTo(null),
|
||||
"View model shold not hold any selected endtry.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestSelected()
|
||||
{
|
||||
var vm = new CheckOneViewModel(
|
||||
new KeyValuePair<string, string>("q5", "wie ist das Wetter heute"),
|
||||
new Dictionary<string, string> { { "opt1", "regnerisch" }, { "opt2", "bewölkt" }, { "opt3", "sonnig" } });
|
||||
|
||||
vm.AnswerText = "sonnig"; // Member is called if user selects an entry.
|
||||
Assert.That(
|
||||
vm.Answer.Key,
|
||||
Is.EqualTo("opt3"),
|
||||
"Key matching to selected item must be set as answer.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using TINK.ViewModel.MiniSurvey.Question;
|
||||
|
||||
namespace TestShareeLib.ViewModel.MiniSurvey.Question
|
||||
{
|
||||
[TestFixture]
|
||||
class TestFreeTextViewModel
|
||||
{
|
||||
[Test]
|
||||
public void TestCtor()
|
||||
{
|
||||
var vm = new FreeTextViewModel(
|
||||
new KeyValuePair<string, string>("q9", "War das essen heute gut?"));
|
||||
|
||||
Assert.That(
|
||||
vm.Question.Key,
|
||||
Is.EqualTo("q9"),
|
||||
"Key is essential for COPRI request.");
|
||||
|
||||
Assert.That(
|
||||
vm.QuestionText,
|
||||
Is.EqualTo("War das essen heute gut?"),
|
||||
"Question shown to user.");
|
||||
|
||||
Assert.That(
|
||||
vm.AnswerText,
|
||||
Is.EqualTo(null),
|
||||
"GUI should not show selected entry.");
|
||||
|
||||
Assert.That(
|
||||
vm.Answer.Key,
|
||||
Is.EqualTo(null),
|
||||
"View model shold not hold any selected endtry.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestSelected()
|
||||
{
|
||||
var vm = new FreeTextViewModel(
|
||||
new KeyValuePair<string, string>("q9", "War das essen heute gut?"));
|
||||
|
||||
vm.AnswerText = "Sehr wohlschmeckend!"; // Member is called if user enters text.
|
||||
|
||||
Assert.That(
|
||||
vm.Answer.Key,
|
||||
Is.EqualTo("Sehr wohlschmeckend!"),
|
||||
"Key is the answer for COPRI.");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue