예제 #1
0
        public void al_solicitar_la_pagina_2_de_una_lista_de_10_paises_con_paginacion_2_debe_devolver_una_lista_paginada_con_2_elementos_con_codigoIata_AF_y_AG()
        {
            // Arrange.
            PagedList <Pais> paisPagedList;

            int cantPaises = 10;
            int pageIndex  = 2;
            int pageSize   = 2;

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.Get(
                                         It.IsAny <string>(),
                                         It.IsInRange(1, int.MaxValue, Range.Inclusive),
                                         It.IsInRange(1, cantPaises, Range.Inclusive)))
            .Returns(PaisMockGenerator.GetPageFromList(cantPaises, pageIndex, pageSize));

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            paisPagedList = paisManager.Get(string.Empty, pageIndex, pageSize);

            // Assert.
            paisPagedList.Should().BeOfType <PagedList <Pais> >();
            paisPagedList.Items[0].CodigoIata.Should().Be("AF");
            paisPagedList.Items[1].CodigoIata.Should().Be("AG");
        }
예제 #2
0
        public void al_insertar_un_nuevo_pais_con_datos_válidos_debe_devolver_un_pais_con_el_mismo_codigoiata_enviado()
        {
            // Arrange.
            Pais pais = PaisMockGenerator.GetByCodigoIata("AR");

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.Insert(It.IsAny <Pais>())).Returns(PaisMockGenerator.Insert(pais));

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            pais = paisManager.Insert(pais);

            // Assert.
            pais.CodigoIata.Should().BeEquivalentTo("AR");
        }
예제 #3
0
        public void al_insertar_un_nuevo_pais_con_valor_null_debe_devolver_una_excepcion_de_tipo_ArgumentNullException_conteniendo_pais_en_la_propiedad_Message()
        {
            // Arrange.
            Pais pais = PaisMockGenerator.GetByCodigoIata("AR");

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.Insert(It.IsAny <Pais>())).Returns(PaisMockGenerator.Insert(pais));

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            Action action = () => paisManager.Insert(null);

            // Assert.
            action.Should().ThrowExactly <ArgumentNullException>()
            .And.Message.Should().Contain(nameof(pais));
        }
예제 #4
0
        public void al_solicitar_un_pais_mediante_su_codigoiata_debe_devolver_un_pais()
        {
            // Arrange.
            string codigoiata = "AR";

            Pais pais = PaisMockGenerator.GetByCodigoIata(codigoiata);

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.GetByIataCode(It.IsAny <string>())).Returns(pais);

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            var ret = paisManager.GetByIataCode(codigoiata);

            // Assert.
            ret.Should().BeOfType <Pais>();
        }
예제 #5
0
        public void al_insertar_un_nuevo_pais_y_se_produzca_una_excepcion_no_controlada_el_data_de_la_excepción_debe_contener_la_key_Pais()
        {
            // Arrange.
            Pais pais = PaisMockGenerator.GetByCodigoIata("AR");

            Exception ex = new Exception();

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.Insert(It.IsAny <Pais>())).Throws(ex);

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            Action action = () => paisManager.Insert(pais);

            // Assert.
            action.Should().ThrowExactly <Exception>()
            .And.Data["Pais"].Should().NotBeNull();
        }
예제 #6
0
        public void al_insertar_un_nuevo_pais_con_codigoIata_existente_debe_devolver_una_excepción_UniqueKeyViolationException_en_donde_el_data_contenga_una_key_ErrorCode_con_valor_ERR_PAIS_IATACODEEXIST()
        {
            // Arrange.
            Pais pais = PaisMockGenerator.GetByCodigoIata("AR");

            UniqueKeyViolationException ukvex = new UniqueKeyViolationException("xxx PRIMARY xxx.");

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.Insert(It.IsAny <Pais>())).Throws(ukvex);

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            Action action = () => paisManager.Insert(pais);

            // Assert.
            pais.CodigoIata.Should().BeEquivalentTo("AR");
            action.Should().ThrowExactly <UniqueKeyViolationException>()
            .And.Data.Should().Contain(new DictionaryEntry("ErrorCode", ExErrorCode.ErrPaisIataCodeExist));
        }
예제 #7
0
        public void al_actualizar_un_pais_con_codigoIata_inexistente_debe_devolver_una_excepción_de_tipo_NotFoundException_en_donde_el_data_contenga_una_key_ErrorCode_con_valor_ERR_PAIS_NOTFOUND()
        {
            // Arrange.
            Pais pais = PaisMockGenerator.GetByCodigoIata("AR");

            pais.CodigoIata = "XX";

            NotFoundException nfex = new NotFoundException();

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.Update(It.IsAny <Pais>())).Throws(nfex);

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            Action action = () => paisManager.Update(pais);

            // Assert.
            action.Should().ThrowExactly <NotFoundException>()
            .And.Data.Should().Contain(new DictionaryEntry("ErrorCode", ExErrorCode.ErrPaisNotFound));
        }
예제 #8
0
        public void al_actualizar_el_nombre_de_un_pais_debe_devolver_el_pais_con_el_nombre_actualizado()
        {
            // Arrange.
            string nombreOriginal    = "Argentina";
            string nombreActualizado = "Argentina se actualizó!";

            Pais pais = PaisMockGenerator.GetByCodigoIata("AR");

            pais.Nombre = nombreOriginal;

            // Mock del repository.
            Mock <IPaisRepository> paisRepositoryMock = new Mock <IPaisRepository>();

            paisRepositoryMock.Setup(mgr => mgr.Update(It.IsAny <Pais>())).Returns(PaisMockGenerator.UpdateNombre(pais, nombreActualizado));

            PaisManager paisManager = new PaisManager(paisRepositoryMock.Object, new PaisValidator(), new PagedListValidator());

            // Act.
            pais = paisManager.Update(pais);

            // Assert.
            pais.Nombre.Should().BeEquivalentTo(nombreActualizado);
        }