Test my MVC2 Controller
[CompanyAuthorizationFilter]
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class TermSheetController : System.Web.Mvc.Controller
{
public ActionResult Notes(Guid? id, string notesText)
{
if (isModelValid(id))
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", notesText);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult SummaryInformation(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "SummaryInformation.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult ProductLegs(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "ProductLegs.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult AmortizationOptions(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "AmortizationOptions.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult Values(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "Values.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult Rates(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "Rates.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult RatesSpecific(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "RatesSpecific.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult AmortizationSchedule(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "AmortizationSchedule.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult SponsorInfo(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getBaseViewPath() + "SponsorInfo.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult BorrowerInfo(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getBaseViewPath() + "BorrowerInfo.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult SponsorContacts(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getBaseViewPath() + "SponsorContacts.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult CashFlows(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "CashFlows.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult PrePayment(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
if (string.IsNullOrEmpty(model.PrepaymentExport))
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Prepayment has not been calculated yet.");
}
else
{
return Json(model.PrepaymentExport);
}
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult FutureExposure(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
if (string.IsNullOrEmpty(model.ExposureExport))
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Potential Future Exposure has not been calculated yet.");
}
else
{
return Json(model.ExposureExport);
}
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult FutureExposureSpecific(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
if (string.IsNullOrEmpty(model.ExposureExport))
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Potential Future Exposure has not been calculated yet.");
}
else
{
return Json(model.ExposureExport);
}
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult History(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getBaseViewPath() + "History.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
public ActionResult ValuationHistoryGrid(Guid? id)
{
if (isModelValid(id))
{
ModelBase model = getModel(id.Value);
return View(getSpecificViewPath(model) + "ValuationHistoryGrid.aspx", model);
}
else
{
return View(@"~\Views\Indications\ShowAStringPartial.aspx", "", "Structure is not in a valid state. Could not render Term Sheet View.");
}
}
private bool isModelValid(Guid? id)
{
try
{
if (id.HasValue)
{
IndicationBase indication = CachedTransactionManager<IndicationBase>.GetCachedTransactions(id.Value);
if (indication.Model == null)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
catch (Exception e)
{
return false;
}
}
private ModelBase getModel(Guid id)
{
IndicationBase indication = CachedTransactionManager<IndicationBase>.GetCachedTransactions(id);
return indication.Model;
}
private string getSpecificViewPath(ModelBase model)
{
var viewPath = "";
if (model.GetType() == typeof(Chatham.Web.Models.Indications.SwapModel))
{
viewPath = @"~\Views\Indications\TermSheetViews\Swap\";
}
if (model.GetType() == typeof(Chatham.Web.Models.Indications.OptionModel))
{
viewPath = @"~\Views\Indications\TermSheetViews\Option\";
}
if (model.GetType() == typeof(Chatham.Web.Models.Indications.CollarModel))
{
viewPath = @"~\Views\Indications\TermSheetViews\Collar\";
}
if (model.GetType() == typeof(Chatham.Web.Models.Indications.CompoundSwapModel))
{
viewPath = @"~\Views\Indications\TermSheetViews\CompoundSwap\";
}
return viewPath;
}
private string getBaseViewPath()
{
return @"~\Views\Indications\TermSheetViews\";
}
}
So just looking through the code you can probably tell what it does. Each controller action refers to a different desired result, and I'm passing in (for the most part), a Guid? id, and we are using that id t开发者_StackOverflow中文版o call into the private helper methods, get the model, and return a specific view based on that model.
I really don't even know where to begin to unit test this class. Can I get some help here? Thanks!
Well, to start with, you should test to make sure that a specific Guid passed in results in a ViewResult with the right View location set. AKA
ActionResult action = _myControllerToTest.Notes(null, null);
Assert.IsNotNull(action);
ViewResult viewResult = action as ViewResult;
Assert.IsNotNull(viewResult);
// Check viewResult for correct view path and model data
Start there, and make sure to inject the depdencies (particularly for that isModelValid() method, since it calls out to CachedTransactionManager)
加载中,请稍侯......
精彩评论