Updated member service with the newer property value queries and added unit tests for all of them

This commit is contained in:
Shannon
2013-12-20 15:44:53 +11:00
parent 414b65b269
commit 0f68818a19
4 changed files with 351 additions and 16 deletions

View File

@@ -316,12 +316,49 @@ namespace Umbraco.Core.Services
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
var query =
Query<IMember>.Builder.Where(
x =>
((Member)x).PropertyTypeAlias == propertyTypeAlias &&
((Member)x).IntegerropertyValue == value);
IQuery<IMember> query;
switch (matchType)
{
case ValuePropertyMatchType.Exact:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).IntegerropertyValue == value);
break;
case ValuePropertyMatchType.GreaterThan:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).IntegerropertyValue > value);
break;
case ValuePropertyMatchType.LessThan:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).IntegerropertyValue < value);
break;
case ValuePropertyMatchType.GreaterThanOrEqualTo:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).IntegerropertyValue >= value);
break;
case ValuePropertyMatchType.LessThanOrEqualTo:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).IntegerropertyValue <= value);
break;
default:
throw new ArgumentOutOfRangeException("matchType");
}
var members = repository.GetByQuery(query);
return members;
}
@@ -359,11 +396,48 @@ namespace Umbraco.Core.Services
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
var query =
Query<IMember>.Builder.Where(
x =>
((Member)x).PropertyTypeAlias == propertyTypeAlias &&
((Member)x).DateTimePropertyValue == value);
IQuery<IMember> query;
switch (matchType)
{
case ValuePropertyMatchType.Exact:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).DateTimePropertyValue == value);
break;
case ValuePropertyMatchType.GreaterThan:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).DateTimePropertyValue > value);
break;
case ValuePropertyMatchType.LessThan:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).DateTimePropertyValue < value);
break;
case ValuePropertyMatchType.GreaterThanOrEqualTo:
query =
Query<IMember>.Builder.Where(
x =>
((Member) x).PropertyTypeAlias == propertyTypeAlias &&
((Member) x).DateTimePropertyValue >= value);
break;
case ValuePropertyMatchType.LessThanOrEqualTo:
query =
Query<IMember>.Builder.Where(
x =>
((Member)x).PropertyTypeAlias == propertyTypeAlias &&
((Member)x).DateTimePropertyValue <= value);
break;
default:
throw new ArgumentOutOfRangeException("matchType");
}
var members = repository.GetByQuery(query);
return members;

View File

