view Agendas/trunk/src/Agendas.Web.Tests/Controllers/PatrocinadorApiControllerTests.cs @ 285:c8f378272407

#123: Patrocinadores de las vans.
author juanjose.montesdeocaarbos
date Sat, 31 Dec 2011 14:45:55 -0300
parents
children 9bc60d166c8a
line wrap: on
line source

using System.Linq;
using System.Web;
using System.Web.Mvc;
using Agendas.NHibernate;
using Agendas.Repositories.Tests.Infraestructure;
using Agendas.Web.Tests.Helpers;
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 PatrocinadorApiControllerTests: MvcControllerTestsBase
	{
		internal void CrearPatrocinadorApress()
		{
			var patrocinadorController = new PatrocinadorController(new HttpServerStub())
			{
				ControllerContext = ControllerCtx
			};
			var form = new FormCollection
			           	{
			           		{"Nombre", "APRESS"},
			           		{"Logo", @"images\apress.gif"}
			           	};
			var patrocinadorNew = BindModel<PatrocinadorNewModel>(patrocinadorController, form);

			using (new RequestEmulator(NhHelper.GetSessionFactory()))
			{
				var resultNuevo = patrocinadorController.Nuevo(patrocinadorNew);
			}
		}

		internal void RegisterBinders()
		{
			ModelBinders.Binders[typeof(HttpPostedFileBase)] = new HttpPostedFileBaseModelBinder();
		}

		[SetUp]
		public void SetUpTests()
		{
			NhHelperTest.CleanDb();
			RegisterBinders();
		}

		[Test]
		public void PatrocinadorNuevoGetSusseful()
		{
			var patrocinadorController = new PatrocinadorApiController { ControllerContext = ControllerCtx };
			using (new RequestEmulator(NhHelper.GetSessionFactory()))
			{
				var resultNuevo = patrocinadorController.Nuevo();
				Assert.IsInstanceOf(typeof(PartialViewResult), resultNuevo);
				Assert.AreEqual(string.Empty, ((PartialViewResult)resultNuevo).ViewName);
			}
		}

		[Test]
		public void PatrocinadorNuevoPostErrorRequeriedFields()
		{
			var patrocinadorApiController = new PatrocinadorApiController(new HttpServerStub())
			{
				ControllerContext = ControllerCtx
			};
			var form = new FormCollection
                           {
                               {"Nombre", ""},
                               {"Logo", "" }
                           };
			var patrocinadorApiNew = BindModel<PatrocinadorNewModel>(patrocinadorApiController, form);

			using (new RequestEmulator(NhHelper.GetSessionFactory()))
			{
				var resultNuevo = patrocinadorApiController.Nuevo(patrocinadorApiNew);
				Assert.IsInstanceOf(typeof(JsonResult), resultNuevo);
				var resultadoJsonNuevo = (Resultado)resultNuevo.Data;
				Assert.IsFalse(resultadoJsonNuevo.Succeful);
				//Assert.AreEqual("El Nombre es obligatorio,El Logo es obligatorio", resultadoJsonNuevo.Message);
			}
		}

		[Test]
		public void PatrocinadorNuevoPostErrorPatrocinadorExists()
		{
			CrearPatrocinadorApress();

			var patrocinadorApiController = new PatrocinadorApiController(new HttpServerStub())
			{
				ControllerContext = ControllerCtx
			};
			var form = new FormCollection
                           {
                               {"Nombre", "Apress"},
                               {"Logo", @"images\apress.gif" }
                           };
			var patrocinadorApiNew = BindModel<PatrocinadorNewModel>(patrocinadorApiController, form);

			using (new RequestEmulator(NhHelper.GetSessionFactory()))
			{
				var resultNuevo = patrocinadorApiController.Nuevo(patrocinadorApiNew);
				Assert.IsInstanceOf(typeof(JsonResult), resultNuevo);
				var resultadoJsonNuevo = (Resultado)resultNuevo.Data;
				Assert.IsFalse(resultadoJsonNuevo.Succeful);
				Assert.AreEqual("El patrocinador ya existe.", resultadoJsonNuevo.Message);
			}
		}

		[Test]
		public void PatrocinadorNuevoPostSusseful()
		{
			var patrocinadorApiController = new PatrocinadorApiController(new HttpServerStub())
			{
				ControllerContext = ControllerCtx
			};
			var form = new FormCollection
                           {
                               {"Nombre", "Apress"},
                               {"Logo", @"images\apress.gif" }
                           };
			var patrocinadorApiNew = BindModel<PatrocinadorNewModel>(patrocinadorApiController, form);

			using (new RequestEmulator(NhHelper.GetSessionFactory()))
			{
				var resultNuevo = patrocinadorApiController.Nuevo(patrocinadorApiNew);
				Assert.IsInstanceOf(typeof(JsonResult), resultNuevo);
				var resultadoJsonNuevo = (Resultado)resultNuevo.Data;
				Assert.IsTrue(resultadoJsonNuevo.Succeful);
				Assert.AreEqual(string.Empty, resultadoJsonNuevo.Message);
			}
		}
	}
}