public function setUp()
 {
     parent::setUp();
     $group = new Group();
     $group->name = 'Administrators';
     $group->save();
     $group_prog = new Group();
     $group_prog->name = 'Programmers';
     $group_prog->save();
     $anton = new User();
     $anton->username = '******';
     $anton->password = '******';
     $anton->save();
     $group_prog->users->link($anton);
     $anton_home = new Customer();
     $anton_home->address = "Anton home";
     $anton_home->user = $anton;
     $anton_home->save();
     $anton_work = new Customer();
     $anton_work->address = "Anton work";
     $anton_work->user = $anton;
     $anton_work->save();
     $max = new User();
     $max->username = '******';
     $max->password = '******';
     $max->save();
     $group->users->link($max);
     $max_home = new Customer();
     $max_home->address = "Max home";
     $max_home->user = $max;
     $max_home->save();
 }
예제 #2
0
 public function testSubqueryIn()
 {
     $qs = Group::objects()->filter(['id' => 1]);
     $users = User::objects()->filter(['groups__pk__in' => $qs->select('id')])->all();
     $this->assertEquals(count($users), 1);
     $this->assertEquals($users[0]->username, 'Max');
 }
 public function testVia()
 {
     $group = new Group();
     $group->name = 'Administrators';
     $this->assertNull($group->pk);
     $this->assertInstanceOf('\\Mindy\\Orm\\ManyToManyManager', $group->users);
     $this->assertEquals(0, $group->users->count());
     $this->assertEquals([], $group->users->all());
     $this->assertTrue($group->save());
     $this->assertEquals(1, $group->pk);
     $user = new User();
     $user->username = '******';
     $user->password = '******';
     $this->assertTrue($user->save());
     $this->assertEquals(0, count($group->users->all()));
     $group->users->link($user);
     $this->assertEquals(1, count($group->users->all()));
     $new = Group::objects()->get(['id' => 1]);
     $this->assertEquals(1, count($new->users->all()));
     $memberships = Membership::objects()->filter(['group_id' => 1, 'user_id' => 1])->all();
     $this->assertEquals(1, count($memberships));
 }
예제 #4
0
 public function testValuesList()
 {
     $group = new Group();
     $group->name = 'Administrators';
     $group->save();
     $groupProg = new Group();
     $groupProg->name = 'Programmers';
     $groupProg->save();
     $anton = new User();
     $anton->username = '******';
     $anton->password = '******';
     $anton->save();
     $groupProg->users->link($anton);
     $anton_home = new Customer();
     $anton_home->address = "Anton home";
     $anton_home->user = $anton;
     $anton_home->save();
     $anton_work = new Customer();
     $anton_work->address = "Anton work";
     $anton_work->user = $anton;
     $anton_work->save();
     $max = new User();
     $max->username = '******';
     $max->password = '******';
     $max->save();
     $group->users->link($max);
     $max_home = new Customer();
     $max_home->address = "Max home";
     $max_home->user = $max;
     $max_home->save();
     $values = Customer::objects()->valuesList(['address', 'user__username']);
     $this->assertEquals([['address' => 'Anton home', 'user__username' => 'Anton'], ['address' => "Anton work", 'user__username' => 'Anton'], ['address' => "Max home", 'user__username' => 'Max']], $values);
     $this->assertEquals([['address' => 'Anton home', 'user__username' => 'Anton'], ['address' => "Anton work", 'user__username' => 'Anton'], ['address' => "Max home", 'user__username' => 'Max']], Customer::objects()->valuesList(['address', 'user__username']));
     $this->assertEquals(['Anton', 'Anton', 'Max'], Customer::objects()->valuesList(['user__username'], true));
 }
예제 #5
0
 public function testExactQs()
 {
     $group = Group::objects()->filter(['pk' => 1])->get();
     $this->assertEquals(1, Group::objects()->count());
     $this->assertEquals(2, $group->users->count());
     $user = User::objects()->filter(['pk' => 1])->get();
     $customer = Customer::objects()->filter(['user' => $user])->get();
     $this->assertEquals(1, $customer->pk);
 }
예제 #6
0
 public static function getFields()
 {
     return ['username' => ['class' => CharField::className(), 'validators' => [new MinLengthValidator(3), new MaxLengthValidator(20)]], 'password' => ['class' => PasswordField::className(), 'null' => true], 'groups' => ['class' => ManyToManyField::className(), 'modelClass' => Group::className(), 'through' => Membership::className()], 'addresses' => ['class' => HasManyField::className(), 'modelClass' => Customer::className(), 'relatedName' => 'user', 'editable' => false]];
 }
예제 #7
0
 public static function getFields()
 {
     return ['group' => ['class' => ForeignField::className(), 'modelClass' => Group::className()], 'user' => ['class' => ForeignField::className(), 'modelClass' => User::className()]];
 }