1*8fed17f3SAndreas Gohr<?php 2*8fed17f3SAndreas Gohr 3*8fed17f3SAndreas Gohrnamespace dokuwiki\plugin\struct\test; 4*8fed17f3SAndreas Gohr 5*8fed17f3SAndreas Gohruse dokuwiki\plugin\struct\meta\QueryBuilder; 6*8fed17f3SAndreas Gohruse dokuwiki\plugin\struct\meta\QueryBuilderWhere; 7*8fed17f3SAndreas Gohr 8*8fed17f3SAndreas Gohr/** 9*8fed17f3SAndreas Gohr * @group plugin_struct 10*8fed17f3SAndreas Gohr * @group plugins 11*8fed17f3SAndreas Gohr */ 12*8fed17f3SAndreas Gohrclass QueryBuilderWhereTest extends StructTest 13*8fed17f3SAndreas Gohr{ 14*8fed17f3SAndreas Gohr 15*8fed17f3SAndreas Gohr public function test_sql() 16*8fed17f3SAndreas Gohr { 17*8fed17f3SAndreas Gohr $QB = new QueryBuilder(); 18*8fed17f3SAndreas Gohr $where = new QueryBuilderWhere($QB); 19*8fed17f3SAndreas Gohr 20*8fed17f3SAndreas Gohr $where->whereAnd('foo = foo'); 21*8fed17f3SAndreas Gohr $this->assertEquals( 22*8fed17f3SAndreas Gohr $this->cleanWS('(foo = foo)'), 23*8fed17f3SAndreas Gohr $this->cleanWS($where->toSQL()) 24*8fed17f3SAndreas Gohr ); 25*8fed17f3SAndreas Gohr 26*8fed17f3SAndreas Gohr $where->whereAnd('bar = bar'); 27*8fed17f3SAndreas Gohr $this->assertEquals( 28*8fed17f3SAndreas Gohr $this->cleanWS('(foo = foo AND bar = bar)'), 29*8fed17f3SAndreas Gohr $this->cleanWS($where->toSQL()) 30*8fed17f3SAndreas Gohr ); 31*8fed17f3SAndreas Gohr 32*8fed17f3SAndreas Gohr $sub = $where->whereSubAnd(); 33*8fed17f3SAndreas Gohr $this->assertEquals( 34*8fed17f3SAndreas Gohr $this->cleanWS('(foo = foo AND bar = bar)'), 35*8fed17f3SAndreas Gohr $this->cleanWS($where->toSQL()) 36*8fed17f3SAndreas Gohr ); 37*8fed17f3SAndreas Gohr 38*8fed17f3SAndreas Gohr $sub->whereAnd('zab = zab'); 39*8fed17f3SAndreas Gohr $this->assertEquals( 40*8fed17f3SAndreas Gohr $this->cleanWS('(foo = foo AND bar = bar AND (zab = zab))'), 41*8fed17f3SAndreas Gohr $this->cleanWS($where->toSQL()) 42*8fed17f3SAndreas Gohr ); 43*8fed17f3SAndreas Gohr 44*8fed17f3SAndreas Gohr $sub->whereOr('fab = fab'); 45*8fed17f3SAndreas Gohr $this->assertEquals( 46*8fed17f3SAndreas Gohr $this->cleanWS('(foo = foo AND bar = bar AND (zab = zab OR fab = fab))'), 47*8fed17f3SAndreas Gohr $this->cleanWS($where->toSQL()) 48*8fed17f3SAndreas Gohr ); 49*8fed17f3SAndreas Gohr } 50*8fed17f3SAndreas Gohr 51*8fed17f3SAndreas Gohr public function test_orsql() 52*8fed17f3SAndreas Gohr { 53*8fed17f3SAndreas Gohr $QB = new QueryBuilder(); 54*8fed17f3SAndreas Gohr $where = new QueryBuilderWhere($QB); 55*8fed17f3SAndreas Gohr 56*8fed17f3SAndreas Gohr $where->whereAnd("foo = ''"); 57*8fed17f3SAndreas Gohr $this->assertEquals( 58*8fed17f3SAndreas Gohr $this->cleanWS("(foo = '')"), 59*8fed17f3SAndreas Gohr $this->cleanWS($where->toSQL()) 60*8fed17f3SAndreas Gohr ); 61*8fed17f3SAndreas Gohr 62*8fed17f3SAndreas Gohr $sub = $where->whereSubOr(); 63*8fed17f3SAndreas Gohr $sub->whereAnd('bar = bar'); 64*8fed17f3SAndreas Gohr $sub->whereAnd('baz = baz'); 65*8fed17f3SAndreas Gohr $this->assertEquals( 66*8fed17f3SAndreas Gohr $this->cleanWS("(foo = '' OR (bar = bar AND baz = baz))"), 67*8fed17f3SAndreas Gohr $this->cleanWS($where->toSQL()) 68*8fed17f3SAndreas Gohr ); 69*8fed17f3SAndreas Gohr } 70*8fed17f3SAndreas Gohr} 71