PageRenderTime 49ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/web_app/test/app/test/module/component/charcoal/db/QueryTargetTestTask.class.php

https://bitbucket.org/stk2k/charcoalphp2.1
PHP | 218 lines | 125 code | 63 blank | 30 comment | 0 complexity | 5fb4d2b939221e8b310e143d7c212f74 MD5 | raw file
  1. <?php
  2. /**
  3. * タスク
  4. *
  5. * PHP version 5
  6. *
  7. * @package renderers
  8. * @author stk2k <stk2k@sazysoft.com>
  9. * @copyright 2008 stk2k, sazysoft
  10. */
  11. class QueryTargetTestTask extends Charcoal_TestTask
  12. {
  13. private $default_ds;
  14. private $another_ds;
  15. /**
  16. * check if action will be processed
  17. */
  18. public function isValidAction( $action )
  19. {
  20. switch( $action ){
  21. case "qt_table_alias":
  22. case "qt_inner_join":
  23. case "qt_inner_join_alias":
  24. case "qt_left_join":
  25. case "qt_left_join_alias":
  26. case "qt_right_join":
  27. case "qt_right_join_alias":
  28. case "qt_complex_join":
  29. case "qt_complex_join_alias":
  30. return TRUE;
  31. }
  32. return FALSE;
  33. }
  34. /**
  35. * セットアップ
  36. */
  37. public function setUp( $action, $context )
  38. {
  39. }
  40. /**
  41. * クリーンアップ
  42. */
  43. public function cleanUp( $action, $context )
  44. {
  45. }
  46. /**
  47. * テスト
  48. */
  49. public function test( $action, $context )
  50. {
  51. $action = us($action);
  52. switch( $action ){
  53. case "qt_table_alias":
  54. $target = new Charcoal_QueryTarget( s("model_a as a") );
  55. //echo "qtlist:" . print_r($qtlist,true) . eol();
  56. $this->assertEquals( 'model_a', $target->getModelName() );
  57. $this->assertEquals( 'a', $target->getAlias() );
  58. return TRUE;
  59. case "qt_inner_join":
  60. $target = new Charcoal_QueryTarget( s("model_a + model_b") );
  61. //echo "qtlist:" . print_r($qtlist,true) . eol();
  62. $this->assertEquals( 'model_a', $target->getModelName() );
  63. $this->assertEquals( '', $target->getAlias() );
  64. $joins = $target->getJoins();
  65. $join_head = array_shift($joins);
  66. $this->assertEquals( Charcoal_EnumSQLJoinType::INNER_JOIN, $join_head->getJoinType() );
  67. $this->assertEquals( 'model_b', $join_head->getModelName() );
  68. $this->assertEquals( '', $join_head->getAlias() );
  69. return TRUE;
  70. case "qt_inner_join_alias":
  71. $target = new Charcoal_QueryTarget( s("model_a as a + model_b as b") );
  72. //echo "qtlist:" . print_r($qtlist,true) . eol();
  73. $this->assertEquals( 'model_a', $target->getModelName() );
  74. $this->assertEquals( 'a', $target->getAlias() );
  75. $joins = $target->getJoins();
  76. $join_head = array_shift($joins);
  77. $this->assertEquals( Charcoal_EnumSQLJoinType::INNER_JOIN, $join_head->getJoinType() );
  78. $this->assertEquals( 'model_b', $join_head->getModelName() );
  79. $this->assertEquals( 'b', $join_head->getAlias() );
  80. return TRUE;
  81. case "qt_left_join":
  82. $target = new Charcoal_QueryTarget( s("model_a (+ model_b") );
  83. //echo "qtlist:" . print_r($qtlist,true) . eol();
  84. $this->assertEquals( 'model_a', $target->getModelName() );
  85. $this->assertEquals( '', $target->getAlias() );
  86. $joins = $target->getJoins();
  87. $join_head = array_shift($joins);
  88. $this->assertEquals( Charcoal_EnumSQLJoinType::LEFT_JOIN, $join_head->getJoinType() );
  89. $this->assertEquals( 'model_b', $join_head->getModelName() );
  90. $this->assertEquals( '', $join_head->getAlias() );
  91. return TRUE;
  92. case "qt_left_join_alias":
  93. $target = new Charcoal_QueryTarget( s("model_a as a (+ model_b as b") );
  94. //echo "qtlist:" . print_r($qtlist,true) . eol();
  95. $this->assertEquals( 'model_a', $target->getModelName() );
  96. $this->assertEquals( 'a', $target->getAlias() );
  97. $joins = $target->getJoins();
  98. $join_head = array_shift($joins);
  99. $this->assertEquals( Charcoal_EnumSQLJoinType::LEFT_JOIN, $join_head->getJoinType() );
  100. $this->assertEquals( 'model_b', $join_head->getModelName() );
  101. $this->assertEquals( 'b', $join_head->getAlias() );
  102. return TRUE;
  103. case "qt_right_join":
  104. $target = new Charcoal_QueryTarget( s("model_a +) model_b") );
  105. //echo "qtlist:" . print_r($qtlist,true) . eol();
  106. $this->assertEquals( 'model_a', $target->getModelName() );
  107. $this->assertEquals( '', $target->getAlias() );
  108. $joins = $target->getJoins();
  109. $join_head = array_shift($joins);
  110. $this->assertEquals( Charcoal_EnumSQLJoinType::RIGHT_JOIN, $join_head->getJoinType() );
  111. $this->assertEquals( 'model_b', $join_head->getModelName() );
  112. $this->assertEquals( '', $join_head->getAlias() );
  113. return TRUE;
  114. case "qt_right_join_alias":
  115. $target = new Charcoal_QueryTarget( s("model_a as a +) model_b as b") );
  116. //echo "qtlist:" . print_r($qtlist,true) . eol();
  117. $this->assertEquals( 'model_a', $target->getModelName() );
  118. $this->assertEquals( 'a', $target->getAlias() );
  119. $joins = $target->getJoins();
  120. $join_head = array_shift($joins);
  121. $this->assertEquals( Charcoal_EnumSQLJoinType::RIGHT_JOIN, $join_head->getJoinType() );
  122. $this->assertEquals( 'model_b', $join_head->getModelName() );
  123. $this->assertEquals( 'b', $join_head->getAlias() );
  124. return TRUE;
  125. case "qt_complex_join":
  126. $target = new Charcoal_QueryTarget( s("model_a + model_b + model_c") );
  127. //echo "qtlist:" . print_r($qtlist,true) . eol();
  128. $this->assertEquals( 'model_a', $target->getModelName() );
  129. $this->assertEquals( '', $target->getAlias() );
  130. $joins = $target->getJoins();
  131. $this->assertEquals( Charcoal_EnumSQLJoinType::INNER_JOIN, $joins[0]->getJoinType() );
  132. $this->assertEquals( 'model_b', $joins[0]->getModelName() );
  133. $this->assertEquals( '', $joins[0]->getAlias() );
  134. $this->assertEquals( Charcoal_EnumSQLJoinType::INNER_JOIN, $joins[1]->getJoinType() );
  135. $this->assertEquals( 'model_c', $joins[1]->getModelName() );
  136. $this->assertEquals( '', $joins[1]->getAlias() );
  137. return TRUE;
  138. case "qt_complex_join_alias":
  139. $target = new Charcoal_QueryTarget( s("model_a as a (+ model_b as b +) model_c as c") );
  140. //echo "qtlist:" . print_r($qtlist,true) . eol();
  141. $this->assertEquals( 'model_a', $target->getModelName() );
  142. $this->assertEquals( 'a', $target->getAlias() );
  143. $joins = $target->getJoins();
  144. $this->assertEquals( Charcoal_EnumSQLJoinType::LEFT_JOIN, $joins[0]->getJoinType() );
  145. $this->assertEquals( 'model_b', $joins[0]->getModelName() );
  146. $this->assertEquals( 'b', $joins[0]->getAlias() );
  147. $this->assertEquals( Charcoal_EnumSQLJoinType::RIGHT_JOIN, $joins[1]->getJoinType() );
  148. $this->assertEquals( 'model_c', $joins[1]->getModelName() );
  149. $this->assertEquals( 'c', $joins[1]->getAlias() );
  150. return TRUE;
  151. }
  152. return FALSE;
  153. }
  154. }
  155. return __FILE__;