/** * @inheritdoc */ public function init() { if (!$this->project instanceof Project) { throw new InvalidParamException('Project variable must be an instance of ' . Project::className()); } if (!$this->repository instanceof BaseRepository) { throw new InvalidParamException('Repository variable must be an instance of ' . BaseRepository::className()); } if (!$this->commit instanceof BaseCommit) { throw new InvalidParamException('Commit variable must be an instance of ' . BaseCommit::className()); } if (!$this->file instanceof File) { throw new InvalidParamException('File variable must be an instance of ' . File::className()); } $this->id = $this->commit->getId() . md5($this->file->getPathname()); }
/** * Test model validation and save */ public function testValidationSaveAndDelete() { $model = new ContributionReview(); $attributes = ['commit_id' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => ['wrong string'], 'isValid' => false], ['value' => str_repeat('A', 41), 'isValid' => false], ['value' => 1, 'isValid' => false], ['value' => md5(uniqid()), 'isValid' => true]], 'project_id' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => ['wrong string'], 'isValid' => false], ['value' => 'string', 'isValid' => false], ['value' => $this->getModule('Yii2')->grabFixture('projects', 'gitProject')->id, 'isValid' => true]], 'date' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => ['wrong string'], 'isValid' => false], ['value' => 'string', 'isValid' => false], ['value' => 1, 'isValid' => false], ['value' => date('Y-m-d H:i:s'), 'isValid' => true]], 'contributor_id' => [['value' => null, 'isValid' => true], ['value' => [], 'isValid' => true], ['value' => '', 'isValid' => true], ['value' => 'wrong integer', 'isValid' => false], ['value' => ['wrong integer'], 'isValid' => false], ['value' => $this->getModule('Yii2')->grabFixture('users', 'activeUser1')->id, 'isValid' => true]], 'reviewer_id' => [['value' => null, 'isValid' => true], ['value' => [], 'isValid' => true], ['value' => '', 'isValid' => true], ['value' => 'wrong integer', 'isValid' => false], ['value' => ['wrong integer'], 'isValid' => false], ['value' => $this->getModule('Yii2')->grabFixture('users', 'activeUser2')->id, 'isValid' => true]], 'message' => [['value' => null, 'isValid' => true], ['value' => 0, 'isValid' => false], ['value' => [], 'isValid' => true], ['value' => ['wrong string'], 'isValid' => false], ['value' => 'test message', 'isValid' => true]], 'contributor_email' => [['value' => null, 'isValid' => true], ['value' => [], 'isValid' => true], ['value' => 0, 'isValid' => false], ['value' => ['wrong string'], 'isValid' => false], ['value' => 'test contributor', 'isValid' => true]], 'contributor_name' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => 0, 'isValid' => false], ['value' => '', 'isValid' => false], ['value' => ['wrong string'], 'isValid' => false], ['value' => 'test contributor', 'isValid' => true]], 'repo_type' => [['value' => null, 'isValid' => false], ['value' => [], 'isValid' => false], ['value' => 0, 'isValid' => false], ['value' => '', 'isValid' => false], ['value' => ['wrong string'], 'isValid' => false], ['value' => 'wrong repo', 'isValid' => false], ['value' => 'svn', 'isValid' => true], ['value' => 'git', 'isValid' => true], ['value' => 'hg', 'isValid' => true]], 'reviewed' => [['value' => null, 'isValid' => true], ['value' => [], 'isValid' => true], ['value' => ['wrong string'], 'isValid' => false], ['value' => 'string', 'isValid' => false], ['value' => 1, 'isValid' => false], ['value' => date('Y-m-d H:i:s'), 'isValid' => true]]]; $this->getModule('\\Helper\\Unit')->validateModelAttributes($model, $attributes, $this); $this->assertTrue($model->validate()); $this->assertTrue($model->save()); $this->assertInstanceOf(Project::className(), $model->project); $this->assertEquals($model->project->id, $this->getModule('Yii2')->grabFixture('projects', 'gitProject')->id); $this->assertInstanceOf(User::className(), $model->contributor); $this->assertEquals($model->contributor->id, $this->getModule('Yii2')->grabFixture('users', 'activeUser1')->id); $this->assertInstanceOf(User::className(), $model->reviewer); $this->assertEquals($model->reviewer->id, $this->getModule('Yii2')->grabFixture('users', 'activeUser2')->id); // test unique model $attributes = $model->getAttributes(); unset($attributes['id']); $newModel = new ContributionReview(); $newModel->setAttributes($attributes); $this->assertFalse($newModel->validate()); $this->assertArrayHasKey('commit_id', $newModel->getErrors()); // delete test $this->assertEquals(1, $model->delete()); }
/** * Retrieve a project model * * @return ActiveQuery */ public function getProject() { return $this->hasOne(Project::className(), ['id' => 'project_id']); }
/** * Test contribution review * * @depends testGetProjectContributions * * @param BaseCommit $commit */ public function testCreateContributionReview(BaseCommit $commit) { /* @var $project Project */ $project = $this->getModule('Yii2')->grabFixture('projects', 'gitProject'); /* @var $reviewer User */ $reviewer = $this->getModule('Yii2')->grabFixture('users', 'activeUser1'); /* @var $contributor User */ $contributor = $this->getModule('Yii2')->grabFixture('users', 'activeUser2'); // create review without users $contributionReview = $this->projectApi->createContributionReview($project, $commit, new UnregisteredContributor()); $this->assertInstanceOf(ContributionReview::className(), $contributionReview); $this->assertInstanceOf(Project::className(), $contributionReview->project); $this->assertEquals($contributionReview->project->id, $project->id); $this->assertNull($contributionReview->reviewer); $this->assertInstanceOf(UnregisteredContributor::className(), $contributionReview->contributor); // check unique $this->assertNull($this->projectApi->createContributionReview($project, $commit, new UnregisteredContributor())); // remove review $this->assertEquals(1, $contributionReview->delete()); // create review with users $contributionReview = $this->projectApi->createContributionReview($project, $commit, $contributor); $this->assertInstanceOf(ContributionReview::className(), $contributionReview); $this->assertInstanceOf(Project::className(), $contributionReview->project); $this->assertEquals($contributionReview->project->id, $project->id); $this->assertNull($contributionReview->reviewer); $this->assertInstanceOf(ContributorInterface::class, $contributionReview->contributor); $this->assertEquals($contributionReview->contributor->id, $contributor->id); $this->assertEquals(1, $contributionReview->delete()); $contributionReview = $this->projectApi->createContributionReview($project, $commit, $contributor, $reviewer); $this->assertInstanceOf(ContributionReview::className(), $contributionReview); $this->assertInstanceOf(Project::className(), $contributionReview->project); $this->assertEquals($contributionReview->project->id, $project->id); $this->assertInstanceOf(ContributorInterface::class, $contributionReview->reviewer); $this->assertEquals($contributionReview->reviewer->id, $reviewer->id); $this->assertInstanceOf(ContributorInterface::class, $contributionReview->contributor); $this->assertEquals($contributionReview->contributor->id, $contributor->id); }