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(); }
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)); }
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)); }
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); }
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]]; }
public static function getFields() { return ['group' => ['class' => ForeignField::className(), 'modelClass' => Group::className()], 'user' => ['class' => ForeignField::className(), 'modelClass' => User::className()]]; }