view Agendas/trunk/src/Agendas.Web.Tests/Controllers/PersonaControllerTests.cs @ 262:b87a4875b2b6

ControllerTests: Refactoring.
author juanjose.montesdeocaarbos
date Sat, 22 Oct 2011 14:08:30 -0300
parents d669e9b9e24e
children 3339d1da6a63
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Agendas.NHibernate;
using Agendas.Repositories.Tests.Infraestructure;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Repositories.NHibernate;
using AltNetHispano.Agendas.Web.Controllers;
using AltNetHispano.Agendas.Web.Models;
using Moq;
using NUnit.Framework;

namespace Agendas.Web.Tests.Controllers
{
    [TestFixture]
    public class PersonaControllerTests : MvcControllerTestsBase
    {
        private void SetearUsuario()
        {
            var seguridad = new Mock<ISeguridad>();
            seguridad.Setup(s => s.GetUserName()).Returns("neluz");
            IdentityContext.Init(seguridad.Object, new PersonaRepository(NhHelper.GetSessionFactory()));
        }

        [SetUp]
        public void Setup()
        {
            NhHelperTest.CleanDb();
            //PopulatePersona();
            SetearUsuario();
            SetupTests();
        }

        [Test]
        public void PersonaNueva_ErrorAlGuardarTwitterConArroba()
        {
            var personaController = new PersonaController { ControllerContext = ControllerCtx };

            var form = new FormCollection
                           {
                               {"Blog", "http://juanjose.montesdeocaarbos.com.ar/blog/"},
                               {"EMail", "juanjose.montesdeocaarbos gmail.com"},
                               {"Nombre", "Juan José Montes de Oca Arbós"},
                               {"Roles", "Administrador"},
                               {"Roles", "Usuario"},
                               {"Twitter", "@jjmoa"}
                           };
            var personaNew = BindModel<PersonaNewModel>(personaController, form);

            using (new RequestEmulator(NhHelper.GetSessionFactory()))
            {
                var resultNuevo = personaController.Nueva(personaNew);
                Assert.IsInstanceOf(typeof (ViewResult), resultNuevo);
                Assert.AreEqual("Defaulteditor", ((ViewResult) resultNuevo).ViewName);
                Assert.IsFalse(personaController.TempData.ContainsKey("error"));
            }
        }

        [Test]
        public void PersonaModificar_ErrorAlGuardarTwitterConArroba()
        {
            var personaController = new PersonaController {ControllerContext = ControllerCtx};

            #region PersonaNew
            var personaNew = new PersonaNewModel
                                 {
                                     Blog = "http://juanjose.montesdeocaarbos.com.ar/blog/",
                                     EMail = "juanjose.montesdeocaarbos@gmail.com",
                                     Nombre = "Juan José Montes de Oca Arbós",
                                     Roles = new string[] {"Administrador", "Usuario"},
                                     Twitter = "jjmoa"
                                 };

            using (new RequestEmulator(NhHelper.GetSessionFactory()))
            {
                personaController.Nueva(personaNew);
            }
            #endregion

            PersonaEditModel personaEdit = null;
            using (new RequestEmulator(NhHelper.GetSessionFactory()))
            {
                var personaRepository = new PersonaRepository(NhHelper.GetSessionFactory());

                var form = new FormCollection
                               {
                                   {"Id", personaRepository.GetAll().FirstOrDefault().Id.ToString()},
                                   {"Blog", "http://juanjose.montesdeocaarbos.com.ar/blog/"},
                                   {"EMail", "juanjose.montesdeocaarbos gmail.com"},
                                   {"Nombre", "Juan José Montes de Oca Arbós"},
                                   {"Roles", "Administrador"},
                                   {"Roles", "Usuario"},
                                   {"Twitter", "@jjmoa"}
                               };
                personaEdit = BindModel<PersonaEditModel>(personaController, form);
            }
            
            using (new RequestEmulator(NhHelper.GetSessionFactory()))
            {
                var resultModificar = personaController.Modificar(personaEdit);
                Assert.IsInstanceOf(typeof (ViewResult), resultModificar);
                Assert.AreEqual("Defaulteditor", ((ViewResult) resultModificar).ViewName);
                Assert.IsFalse(personaController.TempData.ContainsKey("error"));
            }
        }
    }
}