Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Repositories.Tests/WorkflowTests.cs @ 285:c8f378272407
#123: Patrocinadores de las vans.
author | juanjose.montesdeocaarbos |
---|---|
date | Sat, 31 Dec 2011 14:45:55 -0300 |
parents | 72a96459f910 |
children |
line wrap: on
line source
using System; using System.Collections.Generic; using Agendas.Repositories.Tests.Infraestructure; using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Domain.Repositories; using Moq; using NUnit.Framework; namespace Agendas.Repositories.Tests { public abstract class WorkflowTests<T> where T : IInfraestrutureFactory, new() { private readonly IPersonaRepository _personaRepository; private readonly IEventoRepository _eventoRepository; private readonly IPatrocinadorRepository _patrocinadorRepository; private readonly Func<IDisposable> _requestEmulator; protected WorkflowTests() { var infraestrutureFactory = new T(); _eventoRepository = infraestrutureFactory.GetEventoRepository(); _personaRepository = infraestrutureFactory.GetPonenteRepository(); _patrocinadorRepository = infraestrutureFactory.GetPatrocinadorRepository(); _requestEmulator = infraestrutureFactory.GetRequestEmulator(); } [SetUp] public void SetearUsuario() { var seguridad = new Mock<ISeguridad>(); seguridad.Setup(s => s.GetUserName()).Returns("neluz"); IdentityContext.Init(seguridad.Object, _personaRepository); } [Test] public void Proponer() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); workflow.Proponer(); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Once()); } [Test] public void Proponer_y_agendar() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); workflow.Proponer(); workflow.Agendar(); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); } [Test] public void Proponer_agendar_y_cancelar() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); 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() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); 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() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); 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() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); 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() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); 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() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); workflow.Proponer(); workflow.Descartar(); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2)); } [Test] public void Proponer_agendar_cancelar_y_descartar() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); 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() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); 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() { var publicador = new Mock<IPublicador>(); var workflow = new Workflow(publicador.Object, _eventoRepository, _personaRepository, _patrocinadorRepository, _requestEmulator); workflow.Proponer(); workflow.Agendar(); workflow.Confirmar(); workflow.Publicar(); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(4)); } } }