1<?php
2
3require_once('simpletest/unit_tester.php');
4require_once('simpletest/reporter.php');
5
6require_once('../include/LogObject.class.php');
7require_once('../include/QueryLogObject.class.php');
8
9class TestQueryLogObject extends UnitTestCase {
10
11	function testInstanciation() {
12		define('TEST_CONNECTION_ID', 4356);
13		define('TEST_USER', 'test user');
14		define('TEST_DB', 'test db');
15		define('TEST_TEXT', 'test text');
16
17		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, TEST_TEXT);
18		$this->assertEqual(EVENT_QUERY, $query->getEventType());
19		$this->assertFalse($query->isIgnored());
20
21		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, TEST_TEXT, true);
22		$this->assertTrue($query->isIgnored());
23		$this->assertEqual(TEST_TEXT, $query->getText());
24
25		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, TEST_TEXT, false);
26		$this->assertFalse($query->isIgnored());
27	}
28
29	function testSettersAndGetters() {
30		define('TEST_TEXT', 'test text');
31		define('TEST_DB', 'test_db');
32		define('TEST_USER', 'test_user');
33		define('TEST_DURATION', 100);
34
35		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, TEST_TEXT);
36
37		$query->setDuration(TEST_DURATION);
38		$this->assertEqual(TEST_DURATION, $query->getDuration());
39	}
40
41	function testTypeDetection() {
42		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'select * from mytable');
43		$this->assertTrue($query->isSelect());
44		$this->assertFalse($query->isDelete());
45		$this->assertFalse($query->isInsert());
46		$this->assertFalse($query->isUpdate());
47
48		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'SELECT * FROM mytable');
49		$this->assertTrue($query->isSelect());
50		$this->assertFalse($query->isDelete());
51		$this->assertFalse($query->isInsert());
52		$this->assertFalse($query->isUpdate());
53
54		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'delete from mytable');
55		$this->assertFalse($query->isSelect());
56		$this->assertTrue($query->isDelete());
57		$this->assertFalse($query->isInsert());
58		$this->assertFalse($query->isUpdate());
59
60		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'DELETE FROM mytable');
61		$this->assertFalse($query->isSelect());
62		$this->assertTrue($query->isDelete());
63		$this->assertFalse($query->isInsert());
64		$this->assertFalse($query->isUpdate());
65
66		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'insert into mytable values(4)');
67		$this->assertFalse($query->isSelect());
68		$this->assertFalse($query->isDelete());
69		$this->assertTrue($query->isInsert());
70		$this->assertFalse($query->isUpdate());
71
72		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'INSERT INTO mytable VALUES(4)');
73		$this->assertFalse($query->isSelect());
74		$this->assertFalse($query->isDelete());
75		$this->assertTrue($query->isInsert());
76		$this->assertFalse($query->isUpdate());
77
78		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'update mytable set field=4');
79		$this->assertFalse($query->isSelect());
80		$this->assertFalse($query->isDelete());
81		$this->assertFalse($query->isInsert());
82		$this->assertTrue($query->isUpdate());
83
84		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, 'UPDATE mytable SET field=4');
85		$this->assertFalse($query->isSelect());
86		$this->assertFalse($query->isDelete());
87		$this->assertFalse($query->isInsert());
88		$this->assertTrue($query->isUpdate());
89	}
90
91	function testSubQuery() {
92		define('TEST_TEXT1', 'test text 1');
93		define('TEST_TEXT2', 'test text 2');
94		define('TEST_TEXT3', 'test text 3');
95		define('TEST_TEXT4', 'test text 4');
96
97		$query = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, TEST_TEXT1);
98
99		$query2 = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, TEST_TEXT2);
100		$query3 = new QueryLogObject(TEST_CONNECTION_ID, TEST_USER, TEST_DB, TEST_TEXT3);
101
102		$query->addSubQuery($query2);
103		$subQueries = $query->getSubQueries();
104
105		$this->assertEqual(1, count($subQueries));
106		$this->assertReference($query2, $subQueries[0]);
107
108		$query->addSubQuery($query3);
109		$subQueries = $query->getSubQueries();
110
111		$this->assertEqual(2, count($subQueries));
112		$this->assertReference($query2, $subQueries[0]);
113		$this->assertReference($query3, $subQueries[1]);
114	}
115}
116
117?>