Exemple #1
0
        public void MigrationTestsTests()
        {
            //IMPORTANT NOTIFICATION
            //Till I figure out a way, please delete the .db file or drop tables clean before running this

            //Switch the comments to test one technology or another
            var technology = DataManagerTechnology.SQLite;
            //var technology = DataManagerTechnology.MySql;

            var    mysqlconnectionstring  = "Data Source=localhost;Database=auroratest;User ID=auroratest;Password=test;";
            var    sqliteconnectionstring = string.Format("URI=file:{0},version=3", dbFileName);
            string connectionString       = (technology == DataManagerTechnology.SQLite)?sqliteconnectionstring:mysqlconnectionstring;

            CreateEmptyDatabase();
            DataSessionProvider sessionProvider = new DataSessionProvider(technology, connectionString);
            IDataConnector      genericData     = ((technology == DataManagerTechnology.SQLite)? (IDataConnector) new SQLiteLoader():new MySQLDataLoader());

            genericData.ConnectToDatabase(connectionString);

            var migrators     = new List <Migrator>();
            var testMigrator0 = new TestMigrator();

            migrators.Add(testMigrator0);

            var migrationManager = new MigrationManager(sessionProvider, genericData, migrators);

            Assert.AreEqual(testMigrator0.Version, migrationManager.LatestVersion, "Latest version is correct");
            Assert.IsNull(migrationManager.GetDescriptionOfCurrentOperation(), "Description should be null before deciding what to do.");
            migrationManager.DetermineOperation();
            var operationDescription = migrationManager.GetDescriptionOfCurrentOperation();

            Assert.AreEqual(MigrationOperationTypes.CreateDefaultAndUpgradeToTarget, operationDescription.OperationType, "Operation type is correct.");
            Assert.AreEqual(testMigrator0.Version, operationDescription.CurrentVersion, "Current version is correct");
            //There will be no migration because there is only one migrator which will provide the default
            Assert.IsNull(operationDescription.StartVersion, "Start migration version is correct");
            Assert.IsNull(operationDescription.EndVersion, "End migration version is correct");
            try
            {
                migrationManager.ExecuteOperation();
                Assert.AreEqual(testMigrator0.Version, genericData.GetAuroraVersion(), "Version of settings is updated");
            }
            catch (MigrationOperationException)
            {
                Assert.Fail("Something failed during execution we weren't expecting.");
            }
            bool valid = migrationManager.ValidateVersion(migrationManager.LatestVersion);

            Assert.AreEqual(true, valid, "Database is a valid version");

            migrationManager.DetermineOperation();
            var operationDescription2 = migrationManager.GetDescriptionOfCurrentOperation();

            Assert.AreEqual(MigrationOperationTypes.DoNothing, operationDescription2.OperationType, "Operation type is correct.");
            Assert.AreEqual(testMigrator0.Version, operationDescription2.CurrentVersion, "Current version is correct");
            Assert.IsNull(operationDescription2.StartVersion, "Start migration version is correct");
            Assert.IsNull(operationDescription2.EndVersion, "End migration version is correct");
            migrationManager.ExecuteOperation();

            genericData.CloseDatabase();
        }
Exemple #2
0
 public bool Validate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     if (genericData.GetAuroraVersion() != Version)
     {
         return false;
     }
     return DoValidate(sessionProvider, genericData);
 }
