Exemplo n.º 1
0
        public async Task DoesRunMigrationIfFailToGetVersionDocument()
        {
            var updatedVersionDocs   = new Dictionary <DateTime, bool>();
            var updatedMigrationDocs = new List <MigrationDetails>();

            var migration = new _0001_TestMigrationFirst();
            var mockRepo  = new CosmosRepositoryBuilder()
                            .WithUpsertCallback(e => updatedMigrationDocs.Add(e as MigrationDetails))
                            .WithReadingVersionDocument(null, true)
                            .WithUpdatingVersionDocument((number, isRunning) => updatedVersionDocs.Add(DateTime.UtcNow, isRunning))
                            .Mock;

            migration.ExectuteMigration(mockRepo.Object, 1);

            Assert.True(updatedVersionDocs.Count > 0, "called to update version docs");
            Assert.True(updatedMigrationDocs.Count > 0, "called to update migration docs");
        }
Exemplo n.º 2
0
        public async Task DoesNotRunMigrationIfOneAlreadyRunning()
        {
            var updatedVersionDocs   = new Dictionary <DateTime, bool>();
            var updatedMigrationDocs = new List <MigrationDetails>();

            var migration = new _0001_TestMigrationFirst();
            var mockRepo  = new CosmosRepositoryBuilder()
                            .WithUpsertCallback(e => updatedMigrationDocs.Add(e as MigrationDetails))
                            .WithReadingVersionDocument(new VersionDocument()
            {
                IsApplyingMigration = true
            })
                            .WithUpdatingVersionDocument((number, isRunning) => updatedVersionDocs.Add(DateTime.UtcNow, isRunning))
                            .Mock;

            Assert.ThrowsAsync <OnGoingMigrationException>(
                () => migration.ExectuteMigration(mockRepo.Object, 1));
            Assert.True(updatedVersionDocs.Count == 0);
            Assert.True(updatedMigrationDocs.Count == 0);
        }
Exemplo n.º 3
0
        public async Task DoesUpdateVersionDocumentWhenMigrationFailed()
        {
            var updatedVersionDocs   = new Dictionary <DateTime, bool>();
            var updatedMigrationDocs = new List <MigrationDetails>();

            var migration = new FailureMigration(true);
            var mockRepo  = new CosmosRepositoryBuilder()
                            .WithUpsertCallback(e => updatedMigrationDocs.Add(e as MigrationDetails))
                            .WithReadingVersionDocument()
                            .WithUpdatingVersionDocument((number, isRunning) => updatedVersionDocs.Add(DateTime.UtcNow, isRunning))
                            .Mock;

            await migration.ExectuteMigration(mockRepo.Object, 1);

            Assert.True(updatedVersionDocs.Count == 2);
            Assert.True(updatedVersionDocs.Last().Value,
                        "the version document was updated for is running to be false");
            Assert.True(updatedMigrationDocs.Count == 2);
            Assert.False(updatedMigrationDocs.Last().DidSucceed, "expected did succeed to be set to false");
            Assert.NotNull(updatedMigrationDocs.Last().FailureMessage);
        }