QueryTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. namespace Medoo\Tests;
  3. use Medoo\Medoo;
  4. /**
  5. * @coversDefaultClass \Medoo\Medoo
  6. */
  7. class QueryTest extends MedooTestCase
  8. {
  9. /**
  10. * @covers ::query()
  11. * @covers ::isRaw()
  12. * @covers ::buildRaw()
  13. * @dataProvider typesProvider
  14. */
  15. public function testQuery($type)
  16. {
  17. $this->setType($type);
  18. $this->database->query("SELECT <account.email>,<account.nickname> FROM <account> WHERE <id> != 100");
  19. $this->assertQuery(
  20. <<<EOD
  21. SELECT "account"."email","account"."nickname"
  22. FROM "account"
  23. WHERE "id" != 100
  24. EOD,
  25. $this->database->queryString
  26. );
  27. }
  28. /**
  29. * @covers ::query()
  30. * @covers ::isRaw()
  31. * @covers ::buildRaw()
  32. */
  33. public function testQueryWithPrefix()
  34. {
  35. $database = new Medoo([
  36. 'testMode' => true,
  37. 'prefix' => 'PREFIX_'
  38. ]);
  39. $database->query("SELECT <account.name> FROM <account>");
  40. $this->assertQuery(
  41. <<<EOD
  42. SELECT "PREFIX_account"."name"
  43. FROM "PREFIX_account"
  44. EOD,
  45. $database->queryString
  46. );
  47. }
  48. /**
  49. * @covers ::query()
  50. * @covers ::isRaw()
  51. * @covers ::buildRaw()
  52. */
  53. public function testQueryTableWithPrefix()
  54. {
  55. $database = new Medoo([
  56. 'testMode' => true,
  57. 'prefix' => 'PREFIX_'
  58. ]);
  59. $database->query("DROP TABLE IF EXISTS <account>");
  60. $this->assertQuery(
  61. <<<EOD
  62. DROP TABLE IF EXISTS "PREFIX_account"
  63. EOD,
  64. $database->queryString
  65. );
  66. }
  67. /**
  68. * @covers ::query()
  69. * @covers ::isRaw()
  70. * @covers ::buildRaw()
  71. */
  72. public function testQueryShowTableWithPrefix()
  73. {
  74. $database = new Medoo([
  75. 'testMode' => true,
  76. 'prefix' => 'PREFIX_'
  77. ]);
  78. $database->query("SHOW TABLES LIKE <account>");
  79. $this->assertQuery(
  80. <<<EOD
  81. SHOW TABLES LIKE "PREFIX_account"
  82. EOD,
  83. $database->queryString
  84. );
  85. }
  86. /**
  87. * @covers ::query()
  88. * @covers ::isRaw()
  89. * @covers ::buildRaw()
  90. * @dataProvider typesProvider
  91. */
  92. public function testPreparedStatementQuery($type)
  93. {
  94. $this->setType($type);
  95. $this->database->query(
  96. "SELECT * FROM <account> WHERE <user_name> = :user_name AND <age> = :age",
  97. [
  98. ":user_name" => "John Smite",
  99. ":age" => 20
  100. ]
  101. );
  102. $this->assertQuery(
  103. <<<EOD
  104. SELECT *
  105. FROM "account"
  106. WHERE "user_name" = 'John Smite' AND "age" = 20
  107. EOD,
  108. $this->database->queryString
  109. );
  110. }
  111. /**
  112. * @covers ::query()
  113. * @covers ::isRaw()
  114. * @covers ::buildRaw()
  115. */
  116. public function testQueryEscape()
  117. {
  118. $database = new Medoo([
  119. 'testMode' => true,
  120. 'prefix' => 'PREFIX_'
  121. ]);
  122. $database->query("SELECT * FROM <account> WHERE <name> = '<John>'");
  123. $this->assertQuery(
  124. <<<EOD
  125. SELECT *
  126. FROM "PREFIX_account"
  127. WHERE "name" = '<John>'
  128. EOD,
  129. $database->queryString
  130. );
  131. }
  132. }