2011-05-05 3 views
0
[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\"; 
     } 
    } 

Donc, juste en regardant le code, vous pouvez probablement dire ce qu'il fait. Chaque action du contrôleur fait référence à un résultat souhaité différent, et je passe (pour la plupart), un Guid? id, et nous utilisons ce id pour appeler dans les méthodes auxiliaires private, obtenir le model, et retourner un view basé sur ce model.Testez mon contrôleur MVC2

Je ne sais même pas par où commencer pour tester cette classe. Puis-je obtenir de l'aide ici? Merci!

Répondre

0

Eh bien, pour commencer, vous devez tester pour vous assurer qu'une Guid spécifique adoptée en résultats dans un ViewResult avec le bon ensemble Voir emplacement. Alias ​​

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 

Démarrer là, et assurez-vous d'injecter les depdencies (en particulier pour cette méthode isModelValid(), car il appelle à CachedTransactionManager)

+0

Serais-je capable de se moquer CachedTransactionManager de retourner un modèle spécifique à moi à chaque fois au lieu d'utiliser l'injection de dépendance? – slandau

+0

Correct. Avec une bibliothèque d'aide comme Moq, vous pouvez injecter l'objet mocké pour retourner un résultat spécifique à chaque fois. – Tejs

Questions connexes