public void TestRemoveUnitThrowsExceptionIfCurrentUserDoesNotHaveAccess2()
{
try
{
#region Arrange
Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
ControllerRecordFakes.FakeUnits(7, UnitRepository);
ControllerRecordFakes.FakeUsers(3, UserRepository);
var unitAssociations = new List<UnitAssociation>();
for (int i = 0; i < 3; i++)
{
unitAssociations.Add(CreateValidEntities.UnitAssociation(i + 1));
unitAssociations[i].Application = ApplicationRepository.GetNullableById(2);
unitAssociations[i].User = UserRepository.GetNullableById(1);
unitAssociations[i].Unit = UnitRepository.GetNullableById(i + 1);
}
ControllerRecordFakes.FakeUnitAssociations(2, UnitAssociationRepository, unitAssociations);
UserService.Expect(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1")).Return(true).Repeat.Any();
UnitService.Expect(a => a.GetVisibleByUser("Name2", "UserName")).Return(UnitRepository.Queryable.Where(a => a.Id >= 3)).Repeat.Any();
#endregion Arrange
#region Act
Controller.RemoveUnit("Name2", "LoginId1", 2);
#endregion Act
}
catch (Exception ex)
{
#region Assert
Assert.IsNotNull(ex);
Assert.AreEqual("UserName does not have access to manage the given unit", ex.Message);
UserService.AssertWasCalled(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1"));
UnitService.AssertWasCalled(a => a.GetVisibleByUser("Name2", "UserName"));
UnitAssociationRepository.AssertWasNotCalled(a => a.Remove(Arg<UnitAssociation>.Is.Anything));
#endregion Assert
throw;
}
}