Skip to content

Commit

Permalink
test: Approve And Active Test
Browse files Browse the repository at this point in the history
  • Loading branch information
Dipesh79 committed Feb 7, 2024
1 parent 40bcd2a commit 4af94c8
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 0 deletions.
70 changes: 70 additions & 0 deletions tests/ApproveActiveTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?php

namespace AchyutN\LaravelHelpers\Tests;


use AchyutN\LaravelHelpers\Tests\Models\ApproveActive;

class ApproveActiveTest extends BaseTestCase
{

public function test_change_to_approved()
{
$approve_active = ApproveActive::factory()->create();
$approve_active->setApproved();
$this->assertFalse($approve_active->approved_at == null);
$this->assertTrue($approve_active->rejected_at == null);
}

public function test_active_count()
{
ApproveActive::factory(10)->create(['rejected_at' => now()]);
$this->assertEquals(0, ApproveActive::count());
}

public function test_active_and_approved_count()
{
ApproveActive::factory(10)->create(['approved_at' => now()]);
$this->assertEquals(10, ApproveActive::count());
}

public function test_active_and_pending_count()
{
ApproveActive::factory(10)->create();
$this->assertEquals(0, ApproveActive::count());
}

public function test_active_and_rejected_count()
{
ApproveActive::factory(10)->create(['rejected_at' => now()]);
$this->assertEquals(0, ApproveActive::count());
}

public function test_inactive_and_approved_count()
{
ApproveActive::factory(10)->create(['approved_at' => now(), 'inactive_at' => now()]);
$this->assertEquals(0, ApproveActive::count());
}

public function test_active_and_change_to_approved()
{
$approve_active = ApproveActive::factory()->create();
$approve_active->setApproved();
$this->assertEquals(1, ApproveActive::count());
}

public function test_inactive_and_change_to_approved()
{
$approve_active = ApproveActive::factory()->create(['inactive_at'=>now()]);
$approve_active->setApproved();
$this->assertEquals(0, ApproveActive::count());
}

public function test_approved_and_change_to_active()
{
$approve_active = ApproveActive::factory()->create(['approved_at'=>now(),'inactive_at'=>now()]);
$approve_active->setActive();
$this->assertEquals(1, ApproveActive::count());
}

}
28 changes: 28 additions & 0 deletions tests/Factories/ApproveActiveFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace AchyutN\LaravelHelpers\Tests\Factories;

use AchyutN\LaravelHelpers\Tests\Models\ApproveActive;
use Illuminate\Database\Eloquent\Factories\Factory;

class ApproveActiveFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var class-string<\Illuminate\Database\Eloquent\Model>
*/
protected $model = ApproveActive::class;

/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'title' => $this->faker->sentence,
];
}
}
27 changes: 27 additions & 0 deletions tests/Models/ApproveActive.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace AchyutN\LaravelHelpers\Tests\Models;

use AchyutN\LaravelHelpers\Tests\Factories\ApproveActiveFactory;
use AchyutN\LaravelHelpers\Traits\CanBeApproved;
use AchyutN\LaravelHelpers\Traits\CanBeInactive;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Database\Eloquent\Model;

class ApproveActive extends Model
{
use CanBeInactive, CanBeApproved;

protected $table = 'approve_active';

protected $guarded = [];

protected static function factory(int $count = 1): Factory
{
if ($count && $count > 1) {
return ApproveActiveFactory::times($count);
} else {
return ApproveActiveFactory::new();
}
}
}
35 changes: 35 additions & 0 deletions tests/migrations/approve_active_table.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
Schema::create("approve_active", function (Blueprint $table) {
$table->id();
$table->text('title');
$table->dateTime('inactive_at')->nullable();
$table->dateTime('approved_at')->nullable();
$table->dateTime('rejected_at')->nullable();
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down(): void
{
Schema::dropIfExists("approve_active");
}
};

0 comments on commit 4af94c8

Please sign in to comment.