public void DeepIgnoreTest() { var analyzed = new IgnoreMapAnalyzer(); var analyzedHash = Hashing.HashTypeMaps(analyzed.TypeMap); var analyzedCurrentHash = Hashing.HashTypeMaps(TestTypeMaps.IgnoreTestMap); TypeMapDifferences differences = new TypeMapDifferences(analyzed.TypeMap, TestTypeMaps.IgnoreTestMap, new List <DifferenceType> { DifferenceType.ChangedColumnOrder }); Assert.IsTrue(!differences.Any()); }
public async Task <bool> HashesMatch(DbConnection con, string tableName, TypeMap typeMap) { const string HASH_COLUMN = "Hash"; string getHashRecord = $"select {HASH_COLUMN} from AnalyzedModelHashes where TableName='{tableName}'"; string existingHash = await con.RunCommandGetString(getHashRecord, HASH_COLUMN); string newHash = typeMap.EncodeToBase64(); if (existingHash == newHash) { return(true); } if (existingHash == string.Empty) { await CreateTableFromTypeMap(con, tableName, typeMap); return(false); } TypeMap existing = TypeMap.DecodeFromBase64(existingHash); TypeMapDifferences differences = existing.GetDifferences(typeMap); foreach (TypeMapDifference difference in differences) { if (difference.DifferenceType == DifferenceType.DataTypeChange) { throw new Exception($"Difference types {nameof(DifferenceType.DataTypeChange)}, " + $" not supported. \n" + $"Column: {difference.ColumnKey}"); } if (difference.DifferenceType == DifferenceType.ChangedColumnOrder) { //TODO: Better handling. //ignore for now } if (difference.DifferenceType == DifferenceType.AddedColumn) { NodeProperties node = typeMap[difference.ColumnKey]; string alterState = $"ALTER TABLE {typeMap.Name} ADD COLUMN {difference.ColumnKey} {SqlTranslator.SqlTypeFromInternalType(node.InternalType, this).SqlType};"; await con.RunCommandAsync(alterState); } } return(false); }
public void AnalyticalObjectComplexText() { var analyzed = new Parcel2LevelAnalyzer(); var analyzedHash = Hashing.HashTypeMaps(analyzed.TypeMap); var analyzedCurrentHash = Hashing.HashTypeMaps(TestTypeMaps.P2TypeMap); TypeMapDifferences differences = new TypeMapDifferences(analyzed.TypeMap, TestTypeMaps.P2TypeMap, new DifferenceType[] { DifferenceType.ChangedColumnOrder }); Assert.AreEqual(analyzedHash, analyzedCurrentHash); }
public void AnalyticalObjectComplexText() { var analyzed = new Parcel2LevelAnalyzer(); var analyzedHash = Hashing.HashTypeMaps(analyzed.TypeMap); var analyzedCurrentHash = Hashing.HashTypeMaps(TestTypeMaps.P2TypeMap); foreach (string key in analyzed.TypeMap.Keys) { Assert.IsTrue(TestTypeMaps.P2TypeMap.ContainsKey(key)); } TypeMapDifferences differences = new TypeMapDifferences(analyzed.TypeMap, TestTypeMaps.P2TypeMap); Assert.AreEqual(analyzedHash, analyzedCurrentHash); }
public void DeepSelfRefTest() { var analyzed = new WideParcelSelfReferenceDeep(); var analyzedHash = Hashing.HashTypeMaps(analyzed.TypeMap); var analyzedCurrentHash = Hashing.HashTypeMaps(TestTypeMaps.SelfReferenceTestDeep); TypeMapDifferences differences = new TypeMapDifferences(analyzed.TypeMap, TestTypeMaps.SelfReferenceTest, new List <DifferenceType> { DifferenceType.ChangedColumnOrder }); var test = string.Empty; test += analyzed.TypeMap.ToString() + "\n\n\n\n\n\n\n\n\n"; test += TestTypeMaps.SelfReferenceTest.ToString(); Assert.AreEqual(analyzedHash, analyzedCurrentHash); }
public void ExternalAnalyticalObjectTest() { // merge dictionaries (like GetFromService) foreach (var entry in TestTypeMaps.P2TypeMap) { TestTypeMaps.P3TypeMap.Add(entry); } var analyzed = new Parcel3LevelAnalyzer(); var analyzedHash = Hashing.HashTypeMaps(analyzed.TypeMap); var analyzedCurrentHash = Hashing.HashTypeMaps(TestTypeMaps.P3TypeMap); DictionaryAssert.KeysMatch(analyzed.TypeMap, TestTypeMaps.P3TypeMap); TypeMapDifferences differences = new TypeMapDifferences(analyzed.TypeMap, TestTypeMaps.P3TypeMap); Assert.AreEqual(analyzedHash, analyzedCurrentHash); }
public void ExternalAnalyticalObjectTestNoReference() { // merge dictionaries (like GetFromService) foreach (var entry in TestTypeMaps.P2TypeMap) { TestTypeMaps.P3TypeMapNoRef.Add(new KeyValuePair <string, NodeProperties>(entry.Key, entry.Value)); } var analyzed = new Parcel3LevelAnalyzer(); analyzed.Property("referencetoparcel2level", new AnalyticalObject <Parcel2Level>()).GetFromService("SomeService", new Parcel2LevelAnalyzer()); var analyzedHash = Hashing.HashTypeMaps(analyzed.TypeMap); var analyzedCurrentHash = Hashing.HashTypeMaps(TestTypeMaps.P3TypeMapNoRef); TypeMapDifferences differences = new TypeMapDifferences(analyzed.TypeMap, TestTypeMaps.P3TypeMapNoRef, new List <DifferenceType>() { DifferenceType.ChangedColumnOrder }); Assert.IsFalse(differences.Any()); }