public void GenerateAssociationInserts_Should_Create_Proper_Inserts()
        {
            // arrange
            var record = new Dictionary<string, object> {
                {"badField1", "value2"},
                {"badField2", "value1"}};

            var extractAssociation = new ExtractAssociation(this.src.Object, this.dest.Object, this.rules.Object);

            var result = new List<Dictionary<string, object>>();

            this.dest.Setup(x => x.InsertRecord(It.IsAny<string>(), It.IsAny<Dictionary<string, object>>()))
                .Callback((string s, Dictionary<string, object> r) => result.Add(r));

            extractAssociation.ExtractedAssociation.InsertExtractedField(FirstExtractedTable, 10, "value1");
            extractAssociation.ExtractedAssociation.InsertExtractedField(FirstExtractedTable, 11, "value2");

            // act
            extractAssociation.InsertAssociationInserts(record, 4);

            // assert
            Assert.IsInstanceOfType(result, typeof(List<Dictionary<string, object>>));
            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(4, result[0]["desttablename_id"]);
            Assert.AreEqual(4, result[1]["desttablename_id"]);
            Assert.AreEqual(11, result[0]["extractedtable_id"]);
            Assert.AreEqual(10, result[1]["extractedtable_id"]);
        }
Exemplo n.º 2
0
        public void MapTable()
        {
            var extractColumns = new ExtractColumn(src, dest, rules);
            extractColumns.PerformRefactor();

            extractAssociation = new ExtractAssociation(src, dest, rules);
            extractAssociation.PerformRefactor();

            var mapper = new RecordMapper(
                rules,
                extractColumns.ForeignKeyResolver);

            InsertMappedFields(mapper);
        }
        public void Test_PerformRefactor_ExtractAssociation_Inserts_Into_Association_Table()
        {
            // arrange
            const int desttablename_id = 66;
            const int extracttable_id = 55;
            var extractAssocation = new ExtractAssociation(this.src.Object, this.dest.Object, this.rules.Object);
            var record = new Dictionary<string, object> {
                {"badField1", "value1"},
                {"badField2", "value2"}};
            this.dest.Setup(x => x.GetIdLastInsert()).Returns(extracttable_id);

            // act
            var result = extractAssocation.PerformRefactor();
            extractAssocation.InsertAssociationInserts(record, desttablename_id);

            // assert
            this.dest.Verify(x => x.InsertRecord("DestTableNameToExtractedTable",
                new Dictionary<string, object> {
                    {"desttablename_id", desttablename_id},
                    {"extractedtable_id", extracttable_id}}));
        }
        public void Test_PerformRefactor_ExtractAssociation_Inserts_Into_Extracted_Table()
        {
            // arrange
            var destQueue = new Queue<Dictionary<string, object>>();
            this.dest.Setup(x => x.InsertRecord(FirstExtractedTable, It.IsAny<Dictionary<string, object>>()))
                .Returns(1)
                .Callback((string t, Dictionary<string, object> record) => destQueue.Enqueue(record));
            this.dest.Setup(x => x.InsertRecord(SecondExtractedTable, It.IsAny<Dictionary<string, object>>()))
                .Returns(1)
                .Callback((string t, Dictionary<string, object> record) => destQueue.Enqueue(record));

            var extractAssociation = new ExtractAssociation(this.src.Object, this.dest.Object, this.rules.Object);

            // act
            var result = extractAssociation.PerformRefactor();

            // assert
            this.dest.Verify(x => x.InsertRecord(FirstExtractedTable, new Dictionary<string, object> { { "name", "value1" } }));
            this.dest.Verify(x => x.InsertRecord(FirstExtractedTable, new Dictionary<string, object> { { "name", "value2" } }));
            this.dest.Verify(x => x.InsertRecord(FirstExtractedTable, new Dictionary<string, object> { { "name", "value3" } }));
            this.dest.Verify(x => x.InsertRecord(SecondExtractedTable, new Dictionary<string, object> { { "name", "somethingvalue1" } }));
            this.dest.Verify(x => x.InsertRecord(SecondExtractedTable, new Dictionary<string, object> { { "name", "somethingvalue2" } }));
            this.dest.Verify(x => x.InsertRecord(SecondExtractedTable, new Dictionary<string, object> { { "name", "somethingvalue3" } }));
            this.dest.Verify(x => x.InsertRecord(SecondExtractedTable, new Dictionary<string, object> { { "name", "somethingelse2" } }));
            Assert.AreEqual(7, destQueue.Count);
            Assert.AreEqual(7, result);
        }
        public void Test_PerformRefactor_Creates_ExtractedAssociation()
        {
            // arrange
            var previous = "value1";
            this.dest.Setup(x => x.InsertRecord(FirstExtractedTable, It.IsAny<Dictionary<string, object>>()))
                .Returns(1)
                .Callback((string table, Dictionary<string, object> record) => previous = record["name"].ToString());
            this.dest.Setup(x => x.InsertRecord(SecondExtractedTable, It.IsAny<Dictionary<string, object>>()))
                .Returns(1)
                .Callback((string table, Dictionary<string, object> record) => previous = record["name"].ToString());

            var ids = new Dictionary<string, int> {
                {"value1", 555},
                {"value2", 777},
                {"value3", 888},
                {"somethingvalue1", 123},
                {"somethingvalue2", 321},
                {"somethingvalue3", 322},
                {"somethingelse2", 223}};

            this.dest.Setup(x => x.GetIdLastInsert())
                .Returns(() => ids[previous]);

            var extractAssocation = new ExtractAssociation(this.src.Object, this.dest.Object, this.rules.Object);

            // act
            var result = extractAssocation.PerformRefactor();

            // assert
            var extractedAssocation = extractAssocation.ExtractedAssociation;
            Assert.IsNotNull(extractedAssocation);

            var firstValues = new [] {"value1", "value2", "value3"};
            var secondValues = new [] {"somethingvalue1", "somethingvalue2", "somethingvalue3", "somethingelse2"};

            foreach (var value in firstValues)
                Assert.AreEqual(ids[value], extractedAssocation.GetIdFromField(FirstExtractedTable, value));

            foreach (var value in secondValues)
                Assert.AreEqual(ids[value], extractedAssocation.GetIdFromField(SecondExtractedTable, value));
        }