Exemplo n.º 1
0
        public void AdvancedRecordsetActivityWorker_ExecuteSql_ProcessComplexStatement_REPLACE()
        {
            const string sqlQuery = "REPLACE INTO person(name, age) VALUES('Robocop', 1000);";

            var advancedRecordsetActivity = CreateAdvancedRecordsetActivity();

            advancedRecordsetActivity.DeclareVariables.Add(new NameValue {
                Name = "", Value = ""
            });
            advancedRecordsetActivity.SqlQuery = sqlQuery;
            advancedRecordsetActivity.Outputs  = new List <IServiceOutputMapping>
            {
                new ServiceOutputMapping {
                    MappedFrom = "records_affected", RecordSetName = "person"
                }
            };

            const string tableName = "tableName";

            var dataTable = new DataTable("myTable")
            {
                TableName = "table"
            };

            dataTable.Rows.Add();

            var dataSet = new DataSet();

            dataSet.Tables.Add(dataTable);

            var started = false;

            var hashedRecSetsList = new List <(string hashCode, string recSet)>
            {
                ("person", "person")
            };

            var mockAdvancedRecordset = new Mock <IAdvancedRecordset>();

            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.HashedRecSets).Returns(hashedRecSetsList);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.LoadRecordsetAsTable(tableName));
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ExecuteQuery("SELECT * FROM person")).Returns(dataSet);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ApplyResultToEnvironment(It.IsAny <string>(), It.IsAny <ICollection <IServiceOutputMapping> >(), It.IsAny <List <DataRow> >(), It.IsAny <bool>(), It.IsAny <int>(), ref started));
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.UpdateSqlWithHashCodes(It.IsAny <TSQLUnknownStatement>())).Returns(sqlQuery);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ApplyScalarResultToEnvironment(It.IsAny <string>(), It.IsAny <int>()));

            using (var viewModel = new AdvancedRecordsetActivityWorker(advancedRecordsetActivity, mockAdvancedRecordset.Object))
            {
                viewModel.ExecuteSql(0, ref started);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.LoadRecordsetAsTable("person"), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.UpdateSqlWithHashCodes(It.IsAny <TSQLUnknownStatement>()), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ApplyResultToEnvironment(It.IsAny <string>(), It.IsAny <ICollection <IServiceOutputMapping> >(), It.IsAny <List <DataRow> >(), It.IsAny <bool>(), It.IsAny <int>(), ref started), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ExecuteQuery("SELECT * FROM person"), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ApplyScalarResultToEnvironment(It.IsAny <string>(), It.IsAny <int>()), Times.Once);
            }
        }
        public void AdvancedRecordsetActivity_ExecuteRecordset_GIVEN_JsonObject_ShouldSuccess()
        {
            var started             = false;
            var personRecordsetName = "personRec";

            var env = CreateExecutionEnvironment();

            var personObject = new List <AssignValue> {
                new AssignValue("[[@person()]]", "{'name':'bob', 'age':21, 'address_id':'1'}")
            };

            env.AssignWithFrame(personObject, 0);
            env.CommitAssign();

            var personRec = new List <AssignValue> {
                new AssignValue("[[personRec().name]]", "[[@person(*).name]]")
            };

            env.AssignWithFrame(personRec, 0);
            env.CommitAssign();

            var recordset = new AdvancedRecordset(env);

            recordset.LoadRecordsetAsTable(personRecordsetName);

            var activity = new AdvancedRecordsetActivity()
            {
                SqlQuery = "Select * from personRec",
                Outputs  = new List <IServiceOutputMapping>
                {
                    new ServiceOutputMapping
                    {
                        MappedFrom = "name",
                        MappedTo   = "[[TableCopy().name]]",
                    }
                }
            };
            var worker = new AdvancedRecordsetActivityWorker(activity, recordset);

            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            dataObject.Setup(o => o.Environment).Returns(env);
            dataObject.Object.Environment = env;

            worker.ExecuteRecordset(dataObject.Object, 0);

            var result = env.Eval("[[TableCopy(1).name]]", 0);

            Assert.AreEqual("bob", ExecutionEnvironment.WarewolfEvalResultToString(result));
        }
Exemplo n.º 3
0
        public void AdvancedRecordsetActivityWorker_AddDeclarations_ExpectedException_NoThrow()
        {
            const string varName  = "varName";
            const string varValue = "varValue";
            var          mockAdvancedRecordsetFactory = new Mock <IAdvancedRecordsetFactory>();

            //mockAdvancedRecordsetFactory.Setup(advancedRecordsetFactory => advancedRecordsetFactory.New(It.IsAny<IExecutionEnvironment>())).Returns(mockAdvancedRecordset.Object)

            //TODO: Merge constructors

            using (var viewModel = new AdvancedRecordsetActivityWorker(null, null, mockAdvancedRecordsetFactory.Object))
            {
                viewModel.AddDeclarations(varName, varValue);
            }
        }
Exemplo n.º 4
0
        public void AdvancedRecordsetActivityWorker_ExecuteSql_ProcessComplexStatement_CREATE()
        {
            const string sqlQuery = "CREATE TABLE IF NOT EXISTS Variables (Name TEXT PRIMARY KEY, Value BLOB)";

            var advancedRecordsetActivity = CreateAdvancedRecordsetActivity();

            advancedRecordsetActivity.DeclareVariables.Add(new NameValue {
                Name = "", Value = ""
            });
            advancedRecordsetActivity.SqlQuery = sqlQuery;
            advancedRecordsetActivity.Outputs  = new List <IServiceOutputMapping>
            {
                new ServiceOutputMapping {
                    MappedFrom = "records_affected", RecordSetName = "person"
                }
            };

            var dataTable = new DataTable("myTable")
            {
                TableName = "table"
            };

            dataTable.Rows.Add();

            var dataSet = new DataSet();

            dataSet.Tables.Add(dataTable);

            var started = false;

            var hashedRecSetsList = new List <(string hashCode, string recSet)>
            {
                ("person", "person")
            };

            var mockAdvancedRecordset = new Mock <IAdvancedRecordset>();

            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.HashedRecSets).Returns(hashedRecSetsList);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ReturnSql(It.IsAny <List <TSQLToken> >()));
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ApplyScalarResultToEnvironment(It.IsAny <string>(), It.IsAny <int>()));

            using (var viewModel = new AdvancedRecordsetActivityWorker(advancedRecordsetActivity, mockAdvancedRecordset.Object))
            {
                viewModel.ExecuteSql(0, ref started);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ReturnSql(It.IsAny <List <TSQLToken> >()), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ApplyScalarResultToEnvironment(It.IsAny <string>(), It.IsAny <int>()), Times.Once);
            }
        }
Exemplo n.º 5
0
        public void AdvancedRecordsetActivityWorker_LoadRecordset()
        {
            const string tableName             = "tableName";
            var          mockAdvancedRecordset = new Mock <IAdvancedRecordset>();

            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.LoadRecordsetAsTable(tableName));
            var mockAdvancedRecordsetFactory = new Mock <IAdvancedRecordsetFactory>();

            mockAdvancedRecordsetFactory.Setup(advancedRecordsetFactory => advancedRecordsetFactory.New(It.IsAny <IExecutionEnvironment>())).Returns(mockAdvancedRecordset.Object);

            using (var viewModel = new AdvancedRecordsetActivityWorker(null, mockAdvancedRecordset.Object, mockAdvancedRecordsetFactory.Object))
            {
                viewModel.LoadRecordset(tableName);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.LoadRecordsetAsTable(tableName), Times.Once);
            }
        }
Exemplo n.º 6
0
        public void AdvancedRecordsetActivityWorker_AddDeclarations()
        {
            const string varName  = "varName";
            const string varValue = "varValue";
            var          mockAdvancedRecordset = new Mock <IAdvancedRecordset>();

            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.CreateVariableTable());
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.InsertIntoVariableTable(varName, varValue));
            var mockAdvancedRecordsetFactory = new Mock <IAdvancedRecordsetFactory>();

            mockAdvancedRecordsetFactory.Setup(advancedRecordsetFactory => advancedRecordsetFactory.New(It.IsAny <IExecutionEnvironment>())).Returns(mockAdvancedRecordset.Object);

            using (var viewModel = new AdvancedRecordsetActivityWorker(null, mockAdvancedRecordset.Object, mockAdvancedRecordsetFactory.Object))
            {
                viewModel.AddDeclarations(varName, varValue);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.CreateVariableTable(), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.InsertIntoVariableTable(varName, varValue), Times.Once);
            }
        }
Exemplo n.º 7
0
        public void AdvancedRecordsetActivityWorker_ExecuteSql_ProcessComplexStatement_UNION()
        {
            const string sqlQuery = "SELECT * from person UNION ALL SELECT * from person;";

            var advancedRecordsetActivity = CreateAdvancedRecordsetActivity();

            advancedRecordsetActivity.DeclareVariables.Add(new NameValue {
                Name = "", Value = ""
            });
            advancedRecordsetActivity.SqlQuery = sqlQuery;

            const string tableName = "tableName";

            var dataTable = new DataTable("myTable")
            {
                TableName = "table"
            };

            dataTable.Rows.Add();

            var dataSet = new DataSet();

            dataSet.Tables.Add(dataTable);

            var started = false;

            var hashedRecSetsList = new List <(string hashCode, string recSet)>();

            var mockAdvancedRecordset = new Mock <IAdvancedRecordset>();

            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.HashedRecSets).Returns(hashedRecSetsList);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.LoadRecordsetAsTable(tableName));
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ExecuteQuery(sqlQuery)).Returns(dataSet);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ApplyResultToEnvironment(It.IsAny <string>(), It.IsAny <ICollection <IServiceOutputMapping> >(), It.IsAny <List <DataRow> >(), It.IsAny <bool>(), It.IsAny <int>(), ref started));

            using (var viewModel = new AdvancedRecordsetActivityWorker(advancedRecordsetActivity, mockAdvancedRecordset.Object))
            {
                viewModel.ExecuteSql(0, ref started);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ExecuteQuery(sqlQuery), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ApplyResultToEnvironment(It.IsAny <string>(), It.IsAny <ICollection <IServiceOutputMapping> >(), It.IsAny <List <DataRow> >(), It.IsAny <bool>(), It.IsAny <int>(), ref started), Times.Once);
            }
        }
        public void AdvancedRecordsetActivityWorker_GetIdentifiers_TSQLStatementType_SELECT_GivenTwoField_ReturnIdentifierWithTwoValues()
        {
            var advancedRecordsetActivity = CreateAdvancedRecordsetActivity();

            advancedRecordsetActivity.DeclareVariables.Add(new NameValue {
                Name = "", Value = ""
            });
            advancedRecordsetActivity.SqlQuery = "Select personid, personname from person";

            const string expectedTableName = "person";

            var mockAdvancedRecordset = new Mock <IAdvancedRecordset>();

            using (var viewModel = new AdvancedRecordsetActivityWorker(advancedRecordsetActivity, mockAdvancedRecordset.Object))
            {
                var identifiers = viewModel.GetIdentifiers();
                Assert.AreEqual(1, identifiers.Count);
                Assert.AreEqual(expectedTableName, identifiers.FirstOrDefault().Key);
                Assert.AreEqual(2, identifiers.FirstOrDefault().Value.Count);
            }
        }
Exemplo n.º 9
0
        public void AdvancedRecordsetActivityWorker_ExecuteSql_TSQLStatementType_Select()
        {
            var advancedRecordsetActivity = CreateAdvancedRecordsetActivity();

            advancedRecordsetActivity.DeclareVariables.Add(new NameValue {
                Name = "", Value = ""
            });
            advancedRecordsetActivity.SqlQuery = "Select * from person";

            const string tableName = "tableName";
            const string sqlQuery  = "sqlQuery";

            var dataTable = new DataTable("myTable")
            {
                TableName = "table"
            };

            dataTable.Rows.Add();

            var dataSet = new DataSet();

            dataSet.Tables.Add(dataTable);

            var started = false;

            var mockAdvancedRecordset = new Mock <IAdvancedRecordset>();

            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.LoadRecordsetAsTable(tableName));
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.UpdateSqlWithHashCodes(It.IsAny <TSQLSelectStatement>())).Returns(sqlQuery);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ExecuteQuery(sqlQuery)).Returns(dataSet);
            mockAdvancedRecordset.Setup(advancedRecordset => advancedRecordset.ApplyResultToEnvironment(It.IsAny <string>(), It.IsAny <ICollection <IServiceOutputMapping> >(), It.IsAny <List <DataRow> >(), It.IsAny <bool>(), It.IsAny <int>(), ref started));

            using (var viewModel = new AdvancedRecordsetActivityWorker(advancedRecordsetActivity, mockAdvancedRecordset.Object))
            {
                viewModel.ExecuteSql(0, ref started);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.UpdateSqlWithHashCodes(It.IsAny <TSQLSelectStatement>()), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ExecuteQuery(sqlQuery), Times.Once);
                mockAdvancedRecordset.Verify(advancedRecordset => advancedRecordset.ApplyResultToEnvironment(It.IsAny <string>(), It.IsAny <ICollection <IServiceOutputMapping> >(), It.IsAny <List <DataRow> >(), It.IsAny <bool>(), It.IsAny <int>(), ref started), Times.Once);
            }
        }
Exemplo n.º 10
0
        public void AdvancedRecordsetActivity_ExecuteRecordset()
        {
            var started             = false;
            var personRecordsetName = "person";
            var l = new List <AssignValue>();

            l.Add(new AssignValue("[[person().name]]", "bob"));
            l.Add(new AssignValue("[[person().age]]", "21"));
            l.Add(new AssignValue("[[person().address_id]]", "1"));

            var env = CreateExecutionEnvironment();

            env.AssignWithFrame(l, 0);
            env.CommitAssign();

            var recordset = new AdvancedRecordset(env);

            recordset.LoadRecordsetAsTable(personRecordsetName);
            recordset.ApplyResultToEnvironment(personRecordsetName, new List <IServiceOutputMapping>(), new List <DataRow>(), false, 0, ref started);
            recordset.CreateVariableTable();
            recordset.InsertIntoVariableTable("TestVariable", "testdata");

            var activity = new AdvancedRecordsetActivity()
            {
                SqlQuery = "Select * from person",
            };
            var worker = new AdvancedRecordsetActivityWorker(activity, recordset);

            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            dataObject.Setup(o => o.Environment).Returns(env);
            dataObject.Object.Environment = env;
            //TODO: this is failing as it needs a mock of the recorset
            //  worker.ExecuteRecordset(dataObject.Object, 0)
        }
        static AdvancedRecordsetActivityWorker GetAdvancedRecordsetWorker(Mock <IAdvancedRecordset> worker)
        {
            var advancedRecordset = new AdvancedRecordsetActivityWorker(null, worker.Object, null);

            return(advancedRecordset);
        }