/** * Get user's VCS accounts * * @return ActiveQuery */ public function getAccounts() { return $this->hasMany(UserAccount::className(), ['user_id' => 'id']); }
/** * Test user accounts relations * * @depends testValidationAndSave * * @return User */ public function testUserAccounts() { /* @var $user User */ $user = $this->getModule('Yii2')->grabFixture('users', 'activeUser1'); $model = new UserAccount(); $attributes = ['user_id' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => 0, 'isValid' => false], ['value' => -100, 'isValid' => false], ['value' => $user->id, 'isValid' => true]], 'username' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => 0, 'isValid' => false], ['value' => str_repeat('A', 101), 'isValid' => false], ['value' => str_repeat('A', 100), 'isValid' => true]], 'type' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => 'wrong type', 'isValid' => false], ['value' => UserAccount::TYPE_HG, 'isValid' => true], ['value' => UserAccount::TYPE_SVN, 'isValid' => true], ['value' => UserAccount::TYPE_GIT, 'isValid' => true]]]; $this->getModule('\\Helper\\Unit')->validateModelAttributes($model, $attributes, $this); $this->assertTrue($model->save()); // check unique record with type and username columns $newModel = new UserAccount(); $newModel->setAttributes($model->getAttributes()); $this->assertFalse($newModel->validate()); $this->assertArrayHasKey('type', $newModel->getErrors()); $this->assertArrayHasKey('username', $newModel->getErrors()); $newModel->type = UserAccount::TYPE_HG; $this->assertTrue($newModel->validate()); $this->assertTrue($newModel->save()); $this->assertContainsOnly(UserAccount::className(), $user->accounts); $this->assertCount(2, $user->accounts); $this->assertInstanceOf(User::className(), $model->user); $this->assertEquals($user->id, $model->user->id); $this->assertInstanceOf(User::className(), $newModel->user); $this->assertEquals($user->id, $newModel->user->id); return $user; }