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

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