public async Task when_the_snapshot_is_over_table_storage_limits_it_should_save_and_load_to_blob_storage()
        {
            var blobStore               = new BlobStore(new BlobSettings());
            var azureBlobStore          = new AzureBlobSnapshotStore(blobStore);
            var azureTableService       = new AzureTableService(new AzureTableSettings());
            var domainEntityTypeBuilder = new DomainEntityTypeBuilder();
            var sut = new AzureTableSnapshotStore(
                azureBlobStore,
                new AzureSnapshotBuilder(azureBlobStore),
                azureTableService,
                domainEntityTypeBuilder
                );
            var item = new SnapshotContent {
                AggregateRootId = new Guid("cc3ea6b8-6396-4c95-be2e-4d90f2c23736")
            };

            // set a new AggregateRootId for this to be tested
            //var snapshot = await sut.GetSnapshot(item.AggregateRootId).ConfigureAwait(false);
            //snapshot.ShouldBeNull();

            item.SetToLength(99999);
            await sut.SaveSnapshot(item).ConfigureAwait(false);

            var snapshot = await sut.GetSnapshot(item.AggregateRootId).ConfigureAwait(false);

            snapshot.ShouldNotBeNull();
            var cast = snapshot as SnapshotContent;

            cast.ShouldNotBeNull();
            cast.Content.Count.ShouldBe(item.Content.Count);
        }
        public async Task when_the_snapshot_is_under_table_storage_limits_it_should_save_and_load_to_table_storage()
        {
            var blobStore         = new BlobStore(new BlobSettings());
            var azureBlobStore    = new AzureBlobSnapshotStore(blobStore);
            var azureTableService = new AzureTableService(new AzureTableSettings());
            var sut = new AzureTableSnapshotStore(
                azureBlobStore,
                new AzureSnapshotBuilder(azureBlobStore),
                azureTableService,
                new DomainEntityTypeBuilder()
                );
            var item = new SnapshotContent {
                AggregateRootId = new Guid("b87bc654-3d76-4a46-ab58-c71c16b6a000")
            };

            item.SetToLength(10);
            await sut.SaveSnapshot(item).ConfigureAwait(false);

            var snapshot = await sut.GetSnapshot(item.AggregateRootId).ConfigureAwait(false);

            snapshot.ShouldNotBeNull();
            var cast = snapshot as SnapshotContent;

            cast.ShouldNotBeNull();
            cast.Content.Count.ShouldBe(item.Content.Count);
        }
Ejemplo n.º 3
0
        public void AzureSnapshotStore_Returns_Null_When_No_Snapshot_Exists()
        {
            var database = new Mock<IAzureStorageRepository>();
            database.Setup(db => db.GetSnapshot(It.IsAny<Guid>()));

            var store = new AzureBlobSnapshotStore
            {
                GetRepository = () => database.Object
            };

            var snapshot = store.GetSnapshot<BankAccountSnapshot>(Guid.NewGuid());

            Assert.IsNull(snapshot);
        }
Ejemplo n.º 4
0
        public void AzureSnapshotStore_Deserializes_Snapshot_Details()
        {
            var database = new Mock<IAzureStorageRepository>();
            database.Setup(db => db.GetSnapshot(It.IsAny<Guid>())).Returns(new SnapshotDetail{SnapshotData = new BankAccountSnapshot{Balance = 900}});

            var store = new AzureBlobSnapshotStore
            {
                GetRepository = () => database.Object
            };

            var snapshot = store.GetSnapshot<BankAccountSnapshot>(Guid.NewGuid());

            Assert.AreEqual(900, snapshot.Data.Balance);
        }
Ejemplo n.º 5
0
        public void AzureSnapshotStore_Serializes_Snapshots()
        {
            var database = new Mock<IAzureStorageRepository>();
            database.Setup(db => db.InsertSnapshot(It.IsAny<SnapshotDetail>()));

            var store = new AzureBlobSnapshotStore
            {
                GetRepository = () => database.Object
            };

            var snapshot = new Snapshot<BankAccountSnapshot> {Data = new BankAccountSnapshot {Balance = 900}};
            store.SaveSnapshot(snapshot);

            database.Verify(db => db.InsertSnapshot(It.IsAny<SnapshotDetail>()), Times.Once());
        }
Ejemplo n.º 6
0
        public void AzureSnapshotStore_Returns_Null_When_No_Snapshot_Exists()
        {
            var database = new Mock <IAzureStorageRepository>();

            database.Setup(db => db.GetSnapshot(It.IsAny <Guid>()));

            var store = new AzureBlobSnapshotStore
            {
                GetRepository = () => database.Object
            };

            var snapshot = store.GetSnapshot <BankAccountSnapshot>(Guid.NewGuid());

            Assert.IsNull(snapshot);
        }
Ejemplo n.º 7
0
        public void AzureSnapshotStore_Deserializes_Snapshot_Details()
        {
            var database = new Mock <IAzureStorageRepository>();

            database.Setup(db => db.GetSnapshot(It.IsAny <Guid>())).Returns(new SnapshotDetail {
                SnapshotData = new BankAccountSnapshot {
                    Balance = 900
                }
            });

            var store = new AzureBlobSnapshotStore
            {
                GetRepository = () => database.Object
            };

            var snapshot = store.GetSnapshot <BankAccountSnapshot>(Guid.NewGuid());

            Assert.AreEqual(900, snapshot.Data.Balance);
        }
Ejemplo n.º 8
0
        public void AzureSnapshotStore_Serializes_Snapshots()
        {
            var database = new Mock <IAzureStorageRepository>();

            database.Setup(db => db.InsertSnapshot(It.IsAny <SnapshotDetail>()));

            var store = new AzureBlobSnapshotStore
            {
                GetRepository = () => database.Object
            };

            var snapshot = new Snapshot <BankAccountSnapshot> {
                Data = new BankAccountSnapshot {
                    Balance = 900
                }
            };

            store.SaveSnapshot(snapshot);

            database.Verify(db => db.InsertSnapshot(It.IsAny <SnapshotDetail>()), Times.Once());
        }
        public async Task when_the_snapshot_changes_from_under_to_over_limits()
        {
            var blobStore         = new BlobStore(new BlobSettings());
            var azureBlobStore    = new AzureBlobSnapshotStore(blobStore);
            var azureTableService = new AzureTableService(new AzureTableSettings());
            var sut = new AzureTableSnapshotStore(
                azureBlobStore,
                new AzureSnapshotBuilder(azureBlobStore),
                azureTableService,
                new DomainEntityTypeBuilder()
                );
            var item = new SnapshotContent {
                AggregateRootId = new Guid("e8ae8dd3-d3fd-434a-9775-82887bf1b2ce")
            };

            item.SetToLength(10);
            await sut.SaveSnapshot(item).ConfigureAwait(false);

            var snapshot = await sut.GetSnapshot(item.AggregateRootId).ConfigureAwait(false);

            snapshot.ShouldNotBeNull();
            var cast = snapshot as SnapshotContent;

            cast.ShouldNotBeNull();
            cast.Content.Count.ShouldBe(item.Content.Count);

            item.Content.Clear();
            item.SetToLength(99999);

            await sut.SaveSnapshot(item).ConfigureAwait(false);

            snapshot = await sut.GetSnapshot(item.AggregateRootId).ConfigureAwait(false);

            snapshot.ShouldNotBeNull();
            cast = snapshot as SnapshotContent;
            cast.ShouldNotBeNull();
            cast.Content.Count.ShouldBe(item.Content.Count);
        }