public void MapDoAndPO_ShouldDispose()
        {
            var mapper = new EFCorePoManager <PersistentAggregateRoot, AggregateRootPOModel>(AutoMapper_POMapper);

            var aggregateRoot = new PersistentAggregateRoot("Hello", new ColorValueObject(255, 255, 255));
            var poResult      = mapper.MapToPO(aggregateRoot);

            mapper.Dispose();

            Assert.Throws <NullReferenceException>(() =>
            {
                mapper.MapToPO(aggregateRoot);
            });
        }
        public void MapDoAndPO_HasDomainEvent()
        {
            var mapper = new EFCorePoManager <PersistentAggregateRoot, AggregateRootPOModel>(AutoMapper_POMapper);

            var aggregateRoot = new PersistentAggregateRoot("Hello", new ColorValueObject(255, 255, 255));

            aggregateRoot.AddDomainEvent(new DemoDomainEvent()
            {
                Name = "Event"
            });
            var poResult = mapper.MapToPO(aggregateRoot);

            var @events = poResult.GetDomainEvents();

            Assert.Single(@events);
            Assert.Equal("Event", ((DemoDomainEvent)@events.First()).Name);
        }
        public void MapDoAndPO_NormalMap()
        {
            var mapper = new EFCorePoManager <PersistentAggregateRoot, AggregateRootPOModel>(AutoMapper_POMapper);

            var aggregateRoot = new PersistentAggregateRoot("Hello", new ColorValueObject(255, 255, 255));
            var poResult      = mapper.MapToPO(aggregateRoot);

            Assert.NotNull(poResult);
            Assert.Equal("Hello", poResult.Name);
            Assert.Equal(255, poResult.R);
            Assert.Equal(255, poResult.G);
            Assert.Equal(255, poResult.B);

            var pOModel  = new AggregateRootPOModel("Hello", 255, 255, 255);
            var doResult = mapper.MapToDO(pOModel);

            Assert.NotNull(doResult);
            Assert.Equal("Hello", doResult.Name);
            Assert.Equal(255, doResult.Color.R);
            Assert.Equal(255, doResult.Color.G);
            Assert.Equal(255, doResult.Color.B);
        }