public void ProyectosController_ListarProyectos()
        {
            HelperTestSistema.LimpiarArchivoBD();
            HelperTestSistema.IniciarServidor();

            //Obtenemos los proyectos de prueba
            Bugtracker bugtracker = new Bugtracker();
            var proyectosTest = HelperInstanciacionProyectos.GetProyectos( 2 );
            bugtracker.AgregarProyecto( proyectosTest[0] );
            bugtracker.AgregarProyecto( proyectosTest[1] );

            //Guardamos los proyectos de prueba directamente en la base de datos
            using ( IContextoProceso contextoProceso = new ContextoProceso(HelperTestSistema.ObjectFactory ) )
            {
                contextoProceso.ContenedorObjetos.Store( bugtracker );
            }
            //Reiniciamos la conexion a la base de datos
            HelperTestSistema.ReiniciarConexion();

            //Traemos los proyectos registrados desde el controller
            var controller = new ProyectosController(HelperTestSistema.ObjectFactory);
            var proyectosResultado = controller.Get();

            HelperTestSistema.FinalizarServidor();

            //Asserts
            //Assert.Inconclusive( "Refactorizar y terminar este test" );
            //La cantidad de proyectos registrados deben ser 2
            Assert.AreEqual( 2, proyectosResultado.ToList().Count() );
            //El primer proyecto se debe llamar proyecto 1
            Assert.AreEqual( "Proyecto 1", proyectosResultado.ToList()[0].Nombre );
            //El segundo proyecto se debe llamar proyecto 2
            Assert.AreEqual( "Proyecto 2", proyectosResultado.ToList()[1].Nombre );
        }
        public void Bugtracker_InstanciarNuevoProyecto()
        {
            IBugtracker target = new Bugtracker();

            IProyecto proyecto = target.NuevoProyecto();

            bool instanciaCorrecta = proyecto.GetType() == typeof(Proyecto);

            Assert.IsTrue(instanciaCorrecta);
        }
        public void ProyectosController_ModificarProyecto()
        {
            HelperTestSistema.LimpiarArchivoBD();
            HelperTestSistema.IniciarServidor();

            //Generamos los proyectos de ejemplo directamente sobre la base de datos
            Bugtracker bugtracker = new Bugtracker();
            var proyectosTest = HelperInstanciacionProyectos.GetProyectos( 2 );
            bugtracker.AgregarProyecto( proyectosTest[0] );
            bugtracker.AgregarProyecto( proyectosTest[1] );

            using ( IContextoProceso contexto = new ContextoProceso(HelperTestSistema.ObjectFactory  ))
            {
                contexto.ContenedorObjetos.Store( bugtracker );
            }

            //Reiniciamos la conexion a la base de datos
            HelperTestSistema.ReiniciarConexion();

            var controller = new ProyectosController( HelperTestSistema.ObjectFactory );
            //obtenemos los proyectos y reiniciamos la conexion
            var listadoProyectosBD = controller.Get();
            HelperTestSistema.ReiniciarConexion();

            //obtenemos el primer proyecto y lo modificamos
            var proyectoBD = listadoProyectosBD.ToList()[0];
            proyectoBD.Descripcion = "Proyecto de prueba 1 modificado";

            //modificamos el proyecto en la BD a traves del controller y reiniciamos la conexion
            controller.Put( proyectoBD );
            HelperTestSistema.ReiniciarConexion();

            //limpiamos las variables para garantizar que las instancias quedan limpias
            listadoProyectosBD = null;

            //Obtenemos los proyectos nuevamentes
            listadoProyectosBD = controller.Get();
            var otroProyectoBD = listadoProyectosBD.ToList()[0];

            HelperTestSistema.FinalizarServidor();

            //Asserts

            //La cantidad de proyectos debe ser 2 (ya que solo se modifico un proyecto)
            Assert.AreEqual( 2, listadoProyectosBD.ToList().Count );
            //El primer proyecto debe tener la descripcion modificada
            Assert.AreEqual("Proyecto de prueba 1 modificado",listadoProyectosBD.ToList()[0].Descripcion);
            Assert.AreEqual( "Proyecto de prueba 2", listadoProyectosBD.ToList()[1].Descripcion );
        }
        public void Bugtracker_ObtenerProyectoPorNombre()
        {
            IBugtracker target = new Bugtracker();
            IProyecto proyecto1 = target.NuevoProyecto();
            proyecto1.Nombre = "Proyecto 1";

            IProyecto proyecto2 = target.NuevoProyecto();
            proyecto2.Nombre = "Proyecto 2";

            target.RegistrarProyecto(proyecto1);
            target.RegistrarProyecto(proyecto2);

            IProyecto proyectoRetornado = target.ObtenerProyecto("Proyecto 1");

            Assert.AreSame(proyecto1, proyectoRetornado);
        }
        public void Bugtracker_ListarTodosLosProyectos()
        {
            //Registro dos proyectos
            IBugtracker target = new Bugtracker();

            IProyecto proyecto1 = target.NuevoProyecto();
            proyecto1.Nombre = "Proyecto 1";
            target.RegistrarProyecto(proyecto1);

            IProyecto proyecto2 = target.NuevoProyecto();
            proyecto2.Nombre = "Proyecto 2";
            target.RegistrarProyecto(proyecto2);

            Assert.AreEqual(target.Proyectos.Count(),2);
            Assert.IsTrue(target.Proyectos.Contains(proyecto1));
            Assert.IsTrue(target.Proyectos.Contains(proyecto2));
        }
        public void Bugtracker_RegistrarNuevoProyecto_NombreDuplicado()
        {
            BugzzingaException expected = null;

            IBugtracker target = new Bugtracker();

            //Primero arego un proyecto
            IProyecto proyecto1 = target.NuevoProyecto();
            proyecto1.Nombre = "Proyecto test";
            target.RegistrarProyecto(proyecto1);

            //Ahora intento agregar otro proyecto con el mismo nombre
            IProyecto proyecto2 = target.NuevoProyecto();
            proyecto2.Nombre = "Proyecto test";

            try
            {
                target.RegistrarProyecto(proyecto2);
            }
            catch (BugzzingaException ex)
            {
                expected = ex;
            }

            Assert.IsNotNull(expected);
            Assert.IsTrue(expected.Message.StartsWith("Ya existe un proyecto registrado con el nombre"));
            //No se tiene que haber agregado el segundo proyecto
            Assert.AreEqual(((IList<IProyecto>)target.Proyectos).Count, 1);
        }
        public void Bugtracker_RegistrarNuevoProyecto()
        {
            IBugtracker target = new Bugtracker();
            IProyecto proyecto = target.NuevoProyecto();
            proyecto.Nombre = "Proyecto test";

            target.RegistrarProyecto(proyecto);

            Assert.AreEqual(((IList<IProyecto>)target.Proyectos).Count, 1);
            Assert.AreSame(proyecto,target.Proyectos.First());
        }