-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGetFlightIdTests.cs
More file actions
100 lines (84 loc) · 3.31 KB
/
Copy pathGetFlightIdTests.cs
File metadata and controls
100 lines (84 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using FlightQuery.Context;
using FlightQuery.Sdk;
using FlightQuery.Sdk.Model.V2;
using Moq;
using NUnit.Framework;
using System.Linq;
namespace FlightQuery.Tests
{
[TestFixture]
public class GetFlightIdTests
{
[Test]
public void TestMissingRequired()
{
string code = @"
select faFlightID
from GetFlightId
where ident = 'DAL503'
";
var context = RunContext.CreateSemanticContext(code);
context.Run();
Assert.IsTrue(context.Errors.Count == 1);
Assert.IsTrue(context.Errors[0].Message == "departureTime is required");
}
[Test]
public void TestQuerableParameters()
{
string code = @"
select faFlightID
from GetFlightId
where ident = 'DAL503' and departuretime = '2020-3-7 9:15'
";
var mock = new Mock<IHttpExecutor>();
mock.Setup(x => x.GetFlightID(It.IsAny<HttpExecuteArg>())).Callback<HttpExecuteArg>(args =>
{
Assert.IsTrue(args.Variables.Count() == 2);
var start = args.Variables.Where(x => x.Variable == "ident").SingleOrDefault();
Assert.IsTrue(start != null);
Assert.IsTrue(start.Value == "DAL503");
var end = args.Variables.Where(x => x.Variable == "departureTime").SingleOrDefault();
Assert.IsTrue(end.Value == "1583572500");
}).Returns(() => new ApiExecuteResult<GetFlightId>(new GetFlightId()));
var context = RunContext.CreateSemanticContext(code, mock.Object);
context.Run();
Assert.IsTrue(context.Errors.Count == 0);
mock.Verify(v => v.GetFlightID(It.IsAny<HttpExecuteArg>()), Times.Once());
}
[Test]
public void TestExecute()
{
string code = @"
select faFlightID
from GetFlightId
where ident = 'DAL503' and departuretime = '2020-3-7 9:15'
";
var mock = new Mock<IHttpExecutor>();
mock.Setup(x => x.GetFlightID(It.IsAny<HttpExecuteArg>())).Returns(() => new ApiExecuteResult<GetFlightId>(new GetFlightId() {faFlightID = "XYZ1234-1530000000-airline-0500" }));
var context = RunContext.CreateRunContext(code, mock.Object);
var result = context.Run();
Assert.IsTrue(context.Errors.Count == 0);
Assert.IsTrue(result.First().Columns.Length == 1);
Assert.IsTrue(result.First().Columns[0].Name == "faFlightID");
Assert.IsTrue(result.First().Rows.Length == 1);
Assert.AreEqual(result.First().Rows[0].Values[0], "XYZ1234-1530000000-airline-0500");
}
[Test]
public void TestExecuteNoFlightID()
{
string code = @"
select faFlightID
from GetFlightId
where ident = 'DAL503' and departuretime = '2020-3-7 9:15'
";
var mock = new Mock<IHttpExecutorRaw>();
mock.Setup(x => x.GetFlightID(It.IsAny<HttpExecuteArg>())).Returns(
new ExecuteResult() { Result = @"{""error"":""NO_DATA flight not found""}" }
);
var context = RunContext.CreateRunContext(code, new HttpExecutor(mock.Object));
var result = context.Run();
Assert.IsTrue(context.Errors.Count == 0);
Assert.IsTrue(result.First().Rows.Length == 0);
}
}
}