Skip to content
This repository was archived by the owner on Dec 29, 2020. It is now read-only.

Commit 097bf3b

Browse files
authored
Merge pull request #11 from MicroLite-ORM/develop
7.1.0
2 parents 6c764e7 + 4c532b6 commit 097bf3b

27 files changed

+282
-49
lines changed

MicroLite.Extensions.WebApi.OData.Tests/Binders/BinaryOperatorKindExtensionsTests.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using Net.Http.OData.Query.Expressions;
55
using Xunit;
66

7-
namespace MicroLite.Extensions.WebApi.Tests.OData.Binders
7+
namespace MicroLite.Extensions.WebApi.OData.Tests.Binders
88
{
99
public class BinaryOperatorKindExtensionsTests
1010
{
@@ -18,6 +18,11 @@ public void ToSqlOperatorReturnsAndForBinaryOperatorKindAnd()
1818
public void ToSqlOperatorReturnsEqualsForBinaryOperatorKindEqual()
1919
=> Assert.Equal("=", BinaryOperatorKind.Equal.ToSqlOperator());
2020

21+
[Fact]
22+
[Trait("Category", "Unit")]
23+
public void ToSqlOperatorReturnsEqualsForBinaryOperatorKindHas()
24+
=> Assert.Equal("=", BinaryOperatorKind.Has.ToSqlOperator());
25+
2126
[Fact]
2227
[Trait("Category", "Unit")]
2328
public void ToSqlOperatorReturnsForwardSlashForBinaryOperatorKindDivide()

MicroLite.Extensions.WebApi.OData.Tests/Binders/FilterBinderTests.cs

Lines changed: 135 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
using System.Net;
33
using MicroLite.Builder;
44
using MicroLite.Extensions.WebApi.OData.Binders;
5-
using MicroLite.Extensions.WebApi.Tests.OData.TestEntities;
5+
using MicroLite.Extensions.WebApi.OData.Tests.TestEntities;
66
using MicroLite.Mapping;
77
using Moq;
88
using Net.Http.OData;
99
using Net.Http.OData.Model;
1010
using Net.Http.OData.Query;
1111
using Xunit;
1212

13-
namespace MicroLite.Extensions.WebApi.Tests.OData.Binders
13+
namespace MicroLite.Extensions.WebApi.OData.Tests.Binders
1414
{
1515
public class FilterBinderTests
1616
{
@@ -199,6 +199,57 @@ public void ThereShouldBe2ArgumentValues()
199199
}
200200
}
201201

202+
public class WhenCallingApplyToWithConcatFunction
203+
{
204+
private readonly SqlQuery _sqlQuery;
205+
206+
public WhenCallingApplyToWithConcatFunction()
207+
{
208+
TestHelper.EnsureEDM();
209+
210+
var queryOptions = new ODataQueryOptions(
211+
"?$filter=concat(concat(Forename, ', '), Name) eq 'John, Smith'",
212+
EntityDataModel.Current.EntitySets["Customers"],
213+
Mock.Of<IODataQueryOptionsValidator>());
214+
215+
_sqlQuery = FilterBinder.BindFilter(queryOptions.Filter, ObjectInfo.For(typeof(Customer)), SqlBuilder.Select("*").From(typeof(Customer))).ToSqlQuery();
216+
}
217+
218+
[Fact]
219+
[Trait("Category", "Unit")]
220+
public void TheArgumentsShouldContainTheFirstQueryValue()
221+
{
222+
Assert.Equal(", ", _sqlQuery.Arguments[0].Value);
223+
}
224+
225+
[Fact]
226+
[Trait("Category", "Unit")]
227+
public void TheArgumentsShouldContainTheSecondQueryValue()
228+
{
229+
Assert.Equal("John, Smith", _sqlQuery.Arguments[1].Value);
230+
}
231+
232+
[Fact]
233+
[Trait("Category", "Unit")]
234+
public void TheCommandTextShouldContainTheWhereClause()
235+
{
236+
string expected = SqlBuilder.Select("*")
237+
.From(typeof(Customer))
238+
.Where("(Forename + ? + Name = ?)", ", ", "John, Smith")
239+
.ToSqlQuery()
240+
.CommandText;
241+
242+
Assert.Equal(expected, _sqlQuery.CommandText);
243+
}
244+
245+
[Fact]
246+
[Trait("Category", "Unit")]
247+
public void ThereShouldBe2ArgumentValues()
248+
{
249+
Assert.Equal(2, _sqlQuery.Arguments.Count);
250+
}
251+
}
252+
202253
public class WhenCallingBindFilterQueryOptionWithAPropertyEqualsAndGreaterThanAndLessThan
203254
{
204255
private readonly SqlQuery _sqlQuery;
@@ -646,7 +697,7 @@ public WhenCallingBindFilterQueryOptionWithASinglePropertyEqualEnum()
646697
TestHelper.EnsureEDM();
647698

648699
var queryOptions = new ODataQueryOptions(
649-
"?$filter=Status eq MicroLite.Extensions.WebApi.Tests.OData.TestEntities.CustomerStatus'Active'",
700+
"?$filter=Status eq MicroLite.Extensions.WebApi.OData.Tests.TestEntities.CustomerStatus'Active'",
650701
EntityDataModel.Current.EntitySets["Customers"],
651702
Mock.Of<IODataQueryOptionsValidator>());
652703

@@ -894,6 +945,50 @@ public void ThereShouldBe1ArgumentValue()
894945
}
895946
}
896947

948+
public class WhenCallingBindFilterQueryOptionWithASinglePropertyHasValue
949+
{
950+
private readonly SqlQuery _sqlQuery;
951+
952+
public WhenCallingBindFilterQueryOptionWithASinglePropertyHasValue()
953+
{
954+
TestHelper.EnsureEDM();
955+
956+
var queryOptions = new ODataQueryOptions(
957+
"Users?$filter=AccessLevel has MicroLite.Extensions.WebApi.OData.Tests.TestEntities.AccessLevel'Read,Write'",
958+
EntityDataModel.Current.EntitySets["Users"],
959+
Mock.Of<IODataQueryOptionsValidator>());
960+
961+
_sqlQuery = FilterBinder.BindFilter(queryOptions.Filter, ObjectInfo.For(typeof(User)), SqlBuilder.Select("*").From(typeof(User))).ToSqlQuery();
962+
}
963+
964+
[Fact]
965+
[Trait("Category", "Unit")]
966+
public void TheArgumentsShouldContainTheQueryValue()
967+
{
968+
Assert.Equal(AccessLevel.Read | AccessLevel.Write, _sqlQuery.Arguments[0].Value);
969+
}
970+
971+
[Fact]
972+
[Trait("Category", "Unit")]
973+
public void TheCommandTextShouldContainTheWhereClause()
974+
{
975+
string expected = SqlBuilder.Select("*")
976+
.From(typeof(User))
977+
.Where("(AccessLevelId = ?)", AccessLevel.Read | AccessLevel.Write)
978+
.ToSqlQuery()
979+
.CommandText;
980+
981+
Assert.Equal(expected, _sqlQuery.CommandText);
982+
}
983+
984+
[Fact]
985+
[Trait("Category", "Unit")]
986+
public void ThereShouldBe1ArgumentValue()
987+
{
988+
Assert.Equal(1, _sqlQuery.Arguments.Count);
989+
}
990+
}
991+
897992
public class WhenCallingBindFilterQueryOptionWithASinglePropertyLessThan
898993
{
899994
private readonly SqlQuery _sqlQuery;
@@ -1107,6 +1202,43 @@ public void ThereShouldBeNoArgumentValues()
11071202
}
11081203
}
11091204

