public void TestGetVisibleByUserReturnsExpectedResults2()
{
#region Arrange
var schoolRepository = FakeRepository<School>();
Controller.Repository.Expect(a => a.OfType<School>()).Return(schoolRepository).Repeat.Any();
UnitService = new UnitService(RoleService, schoolRepository, UnitRepository, UnitAssociationRepository);
var roles = new List<Role>();
roles.Add(CreateValidEntities.Role(1));
roles[0].Name = "ManageSchool";
roles.Add(CreateValidEntities.Role(2));
roles[1].Name = "ManageUnit";
ControllerRecordFakes.FakeRoles(5, RoleRepository, roles);
ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
var schools = new List<School>();
schools.Add(CreateValidEntities.School(1));
schools[0].Units = new List<Unit>();
schools[0].Units.Add(CreateValidEntities.Unit(1));
schools[0].Units[0].SetIdTo(1);
ControllerRecordFakes.FakeSchools(3, schoolRepository, schools);
var units = new List<Unit>();
units.Add(CreateValidEntities.Unit(1));
units.Add(CreateValidEntities.Unit(2));
units.Add(CreateValidEntities.Unit(3));
units[0].School = schoolRepository.Queryable.First();
units[1].School = schoolRepository.Queryable.First();
units[2].School = schoolRepository.Queryable.First();
var unitAssociations = new List<UnitAssociation>();
unitAssociations.Add(CreateValidEntities.UnitAssociation(1));
unitAssociations.Add(CreateValidEntities.UnitAssociation(2));
unitAssociations.Add(CreateValidEntities.UnitAssociation(3));
unitAssociations[0].Application = ApplicationRepository.GetNullableById(2);
unitAssociations[0].Unit = units[0];
unitAssociations[0].Unit.School = CreateValidEntities.School(1);
unitAssociations[0].Unit.School.SetId("1");
unitAssociations[0].User = CreateValidEntities.User(1);
unitAssociations[0].User.LoginId = "UserName";
unitAssociations[1].Application = ApplicationRepository.GetNullableById(2);
unitAssociations[1].Unit = units[1];
unitAssociations[1].Unit.School = CreateValidEntities.School(1);
unitAssociations[1].Unit.School.SetId("1");
unitAssociations[1].User = CreateValidEntities.User(1);
unitAssociations[1].User.LoginId = "UserName";
unitAssociations[2].Application = ApplicationRepository.GetNullableById(2);
unitAssociations[2].Unit = units[2];
unitAssociations[2].Unit.School = CreateValidEntities.School(1);
unitAssociations[2].Unit.School.SetId("1");
unitAssociations[2].User = CreateValidEntities.User(1);
unitAssociations[2].User.LoginId = "UserName";
units[0].UnitAssociations = new List<UnitAssociation>();
units[1].UnitAssociations = new List<UnitAssociation>();
units[2].UnitAssociations = new List<UnitAssociation>();
units[0].UnitAssociations.Add(unitAssociations[0]);
units[1].UnitAssociations.Add(unitAssociations[1]);
units[1].UnitAssociations.Add(unitAssociations[2]);
ControllerRecordFakes.FakeUnits(2, UnitRepository, units);
ControllerRecordFakes.FakeUnitAssociations(0, UnitAssociationRepository, unitAssociations);
RoleService.Expect(a => a.GetManagementRolesForUserInApplication("Name2", "UserName")).Return(RoleRepository.Queryable.Select(a => a.Name).ToList()).Repeat.Any();
#endregion Arrange
#region Act
var result = UnitService.GetVisibleByUser("Name2", "UserName");
#endregion Act
#region Assert
Assert.IsNotNull(result);
Assert.IsInstanceOfType(result, typeof(IQueryable<Unit>));
Assert.AreEqual(1, result.Count());
Assert.AreEqual("ShortName1", result.ElementAt(0).ShortName);
#endregion Assert
}