Exemple #3
0
        public void MigrationTestsTests()
        {
            //IMPORTANT NOTIFICATION  
            //Till I figure out a way, please delete the .db file or drop tables clean before running this

            //Switch the comments to test one technology or another
            var technology = DataManagerTechnology.SQLite;
            //var technology = DataManagerTechnology.MySql;

            var mysqlconnectionstring = "Data Source=localhost;Database=auroratest;User ID=auroratest;Password=test;";
            var sqliteconnectionstring = string.Format("URI=file:{0},version=3", dbFileName);
            string connectionString = (technology==DataManagerTechnology.SQLite)?sqliteconnectionstring:mysqlconnectionstring;

            CreateEmptyDatabase();
            DataSessionProvider sessionProvider = new DataSessionProvider(technology, connectionString);
            IDataConnector genericData = ((technology==DataManagerTechnology.SQLite)? (IDataConnector) new SQLiteLoader():new MySQLDataLoader());
            
            genericData.ConnectToDatabase(connectionString);

            var migrators = new List<Migrator>();
            var testMigrator0 = new TestMigrator();
            migrators.Add(testMigrator0);

            var migrationManager = new MigrationManager(sessionProvider, genericData, migrators);
            Assert.AreEqual(testMigrator0.Version, migrationManager.LatestVersion, "Latest version is correct");
            Assert.IsNull(migrationManager.GetDescriptionOfCurrentOperation(),"Description should be null before deciding what to do.");
            migrationManager.DetermineOperation();
            var operationDescription = migrationManager.GetDescriptionOfCurrentOperation();
            Assert.AreEqual(MigrationOperationTypes.CreateDefaultAndUpgradeToTarget, operationDescription.OperationType, "Operation type is correct.");
            Assert.AreEqual(testMigrator0.Version, operationDescription.CurrentVersion, "Current version is correct");
            //There will be no migration because there is only one migrator which will provide the default
            Assert.IsNull(operationDescription.StartVersion, "Start migration version is correct");
            Assert.IsNull(operationDescription.EndVersion, "End migration version is correct");
            try
            {
                migrationManager.ExecuteOperation();
                Assert.AreEqual(testMigrator0.Version, genericData.GetAuroraVersion(), "Version of settings is updated");
            }
            catch(MigrationOperationException)
            {
                Assert.Fail("Something failed during execution we weren't expecting.");  
            }
            bool valid = migrationManager.ValidateVersion(migrationManager.LatestVersion);
            Assert.AreEqual(true,valid,"Database is a valid version");

            migrationManager.DetermineOperation();
            var operationDescription2 = migrationManager.GetDescriptionOfCurrentOperation();
            Assert.AreEqual(MigrationOperationTypes.DoNothing, operationDescription2.OperationType, "Operation type is correct.");
            Assert.AreEqual(testMigrator0.Version, operationDescription2.CurrentVersion, "Current version is correct");
            Assert.IsNull(operationDescription2.StartVersion, "Start migration version is correct");
            Assert.IsNull(operationDescription2.EndVersion, "End migration version is correct");
            migrationManager.ExecuteOperation();
            
            genericData.CloseDatabase();
        }
		public void ReturnDataSessionGivenValidSessionFactoryConfiguration()
		{
			// Arrange
			var dataSessionProvider = new DataSessionProvider(new UnitTestSessionFactoryBuilder());

			// Act
			var dataSession = dataSessionProvider.Create();

			// Assert
			Assert.That(dataSession != null);
		}
        public void ReturnDataSessionGivenValidSessionFactoryConfiguration()
        {
            // Arrange
            var dataSessionProvider = new DataSessionProvider(new UnitTestSessionFactoryBuilder());

            // Act
            var dataSession = dataSessionProvider.Create();

            // Assert
            Assert.That(dataSession != null);
        }
 public MigrationManager(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     this.sessionProvider = sessionProvider;
     this.genericData = genericData;
     migrators.Add(new AuroraMigrator_2010_03_13());
     migrators.Add(new AuroraMigrator_2010_11_4());
     migrators.Add(new AuroraMigrator_2010_12_30());
     migrators.Add(new AuroraMigrator_2011_1_15());
     migrators.Add(new AuroraMigrator_2011_1_16());
     migrators.Add(new AuroraMigrator_2011_1_20());
     migrators.Add(new AuroraMigrator_2011_1_28());
     migrators.Add(new AuroraMigrator_2011_2_1());
 }
 protected override void DoPrepareRestorePoint(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     CopyAllTablesToTempVersions(genericData);
 }
 protected override bool DoValidate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     return TestThatAllTablesValidate(genericData);
 }
Exemple #9
0
 protected virtual void DoCreateDefaults(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
 }
Exemple #10
0
 protected virtual void DoMigrate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
 }
Exemple #11
0
        protected virtual void DoPrepareRestorePoint(DataSessionProvider sessionProvider, IDataConnector genericData)
        {

        }
 protected override void DoCreateDefaults(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     EnsureAllTablesInSchemaExist(genericData);
 }
 public MigrationManager(DataSessionProvider sessionProvider, IDataConnector genericData, List<Migrator> migrators)
 {
     this.sessionProvider = sessionProvider;
     this.genericData = genericData;
     this.migrators = migrators;
 }
Exemple #14
0
 protected virtual bool DoValidate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     return true;
 }
 protected override bool DoValidate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     return TestThatAllTablesValidate(genericData);
 }
Exemple #16
0
 public IRestorePoint PrepareRestorePoint(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     DoPrepareRestorePoint(sessionProvider, genericData);
     return this;
 }
 protected override void DoMigrate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     DoCreateDefaults(sessionProvider, genericData);
 }
Exemple #18
0
 public void Migrate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     DoMigrate(sessionProvider, genericData);
     genericData.WriteAuroraVersion(Version);
 }
 protected override void DoPrepareRestorePoint(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     CopyAllTablesToTempVersions(genericData);
 }
Exemple #20
0
 public void CreateDefaults(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     DoCreateDefaults(sessionProvider, genericData);
     genericData.WriteAuroraVersion(Version);
 }
 public override void DoRestore(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     RestoreTempTablesToReal(genericData);
 }
 protected override void DoCreateDefaults(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     EnsureAllTablesInSchemaExist(genericData);
 }
 public DataManagerRepository(DataSessionProvider sessionProvider)
 {
     this.sessionProvider = sessionProvider;
 }
 protected override void DoMigrate(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     DoCreateDefaults(sessionProvider, genericData);
 }
Exemple #25
0
 public virtual void DoRestore(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
 }
 public override void DoRestore(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     RestoreTempTablesToReal(genericData);
 }
Exemple #27
0
 public MigrationManager(DataSessionProvider sessionProvider, IDataConnector genericData)
 {
     this.sessionProvider = sessionProvider;
     this.genericData = genericData;
     migrators.Add(new AuroraMigrator_2010_03_13());
 }