开发者

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)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