Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }