Hi,
I am having a problem verifying the entity object that has been passed
to IRepository's saveorupdate method.
Here is the code snippet I am working upon :
This is my Action in controller , it contains more code but I am
putting only the concerned code :
[AcceptVerbs(HttpVerbs.Post)]
[Transaction]
public ActionResult EditContentFieldAnswer(int
symposiaEventId, int contentId, int contentFieldAnswerGroupId,
EventRegistrationPageInfo pageInfo) {
if (!string.IsNullOrEmpty(pageInfo.IsCrossCharge)) { //Create the
crosscharge record for this user.
try {
var legalEntity =
pageInfo.LegalEntityToCrossCharge;
legalEntity = string.IsNullOrEmpty(legalEntity) ?
"000" : legalEntity; //Default to 000
var costCenterToCrossCredit =
pageInfo.CostCenterToCredit;
var crosscharge =
_crosschargeQueries.GetCrosschargeForUser(symposiaEventId,
_sessionUserService.CurrentUser.
UserId);
if (crosscharge != null) { // This could be null
if the user was registered for the event then the presenter turned
crosscharging on
crosscharge.LegalEntityToCredit = legalEntity;
crosscharge.CostCenterToCredit =
costCenterToCrossCredit;
using
(_crosschargeRepository.DbContext.BeginTransaction()) {
_crosschargeRepository.SaveOrUpdate(crosscharge);
_crosschargeRepository.DbContext.CommitTransaction();
}
}
} catch {
message = "A problem was encountered preventing
the crosscharge from being created.";
_crosschargeRepository.DbContext.RollbackTransaction();
}
}
}
This is my mock object :
public static ICrosschargeQueries CreateMockCrossChargeQueries()
{
var mockedRepository =
MockRepository.GenerateMock<ICrosschargeQueries>();
mockedRepository.Expect(mr => mr.GetCrosschargeForUser(1,
1)).IgnoreArguments().Return(new Crosscharge());
return mockedRepository;
}
This is my Unit Test :
[Test]
public void
CanEditContentFieldAnswerWhenLegalEntityToCrossChargeIsNull()
{
var pageInfo =
CreateTransientEventRegistrationPageInfoWithLegalEntityToCrossChargeSetNull();
var result = _controller.EditContentFieldAnswer(1, 1, 0,
pageInfo).AssertViewRendered();
Assert.IsNotNull(result);
Assert.IsInstanceOf<ContentFieldAnswerFormViewModel>(result.ViewData.Model);
_crosschargeRepository.AssertWasCalled(x =>
x.SaveOrUpdate(null),y=>y.IgnoreArguments());
}
This is my Transient Object for "EventRegistrationPageInfo"
public static EventRegistrationPageInfo
CreateTransientEventRegistrationPageInfoWithLegalEntityToCrossChargeSetNull()
{
var eventRegistrationPageInfo = new
EventRegistrationPageInfo
{
CrossChargeId = "TestCrossChargeId",
IsCrossCharge = "true",
LegalEntityToCrossCharge = null,
SymposiaEventRegistrationId = "TestId",
IsRegistration = "true",
CostCenterToCredit = "TestCostCenterToCredit"
};
return eventRegistrationPageInfo;
}
If you look at the action code , just under the try block code I have
this line of code
legalEntity = string.IsNullOrEmpty(legalEntity) ? "000" :
legalEntity; //Default to 000
Which checks whether LegalEntityToCrossCharge property is null or
not, if its null the legalEntity property of CrossCharge is updated
"000" otherwise its assigned the value that was there in
EventRegistrationPageInfo object's LegalEntityToCrossCharge property.
My concern is While unit testing I can verify whether saveorupdate was
called or not using this line of code
_crosschargeRepository.AssertWasCalled(x =>
x.SaveOrUpdate(null),y=>y.IgnoreArguments());
but how do I get the values of crosscharge entity that has been
saved .I had passed LegalEntityToCrossCharge as null which allows
legalEntity property to be updated to "000", I need to verify this in
my unit test.
How can I do this?
--
You received this message because you are subscribed to the Google Groups
"Rhino.Mocks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rhinomocks?hl=en.