generate report test
This commit is contained in:
27
Database/factories/CustomerFactory.php
Normal file
27
Database/factories/CustomerFactory.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
namespace Modules\DailySalePaymentReportModule\Database\factories;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
class CustomerFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* The name of the factory's corresponding model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $model = \Modules\DailySalePaymentReportModule\Entities\Customer::class;
|
||||
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
42
Entities/Customer.php
Normal file
42
Entities/Customer.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\DailySalePaymentReportModule\Entities;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
class Customer extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
"customer_group_id",
|
||||
"user_id",
|
||||
"name",
|
||||
"company_name",
|
||||
"email",
|
||||
"phone_number",
|
||||
"tax_no",
|
||||
"address",
|
||||
"city",
|
||||
"state",
|
||||
"postal_code",
|
||||
"country",
|
||||
"customer_route",
|
||||
"points",
|
||||
"deposit",
|
||||
"expense",
|
||||
"is_active",
|
||||
"credit_limit",
|
||||
"document",
|
||||
"employee_id",
|
||||
"payable_account_id",
|
||||
"receivable_account_id",
|
||||
"customer_area_id"
|
||||
];
|
||||
|
||||
protected static function newFactory()
|
||||
{
|
||||
return \Modules\DailySalePaymentReportModule\Database\factories\CustomerFactory::new();
|
||||
}
|
||||
}
|
||||
154
Tests/Feature/DailySalePaymentReportGenerateTest.php
Normal file
154
Tests/Feature/DailySalePaymentReportGenerateTest.php
Normal file
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\DailySalePaymentReportModule\Tests\Feature;
|
||||
|
||||
use App\Models\User;
|
||||
use Carbon\Carbon;
|
||||
use Tests\TestCase;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\DailySalePaymentReportModule\Entities\Customer;
|
||||
|
||||
class DailySalePaymentReportGenerateTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* A basic feature test example.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
protected $reportDate;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
|
||||
parent::setUp();
|
||||
|
||||
if (app()->environment() !== 'local') {
|
||||
putenv('APP_ENV=local');
|
||||
$_ENV['APP_ENV'] = 'local';
|
||||
$_SERVER['APP_ENV'] = 'local';
|
||||
}
|
||||
DB::beginTransaction();
|
||||
|
||||
$this->reportDate = Carbon::today()->toDateString();
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
DB::rollBack();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**@test */
|
||||
public function test_generate_report_button_loads_sales_and_credit_collection_data_correctly()
|
||||
{
|
||||
$cashier = User::factory()->create([
|
||||
'name' => fake()->name(),
|
||||
'is_active' => 1,
|
||||
'is_deleted' => 0,
|
||||
]);
|
||||
|
||||
$customer = Customer::factory()->create([
|
||||
'name' => fake()->name(),
|
||||
'customer_group_id' => 1,
|
||||
]);
|
||||
|
||||
$cashOptionId = DB::table('payment_options')->insertGetId([
|
||||
'name' => 'Cash',
|
||||
'is_active' => 1,
|
||||
]);
|
||||
|
||||
$card1OptionId = DB::table('payment_options')->insertGetId([
|
||||
'name' => 'Card 1',
|
||||
'is_active' => 1,
|
||||
]);
|
||||
|
||||
$todaySaleId = DB::table('sales')->insertGetId([
|
||||
'reference_no' => 'INV-TEST-' . fake()->unique()->numerify('####'),
|
||||
'user_id' => $cashier->id,
|
||||
'customer_id' => $customer->id,
|
||||
'warehouse_id' => 1,
|
||||
'item' => 1,
|
||||
'total_qty' => 1,
|
||||
'total_discount' => 0,
|
||||
'total_tax' => 0,
|
||||
'total_price' => 5000,
|
||||
'grand_total' => 5000,
|
||||
'sale_status' => 1,
|
||||
'payment_status' => 1,
|
||||
'due_amount' => 0,
|
||||
'paid_amount' => 5000,
|
||||
'created_at' => $this->reportDate . ' 10:00:00',
|
||||
]);
|
||||
|
||||
DB::table('payments')->insert([
|
||||
'payment_reference' => 'PAY-TEST-1',
|
||||
'user_id' => $cashier->id,
|
||||
'sale_id' => $todaySaleId,
|
||||
'amount' => 5000,
|
||||
'change' => 0,
|
||||
'paying_method' => 'cash',
|
||||
'payment_option_id' => $cashOptionId,
|
||||
'created_at' => $this->reportDate . ' 10:00:00',
|
||||
]);
|
||||
|
||||
$creditSaleId = DB::table('sales')->insertGetId([
|
||||
'reference_no' => 'INV-TEST-' . fake()->unique()->numerify('####'),
|
||||
'user_id' => $cashier->id,
|
||||
'customer_id' => $customer->id,
|
||||
'warehouse_id' => 1,
|
||||
'item' => 1,
|
||||
'total_qty' => 1,
|
||||
'total_discount' => 0,
|
||||
'total_tax' => 0,
|
||||
'total_price' => 3000,
|
||||
'grand_total' => 3000,
|
||||
'sale_status' => 1,
|
||||
'payment_status' => 0,
|
||||
'due_amount' => 3000,
|
||||
'paid_amount' => 0,
|
||||
'created_at' => Carbon::parse($this->reportDate)->subDays(5)->format('Y-m-d H:i:s'),
|
||||
]);
|
||||
|
||||
DB::table('payments')->insert([
|
||||
'payment_reference' => 'PAY-TEST-2',
|
||||
'user_id' => $cashier->id,
|
||||
'sale_id' => $creditSaleId,
|
||||
'amount' => 3000,
|
||||
'change' => 0,
|
||||
'paying_method' => 'card',
|
||||
'payment_option_id' => $card1OptionId,
|
||||
'created_at' => $this->reportDate . ' 14:00:00',
|
||||
]);
|
||||
|
||||
$response = $this->actingAs($cashier)
|
||||
->get('/dailysalepaymentreportmodule?report_date=' . $this->reportDate);
|
||||
|
||||
$response->assertStatus(200);
|
||||
|
||||
$response->assertSee($customer->name);
|
||||
$response->assertSee('5,000.00');
|
||||
|
||||
$response->assertSee('3,000.00');
|
||||
|
||||
$response->assertSee('Payment Method Summary');
|
||||
$response->assertSee('8,000.00');
|
||||
}
|
||||
|
||||
public function test_generate_report_shows_no_records_message_when_no_sales_exist_for_selected_date(){
|
||||
$cashier = User::factory()->create([
|
||||
'is_active' => 1,
|
||||
'is_deleted' => 0,
|
||||
]);
|
||||
|
||||
$emptyDate = Carbon::today()->subYears(5)->toDateString();
|
||||
|
||||
$response = $this->actingAs($cashier)
|
||||
->get('/dailysalepaymentreportmodule?report_date=' . $emptyDate);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$response->assertSee('0.00');
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user