public void TestManageReturnsView2()
        {
            #region Arrange
            Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
            ControllerRecordFakes.FakeUnits(3, UnitRepository);
            UnitService.Expect(a => a.GetVisibleByUser("appName", "UserName")).Return(UnitRepository.GetAll().AsQueryable()).Repeat.Any();
            ControllerRecordFakes.FakeRoles(3, RoleRepository);
            RoleService.Expect(a => a.GetVisibleByUser("appName", "UserName")).Return(RoleRepository.GetAll().AsQueryable()).Repeat.Any();
            ControllerRecordFakes.FakeUsers(3, UserRepository);
            UserService.Expect(a => a.GetByApplication("appName", "UserName")).Return(UserRepository.Queryable).Repeat.Any();
            var application = CreateValidEntities.Application(1);
            application.Name = "appName";
            var permissions = new List <Permission>();
            for (int i = 0; i < 4; i++)
            {
                permissions.Add(CreateValidEntities.Permission(i + 1));
                permissions[i].Application = application;
                permissions[i].User        = UserRepository.Queryable.First();
                permissions[i].Role        = RoleRepository.GetNullableById(i + 1);
            }
            permissions[1].User = UserRepository.GetNullableById(2);
            permissions[2].User = UserRepository.GetNullableById(3);
            permissions[3].Role = RoleRepository.GetNullableById(1);
            ControllerRecordFakes.FakePermissions(0, PermissionRepository, permissions);
            var unitAssociations = new List <UnitAssociation>();
            for (int i = 0; i < 4; i++)
            {
                unitAssociations.Add(CreateValidEntities.UnitAssociation(i + 1));
                unitAssociations[i].Application = application;
                unitAssociations[i].User        = UserRepository.Queryable.First();
                unitAssociations[i].Unit        = UnitRepository.GetNullableById(i + 1);
            }
            unitAssociations[1].User = UserRepository.GetNullableById(2);
            unitAssociations[2].User = UserRepository.GetNullableById(3);
            unitAssociations[3].Unit = UnitRepository.GetNullableById(1);
            ControllerRecordFakes.FakeUnitAssociations(0, UnitAssociationRepository, unitAssociations);
            #endregion Arrange

            #region Act
            var result = Controller.Manage("appName")
                         .AssertViewRendered()
                         .WithViewData <UserManagementViewModel>();
            #endregion Act

            #region Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("appName", result.Application);
            Assert.AreEqual(3, result.Roles.Count);
            Assert.AreEqual("Name2", result.Roles[1].Value);
            Assert.AreEqual(3, result.Units.Count);
            Assert.AreEqual("ShortName2", result.Units[1].Value);
            Assert.AreEqual(3, result.UserShowModel.Count);
            Assert.AreEqual("FirstName2", result.UserShowModel[1].FirstName);
            Assert.AreEqual("LastName2", result.UserShowModel[1].LastName);
            Assert.AreEqual("*****@*****.**", result.UserShowModel[1].Email);
            Assert.AreEqual("LoginId2", result.UserShowModel[1].Login);
            Assert.AreEqual(null, result.UserShowModel[1].Phone);

            Assert.AreEqual(2, result.UserShowModel[0].Permissions.Count);
            Assert.AreEqual("Name1", result.UserShowModel[0].Permissions[1].RoleName);
            Assert.AreEqual("Name1", result.UserShowModel[0].Permissions[0].RoleName);
            Assert.AreEqual(2, result.UserShowModel[0].UnitAssociations.Count);
            Assert.AreEqual("ShortName1", result.UserShowModel[0].UnitAssociations[1].UnitName);
            Assert.AreEqual("ShortName1", result.UserShowModel[0].UnitAssociations[0].UnitName);

            Assert.AreEqual(1, result.UserShowModel[1].Permissions.Count);
            Assert.AreEqual("Name2", result.UserShowModel[1].Permissions[0].RoleName);
            Assert.AreEqual(1, result.UserShowModel[1].UnitAssociations.Count);
            Assert.AreEqual("ShortName2", result.UserShowModel[1].UnitAssociations[0].UnitName);

            Assert.AreEqual(1, result.UserShowModel[2].Permissions.Count);
            Assert.AreEqual("Name3", result.UserShowModel[2].Permissions[0].RoleName);
            Assert.AreEqual(1, result.UserShowModel[2].UnitAssociations.Count);
            Assert.AreEqual("ShortName3", result.UserShowModel[2].UnitAssociations[0].UnitName);

            #endregion Assert
        }
 /// <summary>
 /// Gets the valid entity of type T
 /// </summary>
 /// <param name="counter">The counter.</param>
 /// <returns>A valid entity of type T</returns>
 protected override Application GetValid(int?counter)
 {
     return(CreateValidEntities.Application(counter));
 }