HasManyThroughTest.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. include 'helpers/config.php';
  3. include 'helpers/foo.php';
  4. use foo\bar\biz\User;
  5. use foo\bar\biz\Newsletter;
  6. class HasManyThroughTest extends DatabaseTest
  7. {
  8. public function test_gh101_has_many_through()
  9. {
  10. $user = User::find(1);
  11. $newsletter = Newsletter::find(1);
  12. $this->assert_equals($newsletter->id, $user->newsletters[0]->id);
  13. $this->assert_equals(
  14. 'foo\bar\biz\Newsletter',
  15. get_class($user->newsletters[0])
  16. );
  17. $this->assert_equals($user->id, $newsletter->users[0]->id);
  18. $this->assert_equals(
  19. 'foo\bar\biz\User',
  20. get_class($newsletter->users[0])
  21. );
  22. }
  23. public function test_gh101_has_many_through_include()
  24. {
  25. $user = User::find(1, array(
  26. 'include' => array(
  27. 'user_newsletters'
  28. )
  29. ));
  30. $this->assert_equals(1, $user->id);
  31. $this->assert_equals(1, $user->user_newsletters[0]->id);
  32. }
  33. public function test_gh107_has_many_through_include_eager()
  34. {
  35. $venue = Venue::find(1, array('include' => array('events')));
  36. $this->assert_equals(1, $venue->events[0]->id);
  37. $venue = Venue::find(1, array('include' => array('hosts')));
  38. $this->assert_equals(1, $venue->hosts[0]->id);
  39. }
  40. public function test_gh107_has_many_though_include_eager_with_namespace()
  41. {
  42. $user = User::find(1, array(
  43. 'include' => array(
  44. 'newsletters'
  45. )
  46. ));
  47. $this->assert_equals(1, $user->id);
  48. $this->assert_equals(1, $user->newsletters[0]->id);
  49. }
  50. }
  51. # vim: noet ts=4 nobinary
  52. ?>