private void ValidateDAL(CruiseDatastore_V3 db) { var f_keys = db.ExecuteScalar <string>("PRAGMA foreign_keys;"); f_keys.Should().BeOneOf("on", "1", "yes", "true"); var version = db.DatabaseVersion; version.Should().NotBeNull(); Version.TryParse(version, out var versionParsed).Should().BeTrue(version); var createdVersion = db.CreatedVersion; createdVersion.Should().NotBeNullOrEmpty(); // validate that created version in in valid format Version.TryParse(version, out var createdVersionParsed).Should().BeTrue(createdVersion); db.ExecuteScalar <int>("SELECT count(*) FROM MessageLog WHERE Program IS NULL or Program = '';") .Should().Be(0); db.ExecuteScalar <string>("SELECT Message FROM MessageLog ORDER BY RowID DESC LIMIT 1;") .Should().Be("File Opened"); //var timeStamp = latestMessage.Time; //timeStamp.Should().NotBeNullOrWhiteSpace(); ////assert that file opened message was within the last 30 seconds //DateTime.Parse(timeStamp).Subtract(DateTime.Now).TotalSeconds.Should().BeLessThan(30); }
private (string, string, string) SetUpTestFile(string fileName, [CallerMemberName] string caller = null) { var filePath = Path.Combine(TestFilesDirectory, fileName); var baseFileName = Path.GetFileName(fileName); var orgFile = Path.Combine(TestTempPath, fileName); var crz3File = (string)null; // create copy of base file if (File.Exists(orgFile) == false) { File.Copy(filePath, orgFile); } crz3File = new Migrator().MigrateFromV2ToV3(orgFile, true); var v2againPath = Path.Combine(TestTempPath, caller + "_again_" + fileName); using (var v2again = new DAL(v2againPath, true)) using (var v3db = new CruiseDatastore_V3(crz3File)) { var cruiseID = v3db.ExecuteScalar <string>("SELECT CruiseID FROM Cruise;"); var downMigrator = new DownMigrator(); downMigrator.MigrateFromV3ToV2(cruiseID, v3db, v2again); } return(orgFile, crz3File, v2againPath); }
public bool HasDesignKeyChanges(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID) { var sourceAlias = "src"; destination.AttachDB(source, sourceAlias); try { var hasUnitChanges = destination.ExecuteScalar <int>( $@"SELECT count(*) FROM main.CuttingUnit AS cu1 JOIN {sourceAlias}.CuttingUnit AS cu2 USING (CuttingUnitID) WHERE cu1.CruiseID = @p1 AND cu1.CuttingUnitCode != cu2.CuttingUnitCode;", cruiseID) > 0; var hasStratumChanges = destination.ExecuteScalar <int>( $@"SELECT count(*) FROM main.Stratum as st1 JOIN {sourceAlias}.Stratum AS st2 USING (StratumID) WHERE st1.CruiseID = @p1 AND st1.StratumCode != st2.StratumCode;", cruiseID) > 0; var hasSampleGroupChanges = destination.ExecuteScalar <int>( $@"SELECT count(*) FROM main.SampleGroup AS sg1 JOIN {sourceAlias}.SampleGroup AS sg2 USING (SampleGroupID) WHERE sg1.CruiseID = @p1 AND sg1.StratumCode != sg2.StratumCode OR sg1.SampleGroupCode != sg2.SampleGroupCode;", cruiseID) > 0; var hasSubPopChanges = destination.ExecuteScalar <int>( $@"SELECT count(*) FROM main.SubPopulation AS sp1 JOIN {sourceAlias}.SubPopulation AS sp2 USING (SubPopulationID) WHERE sp1.CruiseID = @p1 AND sp1.SpeciesCode != sp2.SpeciesCode OR sp1.LiveDead != sp2.LiveDead;", cruiseID) > 0; return(hasUnitChanges || hasStratumChanges || hasStratumChanges || hasSubPopChanges); } finally { destination.DetachDB(sourceAlias); } }