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)); }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); }