Moved to _dev

This commit is contained in:
2025-09-20 16:11:47 +02:00
parent fb1a8753b7
commit b2ba11fcd3
1670 changed files with 224899 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
<?php
namespace Tests\Feature\Customer;
use Crater\Models\Customer;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\Sanctum;
use function Pest\Laravel\getJson;
beforeEach(function () {
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$customer = Customer::factory()->create();
Sanctum::actingAs(
$customer,
['*'],
'customer'
);
});
test('customer dashboard', function () {
$customer = Auth::guard('customer')->user();
getJson("api/v1/{$customer->company->slug}/customer/dashboard")->assertOk();
});

View File

@@ -0,0 +1,79 @@
<?php
namespace Tests\Feature\Customer;
use Crater\Models\Customer;
use Crater\Models\Estimate;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\Sanctum;
use function Pest\Laravel\getJson;
use function Pest\Laravel\postJson;
beforeEach(function () {
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$customer = Customer::factory()->create();
Sanctum::actingAs(
$customer,
['*'],
'customer'
);
});
test('get customer estimates', function () {
$customer = Auth::guard('customer')->user();
getJson("api/v1/{$customer->company->slug}/customer/estimates?page=1")->assertOk();
});
test('get customer estimate', function () {
$customer = Auth::guard('customer')->user();
$estimate = Estimate::factory()->create([
'customer_id' => $customer->id
]);
getJson("/api/v1/{$customer->company->slug}/customer/estimates/{$estimate->id}")
->assertOk();
});
test('customer estimate mark as accepted', function () {
$customer = Auth::guard('customer')->user();
$estimate = Estimate::factory()->create([
'estimate_date' => '1988-07-18',
'expiry_date' => '1988-08-18',
'customer_id' => $customer->id
]);
$status = [
'status' => Estimate::STATUS_ACCEPTED
];
$response = postJson("api/v1/{$customer->company->slug}/customer/estimate/{$estimate->id}/status", $status)
->assertOk();
$this->assertEquals($response->json()['data']['status'], Estimate::STATUS_ACCEPTED);
});
test('customer estimate mark as rejected', function () {
$customer = Auth::guard('customer')->user();
$estimate = Estimate::factory()->create([
'estimate_date' => '1988-07-18',
'expiry_date' => '1988-08-18',
'customer_id' => $customer->id
]);
$status = [
'status' => Estimate::STATUS_REJECTED
];
$response = postJson("api/v1/{$customer->company->slug}/customer/estimate/{$estimate->id}/status", $status)
->assertOk();
$this->assertEquals($response->json()['data']['status'], Estimate::STATUS_REJECTED);
});

View File

@@ -0,0 +1,41 @@
<?php
namespace Tests\Feature\Customer;
use Crater\Models\Customer;
use Crater\Models\Expense;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\Sanctum;
use function Pest\Laravel\getJson;
beforeEach(function () {
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$customer = Customer::factory()->create();
Sanctum::actingAs(
$customer,
['*'],
'customer'
);
});
test('get customer expenses', function () {
$customer = Auth::guard('customer')->user();
getJson("api/v1/{$customer->company->slug}/customer/expenses?page=1")->assertOk();
});
test('get customer expense', function () {
$customer = Auth::guard('customer')->user();
$expense = Expense::factory()->create([
'customer_id' => $customer->id,
'company_id' => $customer->company->id
]);
getJson("/api/v1/{$customer->company->slug}/customer/expenses/{$expense->id}")
->assertOk();
});

View File

@@ -0,0 +1,49 @@
<?php
namespace Tests\Feature\Customer;
use Crater\Models\Customer;
use Crater\Models\Invoice;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\Sanctum;
use function Pest\Laravel\getJson;
beforeEach(function () {
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$customer = Customer::factory()->create();
Sanctum::actingAs(
$customer,
['*'],
'customer'
);
});
test('get customer invoices', function () {
$customer = Auth::guard('customer')->user();
getJson("api/v1/{$customer->company->slug}/customer/invoices?page=1")->assertOk();
});
test('get customer invoice', function () {
$customer = Auth::guard('customer')->user();
$invoice = Invoice::factory()->create([
'customer_id' => $customer->id
]);
getJson("/api/v1/{$customer->company->slug}/customer/invoices/{$invoice->id}")->assertOk();
$this->assertDatabaseHas('invoices', [
'template_name' => $invoice['template_name'],
'invoice_number' => $invoice['invoice_number'],
'sub_total' => $invoice['sub_total'],
'discount' => $invoice['discount'],
'customer_id' => $invoice['customer_id'],
'total' => $invoice['total'],
'tax' => $invoice['tax'],
]);
});

View File

@@ -0,0 +1,39 @@
<?php
namespace Tests\Feature\Customer;
use Crater\Models\Customer;
use Crater\Models\Payment;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\Sanctum;
use function Pest\Laravel\getJson;
beforeEach(function () {
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$customer = Customer::factory()->create();
Sanctum::actingAs(
$customer,
['*'],
'customer'
);
});
test('get customer payments', function () {
$customer = Auth::guard('customer')->user();
getJson("api/v1/{$customer->company->slug}/customer/payments?page=1")->assertOk();
});
test('get customer payment', function () {
$customer = Auth::guard('customer')->user();
$payment = Payment::factory()->create([
'customer_id' => $customer->id
]);
getJson("/api/v1/{$customer->company->slug}/customer/payments/{$payment->id}")->assertOk();
});

View File

@@ -0,0 +1,61 @@
<?php
namespace Tests\Feature\Customer;
use Crater\Http\Controllers\V1\Customer\General\ProfileController;
use Crater\Http\Requests\Customer\CustomerProfileRequest;
use Crater\Models\Customer;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\Sanctum;
use function Pest\Laravel\getJson;
use function Pest\Laravel\postJson;
beforeEach(function () {
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$customer = Customer::factory()->create();
Sanctum::actingAs(
$customer,
['*'],
'customer'
);
});
test('update customer profile using a form request', function () {
$this->assertActionUsesFormRequest(
ProfileController::class,
'updateProfile',
CustomerProfileRequest::class
);
});
test('update customer profile', function () {
$customer = Auth::guard('customer')->user();
$newCustomer = Customer::factory()->raw([
'shipping' => [
'name' => 'newName',
'address_street_1' => 'address'
],
'billing' => [
'name' => 'newName',
'address_street_1' => 'address'
]
]);
postJson("api/v1/{$customer->company->slug}/customer/profile", $newCustomer)->assertOk();
$this->assertDatabaseHas('customers', [
'name' => $customer['name'],
'email' => $customer['email']
]);
});
test('get customer', function () {
$customer = Auth::guard('customer')->user();
getJson("api/v1/{$customer->company->slug}/customer/me")->assertOk();
});