public void DoesNotBackUpDocumentWithNoMigrations() { Document <Entity>(); var backupWriter = new FakeBackupWriter(); UseBackupWriter(backupWriter); DisableBackgroundMigrations(); var id = NewId(); using (var session = store.OpenSession()) { session.Store(new Entity { Id = id, Property = "Asger" }); session.SaveChanges(); } using (var session = store.OpenSession()) { var entity = session.Load <Entity>(id); entity.Property = "Jacob"; session.SaveChanges(); // no migrations, means no backup backupWriter.Files.Count.ShouldBe(0); } }
public void RewritesAsZip() { var inner = new FakeBackupWriter(); var decorator = new ZipBackupDecorator(inner); var document = new byte[] { 65, 66, 67 }; decorator.Write("jacob.bak", document); using (var input = new MemoryStream(inner.Files["jacob.bak.zip"])) using (var zip = new GZipStream(input, CompressionMode.Decompress)) using (var output = new MemoryStream()) { zip.CopyTo(output); output.ToArray().ShouldBe(document); } }
public void DoesNotBackUpDocumentWithNoMigrations() { Document<Entity>(); var backupWriter = new FakeBackupWriter(); UseBackupWriter(backupWriter); var id = NewId(); using (var session = store.OpenSession()) { session.Store(new Entity { Id = id, Property = "Asger" }); session.SaveChanges(); } using (var session = store.OpenSession()) { session.Load<Entity>(id); session.SaveChanges(); // no migrations, means no backup backupWriter.Files.Count.ShouldBe(0); } }
public void BacksUpMigratedDocumentOnSave() { var id = NewId(); Document<Entity>(); using (var session = store.OpenSession()) { session.Store(new Entity { Id = id, Property = "Asger" }); session.SaveChanges(); } Reset(); Document<Entity>(); DisableDocumentMigrationsInBackground(); UseMigrations( new InlineMigration(1, new ChangeDocumentAsJObject<Entity>(x => { x["Property"] += "1"; })), new InlineMigration(2, new ChangeDocumentAsJObject<Entity>(x => { x["Property"] += "2"; }))); var backupWriter = new FakeBackupWriter(); UseBackupWriter(backupWriter); using (var session = store.OpenSession()) { session.Load<Entity>(id); // no backup on load backupWriter.Files.Count.ShouldBe(0); session.SaveChanges(); // backup on save backupWriter.Files.Count.ShouldBe(1); backupWriter.Files[string.Format("HybridDb.Tests.HybridDbTests+Entity_{0}_0.bak", id)] .ShouldBe(configuration.Serializer.Serialize(new Entity { Id = id, Property = "Asger" })); } }
public void BacksUpMigratedDocumentOnSave() { var id = NewId(); Document <Entity>(); using (var session = store.OpenSession()) { session.Store(new Entity { Id = id, Property = "Asger" }); session.SaveChanges(); } var backupWriter = new FakeBackupWriter(); ResetConfiguration(); UseBackupWriter(backupWriter); Document <Entity>(); DisableBackgroundMigrations(); UseMigrations( new InlineMigration(1, new ChangeDocumentAsJObject <Entity>(x => { x["Property"] += "1"; }))); using (var session = store.OpenSession()) { session.Load <Entity>(id); // no backup on load backupWriter.Files.Count.ShouldBe(0); session.SaveChanges(); // backup on save backupWriter.Files.Count.ShouldBe(1); backupWriter.Files[$"HybridDb.Tests.HybridDbTests+Entity_{id}_0.bak"] .ShouldBe(Encoding.UTF8.GetBytes(configuration.Serializer.Serialize(new Entity { Id = id, Property = "Asger" }))); } // try it again ResetConfiguration(); UseBackupWriter(backupWriter); Document <Entity>(); DisableBackgroundMigrations(); UseMigrations( new InlineMigration(1, new ChangeDocumentAsJObject <Entity>(x => { x["Property"] += "1"; })), new InlineMigration(2, new ChangeDocumentAsJObject <Entity>(x => { x["Property"] += "2"; }))); using (var session = store.OpenSession()) { session.Load <Entity>(id); // no backup on load backupWriter.Files.Count.ShouldBe(1); session.SaveChanges(); // backup on save backupWriter.Files.Count.ShouldBe(2); backupWriter.Files[$"HybridDb.Tests.HybridDbTests+Entity_{id}_1.bak"] .ShouldBe(Encoding.UTF8.GetBytes(configuration.Serializer.Serialize(new Entity { Id = id, Property = "Asger1" }))); } }