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