Browse Source

Add project owner relation

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
2d32a4d026
  1. 6
      app/Entities/Projects/Project.php
  2. 24
      database/factories/ModelFactory.php
  3. 30
      database/factories/ProjectFactory.php
  4. 16
      tests/Unit/Models/ProjectTest.php

6
app/Entities/Projects/Project.php

@ -2,6 +2,7 @@
namespace App\Entities\Projects;
use App\Entities\Agencies\Agency;
use App\Entities\Invoices\Invoice;
use App\Entities\Partners\Partner;
use App\Entities\Payments\Payment;
@ -65,6 +66,11 @@ class Project extends Model
return $this->belongsTo(Partner::class);
}
public function owner()
{
return $this->belongsTo(Agency::class);
}
public function cashInTotal()
{
return $this->payments->sum(function ($payment) {

24
database/factories/ModelFactory.php

@ -19,30 +19,6 @@ $factory->define(User::class, function (Faker\Generator $faker) {
];
});
$factory->define(Project::class, function (Faker\Generator $faker) {
$proposalDate = $faker->dateTimeBetween('-1 year', '-1 month')->format('Y-m-d');
$startDate = Carbon::parse($proposalDate)->addDays(10);
$endDate = $startDate->addDays(rand(1, 13) * 7);
return [
'name' => $faker->sentence(3),
'description' => $faker->paragraph,
'proposal_date' => $proposalDate,
'start_date' => $startDate->format('Y-m-d'),
'end_date' => $endDate->format('Y-m-d'),
'project_value' => $projectValue = rand(1, 10) * 500000,
'proposal_value' => $projectValue,
'status_id' => rand(1, 6),
'owner_id' => function () {
return factory(User::class)->create()->id;
},
'customer_id' => function () {
return factory(Partner::class)->create()->id;
},
];
});
$factory->define(Subscription::class, function (Faker\Generator $faker) {
$startDate = Carbon::parse($faker->dateTimeBetween('-1 year', '-1 month')->format('Y-m-d'));

30
database/factories/ProjectFactory.php

@ -0,0 +1,30 @@
<?php
use App\Entities\Agencies\Agency;
use App\Entities\Partners\Partner;
use App\Entities\Projects\Project;
use Faker\Generator as Faker;
$factory->define(Project::class, function (Faker $faker) {
$proposalDate = $faker->dateTimeBetween('-1 year', '-1 month')->format('Y-m-d');
$startDate = Carbon::parse($proposalDate)->addDays(10);
$endDate = $startDate->addDays(rand(1, 13) * 7);
return [
'name' => $faker->sentence(3),
'description' => $faker->paragraph,
'proposal_date' => $proposalDate,
'start_date' => $startDate->format('Y-m-d'),
'end_date' => $endDate->format('Y-m-d'),
'project_value' => $projectValue = rand(1, 10) * 500000,
'proposal_value' => $projectValue,
'status_id' => rand(1, 6),
'owner_id' => function () {
return factory(Agency::class)->create()->id;
},
'customer_id' => function () {
return factory(Partner::class)->create()->id;
},
];
});

16
tests/Unit/Models/ProjectTest.php

@ -2,6 +2,7 @@
namespace Tests\Unit\Models;
use App\Entities\Agencies\Agency;
use App\Entities\Partners\Partner;
use App\Entities\Payments\Payment;
use App\Entities\Projects\Feature;
@ -71,8 +72,21 @@ class ProjectTest extends TestCase
/** @test */
public function a_project_belongs_to_a_customer()
{
$project = factory(Project::class)->create();
$customer = factory(Partner::class)->create();
$project = factory(Project::class)->create(['customer_id' => $customer->id]);
$this->assertTrue($project->customer instanceof Partner);
$this->assertEquals($project->customer_id, $customer->id);
}
/** @test */
public function a_project_belongs_to_an_agency()
{
$agency = factory(Agency::class)->create();
$project = factory(Project::class)->create(['owner_id' => $agency->id]);
$this->assertTrue($project->owner instanceof Agency);
$this->assertEquals($project->owner_id, $agency->id);
}
/** @test */

Loading…
Cancel
Save