@@ -35,6 +35,12 @@ namespace Umbraco.Tests.Membership
//[Test]
//public void CreateUser_Base_Validation()
//[Test]
//public void GetPassword_Base_Validation()
//[Test]
//public void ResetPassword_Base_Validation()
[Test]
public void Sets_Defaults()
{

View File

@@ -1,3 +1,4 @@
using System;
using System.Linq;
using NUnit.Framework;
using Umbraco.Core.Models;
@@ -239,7 +240,7 @@ namespace Umbraco.Tests.Services
}
[Test]
public void Get_By_Property_Value_Exact()
public void Get_By_Property_String_Value_Exact()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
ServiceContext.MemberTypeService.Save(memberType);
@@ -255,7 +256,7 @@ namespace Umbraco.Tests.Services
}
[Test]
public void Get_By_Property_Value_Contains()
public void Get_By_Property_String_Value_Contains()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
ServiceContext.MemberTypeService.Save(memberType);
@@ -271,7 +272,7 @@ namespace Umbraco.Tests.Services
}
[Test]
public void Get_By_Property_Value_Starts_With()
public void Get_By_Property_String_Value_Starts_With()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
ServiceContext.MemberTypeService.Save(memberType);
@@ -287,7 +288,7 @@ namespace Umbraco.Tests.Services
}
[Test]
public void Get_By_Property_Value_Ends_With()
public void Get_By_Property_String_Value_Ends_With()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
ServiceContext.MemberTypeService.Save(memberType);
@@ -303,6 +304,255 @@ namespace Umbraco.Tests.Services
Assert.AreEqual(1, found.Count());
}
[Test]
public void Get_By_Property_Int_Value_Exact()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "number",
Name = "Number",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("number", i));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("number", 2);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"number", 2, ValuePropertyMatchType.Exact);
Assert.AreEqual(2, found.Count());
}
[Test]
public void Get_By_Property_Int_Value_Greater_Than()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "number",
Name = "Number",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("number", i));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("number", 10);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"number", 3, ValuePropertyMatchType.GreaterThan);
Assert.AreEqual(7, found.Count());
}
[Test]
public void Get_By_Property_Int_Value_Greater_Than_Equal_To()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "number",
Name = "Number",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("number", i));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("number", 10);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"number", 3, ValuePropertyMatchType.GreaterThanOrEqualTo);
Assert.AreEqual(8, found.Count());
}
[Test]
public void Get_By_Property_Int_Value_Less_Than()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Date)
{
Alias = "date",
Name = "Date",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("number", i));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("number", 1);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"number", 5, ValuePropertyMatchType.LessThan);
Assert.AreEqual(6, found.Count());
}
[Test]
public void Get_By_Property_Int_Value_Less_Than_Or_Equal()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "number",
Name = "Number",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("number", i));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("number", 1);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"number", 5, ValuePropertyMatchType.LessThanOrEqualTo);
Assert.AreEqual(7, found.Count());
}
[Test]
public void Get_By_Property_Date_Value_Exact()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "date",
Name = "Date",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0)));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 2, 0));
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"date", new DateTime(2013, 12, 20, 1, 2, 0), ValuePropertyMatchType.Exact);
Assert.AreEqual(2, found.Count());
}
[Test]
public void Get_By_Property_Date_Value_Greater_Than()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "date",
Name = "Date",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0)));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 10, 0));
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"date", new DateTime(2013, 12, 20, 1, 3, 0), ValuePropertyMatchType.GreaterThan);
Assert.AreEqual(7, found.Count());
}
[Test]
public void Get_By_Property_Date_Value_Greater_Than_Equal_To()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "date",
Name = "Date",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0)));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 10, 0));
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"date", new DateTime(2013, 12, 20, 1, 3, 0), ValuePropertyMatchType.GreaterThanOrEqualTo);
Assert.AreEqual(8, found.Count());
}
[Test]
public void Get_By_Property_Date_Value_Less_Than()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "date",
Name = "Date",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0)));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 1, 0));
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"date", new DateTime(2013, 12, 20, 1, 5, 0), ValuePropertyMatchType.LessThan);
Assert.AreEqual(6, found.Count());
}
[Test]
public void Get_By_Property_Date_Value_Less_Than_Or_Equal()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
memberType.AddPropertyType(new PropertyType(new Guid(), DataTypeDatabaseType.Integer)
{
Alias = "date",
Name = "Date",
//NOTE: This is what really determines the db type - the above definition doesn't really do anything
DataTypeDefinitionId = -36
}, "Content");
ServiceContext.MemberTypeService.Save(memberType);
var members = MockedMember.CreateSimpleMember(memberType, 10, (i, member) => member.SetValue("date", new DateTime(2013, 12, 20, 1, i, 0)));
ServiceContext.MemberService.Save(members);
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
customMember.SetValue("date", new DateTime(2013, 12, 20, 1, 1, 0));
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMembersByPropertyValue(
"date", new DateTime(2013, 12, 20, 1, 5, 0), ValuePropertyMatchType.LessThanOrEqualTo);
Assert.AreEqual(7, found.Count());
}
}
}

View File

@@ -31,7 +31,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
return member;
}
public static IEnumerable<IMember> CreateSimpleMember(IMemberType memberType, int amount)
public static IEnumerable<IMember> CreateSimpleMember(IMemberType memberType, int amount, Action<int, IMember> onCreating = null)
{
var list = new List<IMember>();
@@ -43,8 +43,13 @@ namespace Umbraco.Tests.TestHelpers.Entities
member.SetValue("bodyText", "This is a subpage" + i);
member.SetValue("author", "John Doe" + i);
member.ResetDirtyProperties(false);
if (onCreating != null)
{
onCreating(i, member);
}
member.ResetDirtyProperties(false);
list.Add(member);
}