Skip to content
Snippets Groups Projects
Commit 26d06f39 authored by Sebastian Pongratz's avatar Sebastian Pongratz :ping_pong:
Browse files

Merge branch '1086863_sqlBuilderIN' into '2021.2'

1086863 SqlBuilder IN condition with over 1000 values

See merge request xrm/basic!1411
parents 29eb5049 4fc6c4dc
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
<name>ArrayUtils_test</name>
<title>[TEST] Util_lib - ArrayUtils</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<icon>VAADIN:CHECK_CIRCLE</icon>
<process>%aditoprj%/process/ArrayUtils_test/process.js</process>
<alias>Data_alias</alias>
<variants>
<element>EXECUTABLE</element>
</variants>
</process>
import("Util_lib");
import("system.result");
import("system.vars");
import("UnitTest_lib");
var chunk = new TestSuite("ArrayUtils.chunk", [
new Test("should test if an arrays are split up into the correct amount of chunks",
function (pTester, pDataProvider)
{
var chunkSize = pDataProvider[1];
var chunkedArray = ArrayUtils.chunk(pDataProvider[0], chunkSize);
var expectedChunkCount = pDataProvider[2];
pTester.expectThat(chunkedArray).hasLength(expectedChunkCount).assert();
},
function dataProvider()
{
return [
[["a","b","c","d","e","f","g","h","i","j"], 2, 5], //exactly divisible
[["k","o","n","o","d","i","o","d","a","o"], 3, 4], //last chunk not full
[["a","b","c","d","e","f","g","h","i","j"], 16, 1], //first chunk not full
[["a","b","c","d","e","n","a","n","i","o"], 0, 0] //chunksize 0 => empty array
];
}
),
new Test("should test if the size of the chunks is correct",
function (pTester, pDataProvider)
{
var chunkSize = pDataProvider[1];
var chunkedArray = ArrayUtils.chunk(pDataProvider[0], chunkSize);
pTester.expectThat(chunkedArray).elementAt(0).hasLength(chunkSize).assert();
pTester.expectThat(chunkedArray).elementAt(-1).hasMaxLength(chunkSize).assert();
},
function dataProvider()
{
return [
[["a","b","a","k","a","y","a","r","o","u"], 2], //exactly divisible
[["a","b","c","d","e","f","g","h","i","j"], 3] //last chunk not full
];
}
)
]);
var tester = new Tester("Test ArrayUtils");
tester.initCoverage(ArrayUtils);
tester.test(chunk);
tester.summary();
result.object(tester.getResults());
......@@ -5,6 +5,7 @@ import("system.logging");
import("Sql_lib");
import("Util_lib");
import("system.datetime");
import("system.neonFilter");
//@TODO: add support for permissions to the lib
......@@ -18,7 +19,7 @@ function FilterConditionGroup (pGroup)
if (pGroup && "filter" in pGroup)
pGroup = pGroup.filter;
var operator = pGroup ? pGroup.operator : "AND";
var operator = pGroup ? pGroup.operator : neonFilter.MERGE_OPERATOR_AND;
var childs = pGroup ? pGroup.childs : [];
this.type = "group";
this.operator = operator;
......@@ -229,7 +230,7 @@ JditoFilter.prototype.lookupFilterFields = function (pFields)
this._lookupFields = pFields;
var lookupFilterFn = function (pRecordValue, pFilterValue, pOperator, pRow)
{
if (pOperator == "CONTAINS")
if (pOperator == neonFilter.SEARCH_OPERATOR_CONTAINS)
{
var filterValues = pFilterValue.split(" ").filter(function (val) {return val.trim();});
return filterValues.every(function (filterValue)
......@@ -290,7 +291,7 @@ JditoFilter.prototype.checkRecord = function (pRow)
}
else if (pCondition.type == "group")
{
if (pCondition.operator == "AND")
if (pCondition.operator == neonFilter.MERGE_OPERATOR_AND)
return pCondition.childs.every(_testRecord, this);
return pCondition.childs.some(_testRecord, this);
}
......@@ -304,34 +305,34 @@ JditoFilter.prototype.checkRecord = function (pRow)
{
switch (pOperator)
{
case "CONTAINS":
case neonFilter.SEARCH_OPERATOR_CONTAINS:
return (new RegExp(RegExpUtils.escapePatternStr(pFilterValue), regexFlags)).test(pRowValue);
case "CONTAINSNOT":
case neonFilter.SEARCH_OPERATOR_CONTAINSNOT:
return !(new RegExp(RegExpUtils.escapePatternStr(pFilterValue), regexFlags)).test(pRowValue);
case "STARTSWITH":
case neonFilter.SEARCH_OPERATOR_STARTSWITH:
return (new RegExp("^" + RegExpUtils.escapePatternStr(pFilterValue), regexFlags)).test(pRowValue);
case "ENDSWITH":
case neonFilter.SEARCH_OPERATOR_ENDSWITH:
return (new RegExp(RegExpUtils.escapePatternStr(pFilterValue) + "$", regexFlags)).test(pRowValue);
case "EQUAL":
case neonFilter.SEARCH_OPERATOR_EQUAL:
return (new RegExp("^" + RegExpUtils.escapePatternStr(pFilterValue) + "$", regexFlags)).test(pRowValue);
case "NOT_EQUAL":
case neonFilter.SEARCH_OPERATOR_NOT_EQUAL:
return !(new RegExp("^" + RegExpUtils.escapePatternStr(pFilterValue) + "$", regexFlags)).test(pRowValue);
//String-comparison returns false values < <= > >= are just relevant for numbervalues
case "LESS":
case neonFilter.SEARCH_OPERATOR_LESS:
return new Number(pRowValue) < new Number(pFilterValue);
case "LESS_OR_EQUAL":
case neonFilter.SEARCH_OPERATOR_LESS_OR_EQUAL:
return new Number(pRowValue) <= new Number(pFilterValue);
case "GREATER":
case neonFilter.SEARCH_OPERATOR_GREATER:
return new Number(pRowValue) > new Number(pFilterValue);
case "GREATER_OR_EQUAL":
case neonFilter.SEARCH_OPERATOR_GREATER_OR_EQUAL:
return new Number(pRowValue) >= new Number(pFilterValue);
case "ISNULL":
case neonFilter.SEARCH_OPERATOR_ISNULL:
return pRowValue == "";
case "ISNOTNULL":
case neonFilter.SEARCH_OPERATOR_ISNOTNULL:
return pRowValue != "";
case "TIMEFRAME_EQUAL":
case "TIMEFRAME_COMING":
case "TIMEFRAME_PAST":
case neonFilter.SEARCH_OPERATOR_TIMEFRAME_EQUAL:
case neonFilter.SEARCH_OPERATOR_TIMEFRAME_COMING:
case neonFilter.SEARCH_OPERATOR_TIMEFRAME_PAST:
var [start, end] = datetime.resolveRelativeDateExpression(pFilterValue, new Date().getTime(), vars.get("$sys.timezone"));
return pRowValue >= start && pRowValue <= end;
}
......@@ -506,7 +507,7 @@ JditoFilterUtils.getEmptyFilter = function (pEntity)
entity: pEntity,
filter: {
type: "group",
operator: "AND",
operator: neonFilter.MERGE_OPERATOR_AND,
childs: []
}
};
......@@ -698,9 +699,9 @@ FilterSqlTranslator.prototype.getSqlCondition = function ()
var conditionFn = fieldConditionFns[pFilter.name];
condition = conditionFn.call(null, filterValue, pFilter.operator);
if (pOperator == "AND")
if (pOperator == neonFilter.MERGE_OPERATOR_AND)
this.andIfSet(condition);
else if (pOperator == "OR")
else if (pOperator == neonFilter.MERGE_OPERATOR_OR)
this.orIfSet(condition);
return;
......@@ -722,23 +723,23 @@ FilterSqlTranslator.prototype.getSqlCondition = function ()
var generatedCondition = _getCondition(filterValue, pFilter.operator, sqlField, pFilter.contenttype);
if (generatedCondition instanceof SqlBuilder || Utils.isString(generatedCondition))
{
if (pOperator == "AND")
if (pOperator == neonFilter.MERGE_OPERATOR_AND)
this.andIfSet(generatedCondition);
else if (pOperator == "OR")
else if (pOperator == neonFilter.MERGE_OPERATOR_OR)
this.orIfSet(generatedCondition);
}
else
{
var isStringType = pFilter.contenttype != "NUMBER"
&& pFilter.contenttype != "DATE"
&& pFilter.contenttype != "BOOLEAN";
var isStringType = pFilter.contenttype != neonFilter.CONTENT_TYPE_NUMBER
&& pFilter.contenttype != neonFilter.CONTENT_TYPE_DATE
&& pFilter.contenttype != neonFilter.CONTENT_TYPE_BOOLEAN;
[condition, filterValue] = generatedCondition;
if (isStringType && ignoreCase)
condition = condition.replace("#", "UPPER(#)").replace("?", "UPPER(?)");
if (pOperator == "AND")
if (pOperator == neonFilter.MERGE_OPERATOR_AND)
this.andIfSet(sqlField, filterValue, condition);
else if (pOperator == "OR")
else if (pOperator == neonFilter.MERGE_OPERATOR_OR)
this.orIfSet(sqlField, filterValue, condition);
}
}
......@@ -750,16 +751,16 @@ FilterSqlTranslator.prototype.getSqlCondition = function ()
{
_addCondition.call(subCondition, cond, operator);
});
if (pOperator == "AND")
if (pOperator == neonFilter.MERGE_OPERATOR_AND)
this.andIfSet(subCondition);
else if (pOperator == "OR")
else if (pOperator == neonFilter.MERGE_OPERATOR_OR)
this.orIfSet(subCondition);
}
}
function _handleDate(pValue, pType)
{
if(pValue && pType == "DATE")
if(pValue && pType == neonFilter.CONTENT_TYPE_DATE)
{
pValue = datetime.switchTimezone(pValue, null, vars.get("$sys.timezone"));
}
......@@ -772,16 +773,16 @@ FilterSqlTranslator.prototype.getSqlCondition = function ()
{
switch (pOperator)
{
case "CONTAINS":
case neonFilter.SEARCH_OPERATOR_CONTAINS:
return [SqlBuilder.LIKE(), "%" + pValue + "%"];
case "CONTAINSNOT":
case neonFilter.SEARCH_OPERATOR_CONTAINSNOT:
return [SqlBuilder.NOT_LIKE(), "%" + pValue + "%"];
case "STARTSWITH":
case neonFilter.SEARCH_OPERATOR_STARTSWITH:
return [SqlBuilder.LIKE(), pValue + "%"];
case "ENDSWITH":
case neonFilter.SEARCH_OPERATOR_ENDSWITH:
return [SqlBuilder.LIKE(), "%" + pValue];
case "EQUAL":
if(pType == "DATE")
case neonFilter.SEARCH_OPERATOR_EQUAL:
if(pType == neonFilter.CONTENT_TYPE_DATE)
{
let start = _handleDate(pValue, pType);
let end = new Date(start);
......@@ -795,8 +796,8 @@ FilterSqlTranslator.prototype.getSqlCondition = function ()
{
return [SqlBuilder.EQUAL(), pValue];
}
case "NOT_EQUAL":
if(pType == "DATE")
case neonFilter.SEARCH_OPERATOR_NOT_EQUAL:
if(pType == neonFilter.CONTENT_TYPE_DATE)
{
let start = _handleDate(pValue, pType);
let end = new Date(start);
......@@ -810,25 +811,25 @@ FilterSqlTranslator.prototype.getSqlCondition = function ()
{
return [SqlBuilder.NOT_EQUAL(), pValue];
}
case "LESS":
case neonFilter.SEARCH_OPERATOR_LESS:
pValue = _handleDate(pValue, pType);
return [SqlBuilder.LESS(), pValue];
case "LESS_OR_EQUAL":
case neonFilter.SEARCH_OPERATOR_LESS_OR_EQUAL:
pValue = _handleDate(pValue, pType);
return [SqlBuilder.LESS_OR_EQUAL(), pValue];
case "GREATER":
case neonFilter.SEARCH_OPERATOR_GREATER:
pValue = _handleDate(pValue, pType);
return [SqlBuilder.GREATER(), pValue];
case "GREATER_OR_EQUAL":
case neonFilter.SEARCH_OPERATOR_GREATER_OR_EQUAL:
pValue = _handleDate(pValue, pType);
return [SqlBuilder.GREATER_OR_EQUAL(), pValue];
case "ISNULL":
case neonFilter.SEARCH_OPERATOR_ISNULL:
return pField + " is null";
case "ISNOTNULL":
case neonFilter.SEARCH_OPERATOR_ISNOTNULL:
return pField + " is not null";
case "TIMEFRAME_EQUAL":
case "TIMEFRAME_COMING":
case "TIMEFRAME_PAST":
case neonFilter.SEARCH_OPERATOR_TIMEFRAME_EQUAL:
case neonFilter.SEARCH_OPERATOR_TIMEFRAME_COMING:
case neonFilter.SEARCH_OPERATOR_TIMEFRAME_PAST:
var [start, end] = datetime.resolveRelativeDateExpression(pValue, new Date().getTime(), vars.get("$sys.timezone"));
return newWhere(pField, start, SqlBuilder.GREATER_OR_EQUAL())
.and(pField, end, SqlBuilder.LESS_OR_EQUAL());
......
......@@ -14,7 +14,7 @@ var newSelectTests = new TestSuite("SqlLib.newSelect", [
{
var actualValue = newSelect("MySuper, Field, String")
pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("sqlStorage").equals("select MySuper, Field, String").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert();
}
),
......@@ -24,7 +24,7 @@ var newSelectTests = new TestSuite("SqlLib.newSelect", [
{
var actualValue = newSelect(["MySuper", "Field", "String"])
pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("sqlStorage").equals("select MySuper, Field, String").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert();
}
),
......@@ -34,7 +34,7 @@ var newSelectTests = new TestSuite("SqlLib.newSelect", [
{
var actualValue = newSelect(new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz"))
pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("sqlStorage").equals("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -44,7 +44,7 @@ var newSelectTests = new TestSuite("SqlLib.newSelect", [
{
var actualValue = newSelect(["MySuper", "Field", "String", new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")])
pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("sqlStorage").equals("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -59,7 +59,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?"
.and("PERSON.LASTNAME = 'Admin'")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert();
}
),
......@@ -71,7 +71,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where("PERSON.FIRSTNAME", "Tim")
.and("PERSON.LASTNAME", "Admin")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -83,7 +83,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where("PERSON.FIRSTNAME", "")
.and("PERSON.LASTNAME", "")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -117,7 +117,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where("PERSON.FIRSTNAME", "$global.TestingVarEmptyString")
.and("PERSON.LASTNAME", "$global.TestingVarEmptyString")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -129,7 +129,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where("PERSON.FIRSTNAME", "Tim", "# <> ?")
.and("PERSON.LASTNAME", "Admin")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -142,7 +142,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.and("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER)
.and("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER)
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(1).equals(SQLTYPES.INTEGER).assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(1).equals(SQLTYPES.INTEGER).assert();
......@@ -161,7 +161,8 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
"exists (select * FROM CONTACT where PERSON_ID = PERSONID)", []
])
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -176,7 +177,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where("PERSON.FIRSTNAME", "Tim")
.and("PERSON.LASTNAME", "Admin"))
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -192,7 +193,8 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.and("PERSON.LASTNAME", "Admin"),
"exists ?") // Note: you can use SqlBuilder.EXISTS() instead of "exists ?"
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -207,7 +209,8 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where("PERSON.FIRSTNAME", "Tim")
.and("PERSON.LASTNAME", "Admin"))
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -219,7 +222,8 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
.where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?")
.and(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -230,7 +234,7 @@ var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [
var actualValue = new SqlBuilder()
.where("PERSON.FIRSTNAME", ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]])
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -245,7 +249,7 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?"
.or("PERSON.LASTNAME = 'Admin'")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert();
}
),
......@@ -257,7 +261,7 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.where("PERSON.FIRSTNAME", "Tim")
.or("PERSON.LASTNAME", "Admin")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -269,7 +273,7 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.where("PERSON.FIRSTNAME", "Tim", "# <> ?")
.or("PERSON.LASTNAME", "Admin")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -282,7 +286,7 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.or("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER)
.or("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER)
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert();
}
),
......@@ -298,7 +302,8 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
"exists (select * FROM CONTACT where PERSON_ID = PERSONID)", []
])
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -311,7 +316,7 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.where("PERSON.FIRSTNAME", "Tim")
.or("PERSON.LASTNAME", "Admin"))
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -327,7 +332,8 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.or("PERSON.LASTNAME", "Admin"),
"exists ?")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -342,7 +348,8 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.where("PERSON.FIRSTNAME", "Tim")
.or("PERSON.LASTNAME", "Admin"))
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -354,7 +361,8 @@ var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [
.where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?")
.or(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -371,7 +379,8 @@ var combinedAndOrTests = new TestSuite("SqlLib.combinedAndOr", [
.where("PERSON.FIRSTNAME", "Peter")
.and("PERSON.LASTNAME", "Müller"))
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert();
}
),
......@@ -387,7 +396,8 @@ var combinedAndOrTests = new TestSuite("SqlLib.combinedAndOr", [
.where("PERSON.FIRSTNAME", "Peter")
.or("PERSON.LASTNAME", "Müller"))
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert();
}
),
......@@ -411,7 +421,8 @@ var combinedAndOrTests = new TestSuite("SqlLib.combinedAndOr", [
.where("PERSON.FIRSTNAME", "Peter")
.or("PERSON.LASTNAME", "Müller")))
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(11).assert();
}
),
......@@ -426,7 +437,7 @@ var ifSetTests = new TestSuite("SqlLib.ifSet", [
.whereIfSet("PERSON.LASTNAME", null)
.andIfSet("PERSON.LASTNAME", undefined)
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert();
}
),
......@@ -439,7 +450,7 @@ var ifSetTests = new TestSuite("SqlLib.ifSet", [
var actualValue = new SqlBuilder()
.whereIfSet("PERSON.FIRSTNAME", "$global.TestingVarNull")
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert();
}
),
......@@ -452,7 +463,7 @@ var ifSetTests = new TestSuite("SqlLib.ifSet", [
.andIfSet(["", []])
.andIfSet(new SqlBuilder())
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert();
}
),
......@@ -464,7 +475,7 @@ var ifSetTests = new TestSuite("SqlLib.ifSet", [
.whereIfSet("PERSON.FIRSTNAME", ["", []])
.andIfSet("PERSON.LASTNAME", new SqlBuilder())
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("", "no sql should be added").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert();
}
),
......@@ -885,7 +896,8 @@ var inStatementTests = new TestSuite("SqlLib.inStatement", [
.where("PERSON.LASTNAME", ["Franz", "Fritz"], SqlBuilder.IN()) // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter
.or("PERSON.LASTNAME", ["Peter", "Mayer"], SqlBuilder.IN());
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert();
}
),
......@@ -896,7 +908,7 @@ var inStatementTests = new TestSuite("SqlLib.inStatement", [
var actualValue = new SqlBuilder()
.where("PERSON.LASTNAME", ["Franz", "Fritz"], "# not in ?"); // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME not in (?, ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals(" ( PERSON.LASTNAME not in (?, ?) ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert();
}
),
......@@ -911,7 +923,8 @@ var inStatementTests = new TestSuite("SqlLib.inStatement", [
.where("PERSON.LASTNAME", "Fritz")
, "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?"
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -923,7 +936,8 @@ var inStatementTests = new TestSuite("SqlLib.inStatement", [
.where("PERSON.FIRSTNAME", ["select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ?", [["Fritz", SQLTYPES.VARCHAR]]]
, "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?"
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -934,7 +948,7 @@ var inStatementTests = new TestSuite("SqlLib.inStatement", [
var actualValue = new SqlBuilder()
.whereIfSet("PERSON.LASTNAME", []);
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage").equals("").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert();
}
),
......@@ -990,7 +1004,8 @@ var selectTests = new TestSuite("SqlLib.select", [
.select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery])
.from("AB_ATTRIBUTE")
pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("sqlStorage")
.equals("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -1006,7 +1021,7 @@ var selectTests = new TestSuite("SqlLib.select", [
.select("*")
.from(subQuery)
pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)").assert();
pTester.expectThat(actualValue).elementAt("_from").elementAt("sqlStorage").equals("(select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)").assert();
pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -1026,7 +1041,7 @@ var joinTests = new TestSuite("SqlLib.join", [
.from("PERSON")
.join("ORGANISATION", subQuery)
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join ORGANISATION on ORGANISATION.NAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("sqlStorage").equals("join ORGANISATION on ORGANISATION.NAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -1043,7 +1058,8 @@ var joinTests = new TestSuite("SqlLib.join", [
.from("PERSON")
.join(subQuery, "orgname.NAME = TABLE2.NAME", "orgname")
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("sqlStorage")
.equals("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -1056,7 +1072,7 @@ var joinTests = new TestSuite("SqlLib.join", [
.from("PERSON")
.join("TABLE1 on TABLE1.NAME = TABLE2.NAME")
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join TABLE1 on TABLE1.NAME = TABLE2.NAME").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("sqlStorage").equals("join TABLE1 on TABLE1.NAME = TABLE2.NAME").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(0).assert();
}
),
......@@ -1076,7 +1092,8 @@ var subqueryAsFieldTests = new TestSuite("SqlLib.subqueryAsField", [
.and("PERSON.FIRSTNAME", "val3");
pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("sqlStorage")
.equals(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(0).equals("val1").assert();
pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(0).equals("val2").assert();
......@@ -1185,7 +1202,8 @@ var subqueryAliasTests = new TestSuite("SqlLib.subqueryAlias", [
.select([subQuery, "FIRSTNAME"])
.from("PERSON")
pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("sqlStorage")
.equals("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME").assert();
pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -1201,7 +1219,7 @@ var subqueryAliasTests = new TestSuite("SqlLib.subqueryAlias", [
var actualValue = new SqlBuilder()
.from(subQuery)
pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias").assert();
pTester.expectThat(actualValue).elementAt("_from").elementAt("sqlStorage").equals("(select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias").assert();
pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -1217,7 +1235,7 @@ var subqueryAliasTests = new TestSuite("SqlLib.subqueryAlias", [
var actualValue = new SqlBuilder()
.from(subQuery, "overwriteAlias")
pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias").assert();
pTester.expectThat(actualValue).elementAt("_from").elementAt("sqlStorage").equals("(select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias").assert();
pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert();
}
),
......@@ -1235,15 +1253,49 @@ var subqueryAliasTests = new TestSuite("SqlLib.subqueryAlias", [
.join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID")
.join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID", "overwriteAlias")
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("sqlStorage")
.equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues")
.hasLength(1).assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("sqlStorage")
.equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert();
pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("preparedValues").hasLength(1).assert();
}
),
)
]);
var setTableName = new TestSuite("SqlLib.setTableName", [
new Test("tablename should be set by using .where",
function (pTester)
{
var sqlQuery = newWhere("ORGANISATION.NAME", "Adito");
var actualValue = sqlQuery._tableName;
pTester.expectThat(actualValue).equals("ORGANISATION").assert();
}
)
]);
var conditionIn = new TestSuite("SqlLib.conditionIn", [
new Test("in condition shouldn't break with >1000 ids",
function (pTester)
{
var ids = new Array(1042);
for (let i = 0; i < ids.length; i++)
{
ids[i] = i.toString();
}
var sqlQuery = newSelect("CONTACT.CONTACTID")
.from("CONTACT")
.where("CONTACT.CONTACTID", ids, SqlBuilder.IN());
pTester.expectThat(function ()
{
sqlQuery.table();
}).not().throwsException();
}
)
]);
var tester = new Tester("Test SqlBuilder");
tester.test(newSelectTests);
......@@ -1260,6 +1312,8 @@ tester.test(joinTests);
tester.test(subqueryAsFieldTests);
tester.test(conditionFormatTests);
tester.test(subqueryAliasTests);
tester.test(setTableName);
tester.test(conditionIn);
tester.summary();
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -1138,6 +1138,33 @@ ArrayUtils.concatNonEmptyElements = function(pElement1, pElementN)
return res;
};
/**
* Splits the elements of an array into chunks with a defined length
*
* @param {Array} pArray array to split
* @param {Number} pChunkSize desired length of the sub-arrays
* @return {Array} array of chunked arrays
* @example
*
* var arr = [1,2,3,4,5,6,7,8,9,10,11];
* var chunks = ArrayUtils.chunk(arr, 4);
* logging.log(JSON.stringify(chunks)); //result: [[1,2,3,4],[5,6,7,8],[9,10,11]]
*/
ArrayUtils.chunk = function (pArray, pChunkSize)
{
var chunkSize = Number(pChunkSize);
if (chunkSize <= 0)
{
return [];
}
var chunked = [];
for (let i = 0; i < pArray.length;)
{
chunked.push(pArray.slice(i, i += chunkSize));
}
return chunked;
}
/**
* Class containing utility functions for use with JSON
* @class
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment