view Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowNhTests.cs @ 192:03cf6a377ee8

Se cambiaron algunos tests para que el Coverage dieran el 100%. NOTA: Si se utiliza el Atributo ExpectedException el coverage termina donde se dió la excepción. Mejor usar el Assert.Throws
author juanjose.montesdeocaarbos
date Wed, 10 Aug 2011 08:20:28 -0300
parents 6ee05ceea8c3
children 5346c0500594
line wrap: on
line source

using System.Collections.Generic;
using Agendas.NHibernate;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Tests.Cruds;
using Moq;
using NUnit.Framework;

namespace AltNetHispano.Agendas.Tests.Workflows
{
	[TestFixture]
	public class WorkflowNhTests : TestBase
	{
		private Mock<IPublicador> _publicador;
		private Workflow _workflow;

		[SetUp]
		public void InitPublicador()
		{
			_publicador = new Mock<IPublicador>();
			_workflow = new Workflow(_publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository, () => new RequestEmulator(NhHelper.GetSessionFactory()));
		}

		[Test]
		public void Proponer()
		{
			_workflow.Proponer();
			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Once());
		}

		[Test]
		public void Proponer_y_agendar()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
		}
		[Test]
		public void Proponer_agendar_y_cancelar()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Cancelar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
		}

		[Test]
		public void Proponer_agendar_cancelar_y_reagendar()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Cancelar();

			_workflow.ReAgendar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
		}

		[Test]
		public void Proponer_agendar_cancelar_reproponer_agendar_y_confirmar()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Cancelar();

			_workflow.ReProponer();

			_workflow.Agendar();

			_workflow.Confirmar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(6));
		}

		[Test]
		public void Proponer_agendar_cancelar_reagendar_y_confirmar()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Cancelar();

			_workflow.ReAgendar();

			_workflow.Confirmar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(5));
		}

		[Test]
		public void Proponer_agendar_cancelar_y_reproponer()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Cancelar();

			_workflow.ReProponer();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
		}

		[Test]
		public void Proponer_y_descartar()
		{
			_workflow.Proponer();
			
			_workflow.Descartar();
			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
		}

		[Test]
		public void Proponer_agendar_cancelar_y_descartar()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Cancelar();

			_workflow.Descartar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
		}

		[Test]
		public void Proponer_agendar_y_confirmar()
		{
			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Confirmar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(3));
		}

		[Test]
		public void Proponer_agendar_confirmar_publicar()
		{
			const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";

			_workflow.Proponer();

			_workflow.Agendar();

			_workflow.Confirmar();

			_workflow.Publicar();

			_publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4));
		}
	}
}