Mini survey added.

Minor fiexes.
This commit is contained in:
Oliver Hauff 2021-08-01 17:24:15 +02:00
parent ddfea49ea6
commit e321764119
73 changed files with 1628 additions and 185 deletions

View file

@ -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));
}
}
}

View 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);
}
}
}

View 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);
}
}
}

View 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));
}
}
}

View 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"));
}
}
}

View 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(""));
}
}
}

View file

@ -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.");
}
}
}

View file

@ -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.");
}
}
}