public void TestRemoveUnit()
{
#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);
}
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
#region Assert
UserService.AssertWasCalled(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1"));
UnitService.AssertWasCalled(a => a.GetVisibleByUser("Name2", "UserName"));
UnitAssociationRepository.AssertWasCalled(a => a.Remove(Arg<UnitAssociation>.Is.Anything));
var args = (UnitAssociation) UnitAssociationRepository.GetArgumentsForCallsMadeOn(a => a.Remove(Arg<UnitAssociation>.Is.Anything))[0][0];
Assert.AreEqual(2, args.Id);
Assert.AreEqual("ShortName2", args.Unit.ShortName);
Assert.AreEqual("LoginId1", args.User.LoginId);
Assert.AreEqual("Name2", args.Application.ToString());
#endregion Assert
}