diff --git a/src/Umbraco.Core/Services/IMemberService.cs b/src/Umbraco.Core/Services/IMemberService.cs index 35e3a773a6cc..a3d6949767c5 100644 --- a/src/Umbraco.Core/Services/IMemberService.cs +++ b/src/Umbraco.Core/Services/IMemberService.cs @@ -328,85 +328,6 @@ IEnumerable FindMembersByDisplayName( out long totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith); - /// - /// Gets a list of Members based on a property search - /// - /// Alias of the PropertyType to search for - /// Value to match - /// - /// The type of match to make as . Default is - /// - /// - /// - /// - /// - /// - /// Instead of using this method, which queries the database directly, we advise using search (Examine). - /// You can configure an `IValueSetValidator` to ensure all the properties you need are indexed. - /// - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - IEnumerable GetMembersByPropertyValue( - string propertyTypeAlias, - string value, - StringPropertyMatchType matchType = StringPropertyMatchType.Exact); - - /// - /// Gets a list of Members based on a property search - /// - /// Alias of the PropertyType to search for - /// Value to match - /// - /// The type of match to make as . Default is - /// - /// - /// - /// - /// - /// - /// Instead of using this method, which queries the database directly, we advise using search (Examine). - /// You can configure an `IValueSetValidator` to ensure all the properties you need are indexed. - /// - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, int value, ValuePropertyMatchType matchType = ValuePropertyMatchType.Exact); - - /// - /// Gets a list of Members based on a property search - /// - /// Alias of the PropertyType to search for - /// Value to match - /// - /// - /// - /// - /// Instead of using this method, which queries the database directly, we advise using search (Examine). - /// You can configure an `IValueSetValidator` to ensure all the properties you need are indexed. - /// - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, bool value); - - /// - /// Gets a list of Members based on a property search - /// - /// Alias of the PropertyType to search for - /// Value to match - /// - /// The type of match to make as . Default is - /// - /// - /// - /// - /// - /// - /// Instead of using this method, which queries the database directly, we advise using search (Examine). - /// You can configure an `IValueSetValidator` to ensure all the properties you need are indexed. - /// - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, DateTime value, ValuePropertyMatchType matchType = ValuePropertyMatchType.Exact); - /// /// Saves only the properties related to login for the member, using an optimized, non-locking update. /// diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs index ec57ead75cf5..770ba2f25197 100644 --- a/src/Umbraco.Core/Services/MemberService.cs +++ b/src/Umbraco.Core/Services/MemberService.cs @@ -723,111 +723,6 @@ public IEnumerable FindByUsername(string login, long pageIndex, int pag return _memberRepository.GetPage(query, pageIndex, pageSize, out totalRecords, propertyAliases: null, filter: null, Ordering.By("LoginName")); } - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, string value, StringPropertyMatchType matchType = StringPropertyMatchType.Exact) - { - using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); - scope.ReadLock(Constants.Locks.MemberTree); - IQuery query; - - switch (matchType) - { - case StringPropertyMatchType.Exact: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && (((Member) x).LongStringPropertyValue!.SqlEquals(value, TextColumnType.NText) || ((Member) x).ShortStringPropertyValue!.SqlEquals(value, TextColumnType.NVarchar))); - break; - case StringPropertyMatchType.Contains: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && (((Member) x).LongStringPropertyValue!.SqlContains(value, TextColumnType.NText) || ((Member) x).ShortStringPropertyValue!.SqlContains(value, TextColumnType.NVarchar))); - break; - case StringPropertyMatchType.StartsWith: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && (((Member) x).LongStringPropertyValue.SqlStartsWith(value, TextColumnType.NText) || ((Member) x).ShortStringPropertyValue.SqlStartsWith(value, TextColumnType.NVarchar))); - break; - case StringPropertyMatchType.EndsWith: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && (((Member) x).LongStringPropertyValue!.SqlEndsWith(value, TextColumnType.NText) || ((Member) x).ShortStringPropertyValue!.SqlEndsWith(value, TextColumnType.NVarchar))); - break; - default: - throw new ArgumentOutOfRangeException(nameof(matchType)); - } - - return _memberRepository.Get(query); - } - - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, int value, ValuePropertyMatchType matchType = ValuePropertyMatchType.Exact) - { - using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); - scope.ReadLock(Constants.Locks.MemberTree); - IQuery query; - - switch (matchType) - { - case ValuePropertyMatchType.Exact: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).IntegerPropertyValue == value); - break; - case ValuePropertyMatchType.GreaterThan: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).IntegerPropertyValue > value); - break; - case ValuePropertyMatchType.LessThan: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).IntegerPropertyValue < value); - break; - case ValuePropertyMatchType.GreaterThanOrEqualTo: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).IntegerPropertyValue >= value); - break; - case ValuePropertyMatchType.LessThanOrEqualTo: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).IntegerPropertyValue <= value); - break; - default: - throw new ArgumentOutOfRangeException(nameof(matchType)); - } - - return _memberRepository.Get(query); - } - - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, bool value) - { - using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); - scope.ReadLock(Constants.Locks.MemberTree); - IQuery query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).BoolPropertyValue == value); - - return _memberRepository.Get(query); - } - - /// - [Obsolete("Please use Search (Examine) instead, scheduled for removal in Umbraco 18.")] - public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, DateTime value, ValuePropertyMatchType matchType = ValuePropertyMatchType.Exact) - { - using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); - scope.ReadLock(Constants.Locks.MemberTree); - IQuery query; - - switch (matchType) - { - case ValuePropertyMatchType.Exact: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).DateTimePropertyValue == value); - break; - case ValuePropertyMatchType.GreaterThan: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).DateTimePropertyValue > value); - break; - case ValuePropertyMatchType.LessThan: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).DateTimePropertyValue < value); - break; - case ValuePropertyMatchType.GreaterThanOrEqualTo: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).DateTimePropertyValue >= value); - break; - case ValuePropertyMatchType.LessThanOrEqualTo: - query = Query().Where(x => ((Member) x).PropertyTypeAlias == propertyTypeAlias && ((Member) x).DateTimePropertyValue <= value); - break; - default: - throw new ArgumentOutOfRangeException(nameof(matchType)); // causes rollback // causes rollback - } - - // TODO: Since this is by property value, we need a GetByPropertyQuery on the repo! - return _memberRepository.Get(query); - } - /// /// Checks if a Member with the id exists /// diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs index b9fe69b56260..0d915304ffb1 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/MemberServiceTests.cs @@ -1,16 +1,12 @@ // Copyright (c) Umbraco. // See LICENSE for more details. -using Examine; -using Examine.Search; using NUnit.Framework; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.Membership; using Umbraco.Cms.Core.Persistence.Querying; using Umbraco.Cms.Core.Services; -using Umbraco.Cms.Core.Sync; -using Umbraco.Cms.Infrastructure.Examine; using Umbraco.Cms.Infrastructure.HybridCache.Factories; using Umbraco.Cms.Infrastructure.Persistence; using Umbraco.Cms.Infrastructure.Persistence.Dtos; @@ -995,431 +991,6 @@ public async Task Find_By_Login_Exact() Assert.AreEqual(1, found.Count()); } - [Test] - public async Task Get_By_Property_String_Value_Exact() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers(memberType, 10); - MemberService.Save(members); - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "title", "hello member"); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(1, found.Count()); - } - - [Test] - public async Task Get_By_Property_String_Value_Contains() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers(memberType, 10); - MemberService.Save(members); - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "title", " member", StringPropertyMatchType.Contains); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(11, found.Count()); - } - - [Test] - public async Task Get_By_Property_String_Value_Starts_With() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers(memberType, 10); - MemberService.Save(members); - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "title", "Member No", StringPropertyMatchType.StartsWith); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(10, found.Count()); - } - - [Test] - public async Task Get_By_Property_String_Value_Ends_With() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers(memberType, 10); - MemberService.Save(members); - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("title", "title of mine"); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "title", "mine", StringPropertyMatchType.EndsWith); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(1, found.Count()); - } - - [Test] - public async Task Get_By_Property_Int_Value_Exact() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "number") - { - Name = "Number", - DataTypeId = - -51 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = - MemberBuilder.CreateMultipleSimpleMembers(memberType, 10, (i, member) => member.SetValue("number", i)); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("number", 2); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "number", 2); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(2, found.Count()); - } - - [Test] - public async Task Get_By_Property_Int_Value_Greater_Than() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "number") - { - Name = "Number", - DataTypeId = - -51 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = - MemberBuilder.CreateMultipleSimpleMembers(memberType, 10, (i, member) => member.SetValue("number", i)); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("number", 10); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "number", 3, ValuePropertyMatchType.GreaterThan); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(7, found.Count()); - } - - [Test] - public async Task Get_By_Property_Int_Value_Greater_Than_Equal_To() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "number") - { - Name = "Number", - DataTypeId = - -51 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = - MemberBuilder.CreateMultipleSimpleMembers(memberType, 10, (i, member) => member.SetValue("number", i)); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("number", 10); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "number", 3, ValuePropertyMatchType.GreaterThanOrEqualTo); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(8, found.Count()); - } - - [Test] - public async Task Get_By_Property_Int_Value_Less_Than() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.DateTime, - ValueStorageType.Date, - "number") - { - Name = "Number", - DataTypeId = - -51 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = - MemberBuilder.CreateMultipleSimpleMembers(memberType, 10, (i, member) => member.SetValue("number", i)); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("number", 1); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "number", 5, ValuePropertyMatchType.LessThan); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(6, found.Count()); - } - - [Test] - public async Task Get_By_Property_Int_Value_Less_Than_Or_Equal() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "number") - { - Name = "Number", - DataTypeId = - -51 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = - MemberBuilder.CreateMultipleSimpleMembers(memberType, 10, (i, member) => member.SetValue("number", i)); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("number", 1); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "number", 5, ValuePropertyMatchType.LessThanOrEqualTo); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(7, found.Count()); - } - - [Test] - public async Task Get_By_Property_Date_Value_Exact() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "date") - { - Name = "Date", - DataTypeId = - -36 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers( - memberType, - 10, - (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0))); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 2, 0)); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "date", new DateTime(2013, 12, 20, 1, 2, 0)); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(2, found.Count()); - } - - [Test] - public async Task Get_By_Property_Date_Value_Greater_Than() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "date") - { - Name = "Date", - DataTypeId = - -36 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers( - memberType, - 10, - (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0))); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 10, 0)); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "date", new DateTime(2013, 12, 20, 1, 3, 0), ValuePropertyMatchType.GreaterThan); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(7, found.Count()); - } - - [Test] - public async Task Get_By_Property_Date_Value_Greater_Than_Equal_To() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "date") - { - Name = "Date", - DataTypeId = - -36 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers( - memberType, - 10, - (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0))); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 10, 0)); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "date", new DateTime(2013, 12, 20, 1, 3, 0), ValuePropertyMatchType.GreaterThanOrEqualTo); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(8, found.Count()); - } - - [Test] - public async Task Get_By_Property_Date_Value_Less_Than() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "date") - { - Name = "Date", - DataTypeId = - -36 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers( - memberType, - 10, - (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0))); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 1, 0)); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "date", new DateTime(2013, 12, 20, 1, 5, 0), ValuePropertyMatchType.LessThan); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(6, found.Count()); - } - - [Test] - public async Task Get_By_Property_Date_Value_Less_Than_Or_Equal() - { - IMemberType memberType = MemberTypeBuilder.CreateSimpleMemberType(); - memberType.AddPropertyType( - new PropertyType( - ShortStringHelper, - Constants.PropertyEditors.Aliases.Integer, - ValueStorageType.Integer, - "date") - { - Name = "Date", - DataTypeId = - -36 // NOTE: This is what really determines the db type - the above definition doesn't really do anything - }, - "content", - "Content"); - await MemberTypeService.CreateAsync(memberType, Constants.Security.SuperUserKey); - var members = MemberBuilder.CreateMultipleSimpleMembers( - memberType, - 10, - (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0))); - MemberService.Save(members); - - var customMember = MemberBuilder.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello"); - customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 1, 0)); - MemberService.Save(customMember); - -#pragma warning disable CS0618 // Type or member is obsolete - var found = MemberService.GetMembersByPropertyValue( - "date", - new DateTime(2013, 12, 20, 1, 5, 0), - ValuePropertyMatchType.LessThanOrEqualTo); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(7, found.Count()); - } - [Test] public async Task Count_All_Members() {