public void TestRoleServiceGetVisibleByUserReturnsExpectedResults4()
{
#region Arrange
var applicationRoleRepository = FakeRepository<ApplicationRole>();
RoleService = new RoleService(PermissionRepository, applicationRoleRepository);
ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
ControllerRecordFakes.FakeUsers(3, UserRepository);
ControllerRecordFakes.FakeRoles(10, RoleRepository);
var permissions = new List<Permission>();
for (int i = 0; i < 10; i++)
{
permissions.Add(CreateValidEntities.Permission(i + 1));
permissions[i].Application = ApplicationRepository.Queryable.First();
permissions[i].User = UserRepository.GetNullableById(3);
permissions[i].Role = RoleRepository.GetNullableById(i + 1);
}
permissions[4].User = UserRepository.GetNullableById(2);
ControllerRecordFakes.FakePermissions(0, PermissionRepository, permissions);
var applicationRoles = new List<ApplicationRole>();
for (int i = 0; i < 10; i++)
{
applicationRoles.Add(CreateValidEntities.ApplicationRole(i+1));
applicationRoles[i].Role = RoleRepository.GetNullableById(i + 1);
applicationRoles[i].Application = ApplicationRepository.GetNullableById(1);
}
ControllerRecordFakes.FakeApplicationRoles(0, applicationRoleRepository, applicationRoles);
#endregion Arrange
#region Act
//var manageableRoles = from ar in applicationRoleRepository.Queryable
// where ar.Application.Name == "Name1" &&
// ar.Level > (
// (from p in PermissionRepository.Queryable
// join a in applicationRoleRepository.Queryable on
// new { Role = p.Role.Id, App = p.Application.Id }
// equals new { Role = a.Role.Id, App = a.Application.Id }
// where p.Application.Name == "Name1" &&
// p.User.LoginId == "LoginId2" &&
// a.Level != null
// select a.Level).Max()
// )
// select ar.Role;
var result = RoleService.GetVisibleByUser("Name1", "LoginId2");
#endregion Act
#region Assert
Assert.IsNotNull(result);
Assert.IsInstanceOfType(result, typeof(IQueryable<Role>));
Assert.AreEqual(6, result.Count());
for (int i = 1; i < 6; i++)
{
Assert.AreEqual(string.Format("Name{0}", (i+4)), result.ElementAt(i).Name);
}
#endregion Assert
}