Ejemplo n.º 1
0
        public void CUANDO_se_actualiza_resumen_de_animales_por_periodo_ENTONCES_se_proyecta()
        {
            var correlationId = SequentialGuid.GenerateNewGuid();

            var e = new SeActualizoResumenDeAnimalesPorPeriodo
            {
                SourceType         = "TestAggregate",
                CantidadDeAnimales = 5,
                CorrelationId      = correlationId,
                Periodo            = 2015,
                SourceId           = Guid.Empty,
                Version            = 1
            };

            this.sut.Handle(e);

            using (var context = this.contextFactory.Invoke())
            {
                var resumen = context.ResumenDeAnimalesDeTodosLosPeriodos
                              .Where(x => x.Periodo == e.Periodo.ToString())
                              .FirstOrDefault();

                Assert.NotNull(resumen);
                Assert.Equal(e.CantidadDeAnimales, resumen.Cantidad);

                var log = context.ReadModelingEvents
                          .Where(x => x.CorrelationId == correlationId)
                          .FirstOrDefault();
                Assert.NotNull(log);
            }
        }
        public void CUANDO_se_aggregan_animales_al_inventario_ENTONCES_se_actualiza_el_resumen_del_periodo()
        {
            var idEmpresa = this.guid.NewGuid();
            var animal    = this.guid.NewGuid();
            var sucursal  = this.guid.NewGuid();

            var hydratingEvent =
                new SeActualizoResumenDeAnimalesPorPeriodo
            {
                SourceId           = idEmpresa,
                CantidadDeAnimales = 4,
                Periodo            = 2015
            };

            var newEvent =
                new SeAgregaronAnimalesAlInventario
            {
                SourceId  = idEmpresa,
                IdEmpresa = idEmpresa,
                Animal    = animal,
                Sucursal  = sucursal,
                Cantidad  = 6,
                Periodo   = 2015
            };

            this.sut.Given(hydratingEvent);

            this.sut.When(newEvent);

            var olapEvent = sut.ThenHasOne <SeActualizoResumenDeAnimalesPorPeriodo>();

            Assert.Equal(2015, olapEvent.Periodo);
            Assert.Equal(10, olapEvent.CantidadDeAnimales);
        }
        public void Rehydrate(SeActualizoResumenDeAnimalesPorPeriodo e)
        {
            this.ComprobarPeriodo(e.Periodo);

            this.animalesPorPeriodo[e.Periodo] = e.CantidadDeAnimales;
        }