public void MongoSnapshotStore_Returns_Null_When_No_Snapshot_Exists()
        {
            var database = new Mock <IMongoRepository>();

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

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

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

            Assert.IsNull(snapshot);
        }
        public void MongoSnapshotStore_Deserializes_Snapshot_Details()
        {
            var database = new Mock <IMongoRepository>();

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

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

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

            Assert.AreEqual(900, snapshot.Data.Balance);
        }
        public void MongoSnapshotStore_Serializes_Snapshots()
        {
            var database = new Mock <IMongoRepository>();

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

            var store = new MongoSnapshotStore
            {
                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());
        }