public void make_datetime_fields_be_containment() { JsonLocatorField.For <Target>(EnumStorage.AsInteger, x => x.Date) .ShouldUseContainmentOperator().ShouldBeTrue(); JsonLocatorField.For <Target>(EnumStorage.AsInteger, x => x.DateOffset) .ShouldUseContainmentOperator().ShouldBeTrue(); }
public void two_deep_members_json_locator() { var inner = ReflectionHelper.GetProperty<Target>(x => x.Inner); var number = ReflectionHelper.GetProperty<Target>(x => x.Number); var twodeep = new JsonLocatorField(EnumStorage.AsInteger, new MemberInfo[] {inner, number}); twodeep.SqlLocator.ShouldBe("CAST(d.data -> 'Inner' ->> 'Number' as integer)"); }
public void three_deep_members_json_locator_for_string_property() { var inner = ReflectionHelper.GetProperty <Target>(x => x.Inner); var stringProp = ReflectionHelper.GetProperty <Target>(x => x.String); var deep = new JsonLocatorField(new MemberInfo[] { inner, inner, stringProp }); deep.SqlLocator.ShouldBe("d.data -> 'Inner' -> 'Inner' ->> 'String'"); }
public void three_deep_members_json_locator() { var inner = ReflectionHelper.GetProperty <Target>(x => x.Inner); var number = ReflectionHelper.GetProperty <Target>(x => x.Number); var deep = new JsonLocatorField(new MemberInfo[] { inner, inner, number }); deep.SqlLocator.ShouldBe("CAST(d.data -> 'Inner' -> 'Inner' ->> 'Number' as integer)"); }
public void three_deep_members_json_locator_for_string_property(Casing casing, string innerName, string stringName) { var inner = ReflectionHelper.GetProperty <Target>(x => x.Inner); var stringProp = ReflectionHelper.GetProperty <Target>(x => x.String); var deep = new JsonLocatorField("d.data", new StoreOptions(), EnumStorage.AsInteger, casing, new MemberInfo[] { inner, inner, stringProp }); deep.SqlLocator.ShouldBe($"d.data -> '{innerName}' -> '{innerName}' ->> '{stringName}'"); }
public void three_deep_members_json_locator(Casing casing, string innerName, string numberName) { var inner = ReflectionHelper.GetProperty <Target>(x => x.Inner); var number = ReflectionHelper.GetProperty <Target>(x => x.Number); var deep = new JsonLocatorField("d.data", new StoreOptions(), EnumStorage.AsInteger, casing, new MemberInfo[] { inner, inner, number }); deep.SqlLocator.ShouldBe($"CAST(d.data -> '{innerName}' -> '{innerName}' ->> '{numberName}' as integer)"); }
public void three_deep_members_json_locator_for_string_property() { var inner = ReflectionHelper.GetProperty<Target>(x => x.Inner); var stringProp = ReflectionHelper.GetProperty<Target>(x => x.String); var deep = new JsonLocatorField(new MemberInfo[] { inner, inner, stringProp }); deep.SqlLocator.ShouldBe("d.data -> 'Inner' -> 'Inner' ->> 'String'"); }
public void two_deep_members_json_locator(Casing casing) { var inner = ReflectionHelper.GetProperty <Target>(x => x.Inner); var number = ReflectionHelper.GetProperty <Target>(x => x.Number); var innerName = casing == Casing.Default ? "Inner" : "inner"; var numberName = casing == Casing.Default ? "Number" : "number"; var twodeep = new JsonLocatorField("d.data", EnumStorage.AsInteger, casing, new MemberInfo[] { inner, number }); twodeep.SqlLocator.ShouldBe($"CAST(d.data -> '{innerName}' ->> '{numberName}' as integer)"); }
public void do_not_use_timestamp_functions_on_selection_locator_for_dates() { JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, x => x.DateTime) .SelectionLocator.ShouldBe("CAST(d.data ->> 'DateTime' as timestamp without time zone)"); JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, x => x.NullableDateTime) .SelectionLocator.ShouldBe("CAST(d.data ->> 'NullableDateTime' as timestamp without time zone)"); JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, x => x.DateTimeOffset) .SelectionLocator.ShouldBe("CAST(d.data ->> 'DateTimeOffset' as timestamp with time zone)"); JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, x => x.NullableDateTimeOffset) .SelectionLocator.ShouldBe("CAST(d.data ->> 'NullableDateTimeOffset' as timestamp with time zone)"); }
public void do_not_use_timestamp_functions_on_selection_locator_for_dates(Casing casing, string dateTimeName, string nullableDateTimeName, string dateTimeOffsetName, string nullableDateTimeOffsetName) { JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.DateTime) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{dateTimeName}' as timestamp without time zone)"); JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.NullableDateTime) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{nullableDateTimeName}' as timestamp without time zone)"); JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.DateTimeOffset) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{dateTimeOffsetName}' as timestamp with time zone)"); JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.NullableDateTimeOffset) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{nullableDateTimeOffsetName}' as timestamp with time zone)"); }
public void do_not_use_timestamp_functions_on_selection_locator_for_dates(Casing casing) { var name = casing == Casing.Default ? "DateTime" : "dateTime"; JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.DateTime) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{name}' as timestamp without time zone)"); name = casing == Casing.Default ? "NullableDateTime" : "nullableDateTime"; JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.NullableDateTime) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{name}' as timestamp without time zone)"); name = casing == Casing.Default ? "DateTimeOffset" : "dateTimeOffset"; JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.DateTimeOffset) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{name}' as timestamp with time zone)"); name = casing == Casing.Default ? "NullableDateTimeOffset" : "nullableDateTimeOffset"; JsonLocatorField.For <DocWithDates>(EnumStorage.AsString, casing, x => x.NullableDateTimeOffset) .SelectionLocator.ShouldBe($"CAST(d.data ->> '{name}' as timestamp with time zone)"); }
public void UnknownPGTypesMapToJsonb() { var locator = JsonLocatorField.For <UserNested>(EnumStorage.AsInteger, Casing.Default, x => x.Nested); Assert.Equal("CAST(d.data ->> 'Nested' as jsonb)", locator.SqlLocator); }
public void locator_for_enum_in_string_mode() { var field = JsonLocatorField.For <Target>(EnumStorage.AsString, x => x.Color); field.SqlLocator.ShouldBe("d.data ->> 'Color'"); }
public void locator_for_enum_in_string_mode(Casing casing, string memberName) { JsonLocatorField.For <Target>(EnumStorage.AsString, casing, x => x.Color) .SqlLocator.ShouldBe($"d.data ->> '{memberName}'"); }
public void locator_for_enum_in_integer_mode(Casing casing, string memberName) { JsonLocatorField.For <Target>(EnumStorage.AsInteger, casing, x => x.Color) .SqlLocator.ShouldBe($"CAST(d.data ->> '{memberName}' as integer)"); }
public void locator_for_number(Casing casing, string memberName) { JsonLocatorField.For <User>(EnumStorage.AsInteger, casing, x => x.Age) .SqlLocator.ShouldBe($"CAST(d.data ->> '{memberName}' as integer)"); }