public void TestRemoveUnitThrowsExceptionIfRecordNotFound4()
{
try
{
#region Arrange
Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
ControllerRecordFakes.FakeUnits(3, 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);
}
unitAssociations.Add(CreateValidEntities.UnitAssociation(4));
unitAssociations[3].Application = ApplicationRepository.GetNullableById(2);
unitAssociations[3].User = UserRepository.GetNullableById(1);
unitAssociations[3].Unit = UnitRepository.GetNullableById(2); //Duplicate
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).Repeat.Any();
#endregion Arrange
#region Act
Controller.RemoveUnit("Name2", "LoginId1", 2);
#endregion Act
}
catch (Exception ex)
{
#region Assert
Assert.IsNotNull(ex);
Assert.AreEqual("Sequence contains more than one element", 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;
}
}