xref: /plugin/struct/_test/QueryBuilderWhereTest.php (revision 8fed17f342cc190557a6ce94d1787f9e2f63cb6c)
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