1205+
public class WhenCallingBindFilterQueryOptionWithASinglePropertyNow
1206+
{
1207+
private readonly SqlQuery _sqlQuery;
1208+
1209+
public WhenCallingBindFilterQueryOptionWithASinglePropertyNow()
1210+
{
1211+
TestHelper.EnsureEDM();
1212+
1213+
var queryOptions = new ODataQueryOptions(
1214+
"?$filter=Created ge now()",
1215+
EntityDataModel.Current.EntitySets["Invoices"],
1216+
Mock.Of<IODataQueryOptionsValidator>());
1217+
1218+
_sqlQuery = FilterBinder.BindFilter(queryOptions.Filter, ObjectInfo.For(typeof(Invoice)), SqlBuilder.Select("*").From(typeof(Invoice))).ToSqlQuery();
1219+
}
1220+
1221+
[Fact]
1222+
[Trait("Category", "Unit")]
1223+
public void TheCommandTextShouldContainTheWhereClause()
1224+
{
1225+
string expected = SqlBuilder.Select("*")
1226+
.From(typeof(Invoice))
1227+
.Where("Created >= CURRENT_TIMESTAMP", null)
1228+
.ToSqlQuery()
1229+
.CommandText;
1230+
1231+
Assert.Equal(expected, _sqlQuery.CommandText);
1232+
}
1233+
1234+
[Fact]
1235+
[Trait("Category", "Unit")]
1236+
public void ThereShouldBeNoArgumentValues()
1237+
{
1238+
Assert.Equal(0, _sqlQuery.Arguments.Count);
1239+
}
1240+
}
1241+
11101242
public class WhenCallingBindFilterQueryOptionWithASinglePropertyRound
11111243
{
11121244
private readonly SqlQuery _sqlQuery;

MicroLite.Extensions.WebApi.OData.Tests/Binders/ODataQueryOptionExtensionsTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
using MicroLite.Builder;
22
using MicroLite.Extensions.WebApi.OData.Binders;
3-
using MicroLite.Extensions.WebApi.Tests.OData.TestEntities;
3+
using MicroLite.Extensions.WebApi.OData.Tests.TestEntities;
44
using Moq;
55
using Net.Http.OData.Model;
66
using Net.Http.OData.Query;
77
using Xunit;
88

9-
namespace MicroLite.Extensions.WebApi.Tests.OData.Binders
9+
namespace MicroLite.Extensions.WebApi.OData.Tests.Binders
1010
{
1111
public class ODataQueryOptionExtensionsTests
1212
{

MicroLite.Extensions.WebApi.OData.Tests/Binders/OrderByBinderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
using System;
22
using MicroLite.Builder;
33
using MicroLite.Extensions.WebApi.OData.Binders;
4-
using MicroLite.Extensions.WebApi.Tests.OData.TestEntities;
4+
using MicroLite.Extensions.WebApi.OData.Tests.TestEntities;
55
using MicroLite.Mapping;
66
using Moq;
77
using Net.Http.OData.Model;
88
using Net.Http.OData.Query;
99
using Xunit;
1010

11-
namespace MicroLite.Extensions.WebApi.Tests.OData.Binders
11+
namespace MicroLite.Extensions.WebApi.OData.Tests.Binders
1212
{
1313
public class OrderByBinderTests
1414
{

MicroLite.Extensions.WebApi.OData.Tests/Binders/SelectBinderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
using System;
22
using MicroLite.Builder;
33
using MicroLite.Extensions.WebApi.OData.Binders;
4-
using MicroLite.Extensions.WebApi.Tests.OData.TestEntities;
4+
using MicroLite.Extensions.WebApi.OData.Tests.TestEntities;
55
using MicroLite.Mapping;
66
using Moq;
77
using Net.Http.OData;
88
using Net.Http.OData.Model;
99
using Net.Http.OData.Query;
1010
using Xunit;
1111

12-
namespace MicroLite.Extensions.WebApi.Tests.OData.Binders
12+
namespace MicroLite.Extensions.WebApi.OData.Tests.Binders
1313
{
1414
public class SelectBinderTests
1515
{

MicroLite.Extensions.WebApi.OData.Tests/Binders/UnaryOperatorKindExtensionsTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using Net.Http.OData.Query.Expressions;
55
using Xunit;
66

7-
namespace MicroLite.Extensions.WebApi.Tests.OData.Binders
7+
namespace MicroLite.Extensions.WebApi.OData.Tests.Binders
88
{
99
public class UnaryOperatorKindExtensionsTests
1010
{

MicroLite.Extensions.WebApi.OData.Tests/Integration/CustomerController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.Net.Http;
22
using System.Threading.Tasks;
33
using System.Web.Http;
4-
using MicroLite.Extensions.WebApi.Tests.OData.TestEntities;
4+
using MicroLite.Extensions.WebApi.OData.Tests.TestEntities;
55
using Net.Http.OData.Query;
66

77
namespace MicroLite.Extensions.WebApi.OData.Tests.Integration

MicroLite.Extensions.WebApi.OData.Tests/Integration/IntegrationTest.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Net.Http;
55
using System.Web.Http;
66
using System.Web.Http.Dependencies;
7-
using MicroLite.Extensions.WebApi.Tests.OData.TestEntities;
87
using Moq;
98
using Net.Http.OData;
109
using Newtonsoft.Json;
@@ -27,12 +26,7 @@ protected IntegrationTest()
2726
_httpConfiguration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
2827
_httpConfiguration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
2928

30-
_httpConfiguration.UseOData(entityDataModelBuilder =>
31-
{
32-
entityDataModelBuilder
33-
.RegisterEntitySet<Customer>("Customers", x => x.Id)
34-
.RegisterEntitySet<Invoice>("Invoices", x => x.Id);
35-
});
29+
TestHelper.UseOData(_httpConfiguration);
3630

3731
_httpConfiguration.MapHttpAttributeRoutes();
3832

MicroLite.Extensions.WebApi.OData.Tests/Integration/MicroLiteODataApiController_DeleteTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Net;
33
using System.Net.Http;
44
using System.Threading.Tasks;
5-
using MicroLite.Extensions.WebApi.Tests.OData.TestEntities;
5+
using MicroLite.Extensions.WebApi.OData.Tests.TestEntities;
66
using Net.Http.OData;
77
using Xunit;
88

MicroLite.Extensions.WebApi.OData.Tests/Integration/MicroLiteODataApiController_GetPropertyTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public async Task Contains_Content_PropertyValue()
5858

5959
string result = await _httpResponseMessage.Content.ReadAsStringAsync();
6060

61-
Assert.Equal("{\"error\":{\"code\":\"400\",\"message\":\"The type 'MicroLite.Extensions.WebApi.Tests.OData.TestEntities.Customer' does not contain a property named 'Foo'.\"}}", result);
61+
Assert.Equal("{\"error\":{\"code\":\"400\",\"message\":\"The type 'MicroLite.Extensions.WebApi.OData.Tests.TestEntities.Customer' does not contain a property named 'Foo'.\"}}", result);
6262
}
6363

6464
[Fact]

0 commit comments

Comments
 (0)