Browse Source

Remove vendor entity

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
273520de5b
  1. 9
      app/Entities/BaseRepository.php
  2. 10
      app/Entities/Partners/Vendor.php
  3. 10
      app/Entities/Payments/Payment.php
  4. 5
      app/Entities/Subscriptions/Subscription.php
  5. 16
      app/Entities/Subscriptions/SubscriptionsRepository.php
  6. 100
      app/Http/Controllers/Partners/VendorsController.php
  7. 9
      app/Http/Controllers/Projects/ProjectsController.php
  8. 64
      app/Policies/Partners/VendorPolicy.php
  9. 3
      app/Providers/AuthServiceProvider.php
  10. 3
      database/factories/ModelFactory.php
  11. 2
      database/factories/PaymentFactory.php
  12. 11
      database/factories/VendorFactory.php
  13. 36
      database/migrations/2017_10_26_092017_create_vendors_table.php
  14. 29
      resources/lang/id/vendor.php
  15. 1
      resources/views/payments/index.blade.php
  16. 2
      resources/views/subscriptions/index.blade.php
  17. 60
      resources/views/vendors/forms.blade.php
  18. 67
      resources/views/vendors/index.blade.php
  19. 2
      routes/web.php
  20. 5
      tests/Feature/ManageSubscriptionsTest.php
  21. 100
      tests/Feature/ManageVendorsTest.php
  22. 9
      tests/Feature/Payments/ManagePaymentsTest.php
  23. 8
      tests/Feature/Payments/PaymentSearchTest.php
  24. 4
      tests/Unit/Models/PaymentTest.php
  25. 8
      tests/Unit/Models/SubscriptionTest.php
  26. 19
      tests/Unit/Models/VendorTest.php
  27. 43
      tests/Unit/Policies/VendorPolicyTest.php

9
app/Entities/BaseRepository.php

@ -3,7 +3,6 @@
namespace App\Entities; namespace App\Entities;
use App\Entities\Partners\Customer; use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor;
use App\Entities\Projects\Feature; use App\Entities\Projects\Feature;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Entities\Users\User; use App\Entities\Users\User;
@ -21,11 +20,7 @@ abstract class BaseRepository extends EloquentRepository
public function getCustomersAndVendorsList() public function getCustomersAndVendorsList()
{ {
$partnerList = [
'Customer' => Customer::orderBy('name')->pluck('name', 'id')->all(),
'Vendor' => Vendor::orderBy('name')->pluck('name', 'id')->all(),
];
return $partnerList;
return Customer::orderBy('name')->pluck('name', 'id');
} }
public function getWorkersList() public function getWorkersList()
@ -35,7 +30,7 @@ abstract class BaseRepository extends EloquentRepository
public function getVendorsList() public function getVendorsList()
{ {
return Vendor::orderBy('name')->pluck('name', 'id');
return Customer::orderBy('name')->pluck('name', 'id');
} }
public function getProjectsList() public function getProjectsList()

10
app/Entities/Partners/Vendor.php

@ -1,10 +0,0 @@
<?php
namespace App\Entities\Partners;
use Illuminate\Database\Eloquent\Model;
class Vendor extends Model
{
protected $fillable = ['name', 'email', 'phone', 'notes', 'is_active'];
}

10
app/Entities/Payments/Payment.php

@ -3,7 +3,6 @@
namespace App\Entities\Payments; namespace App\Entities\Payments;
use App\Entities\Partners\Customer; use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor;
use App\Entities\Payments\PaymentPresenter; use App\Entities\Payments\PaymentPresenter;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -22,20 +21,11 @@ class Payment extends Model
return $this->belongsTo(Project::class); return $this->belongsTo(Project::class);
} }
public function customer()
{
return $this->belongsTo(Customer::class, 'customer_id');
}
public function partner() public function partner()
{ {
if ($this->in_out == 1) {
return $this->belongsTo(Customer::class, 'partner_id'); return $this->belongsTo(Customer::class, 'partner_id');
} }
return $this->belongsTo(Vendor::class, 'partner_id');
}
public function type() public function type()
{ {
return paymentTypes($this->type_id); return paymentTypes($this->type_id);

5
app/Entities/Subscriptions/Subscription.php

@ -22,11 +22,6 @@ class Subscription extends Model
return $this->belongsTo('App\Entities\Partners\Customer'); return $this->belongsTo('App\Entities\Partners\Customer');
} }
public function vendor()
{
return $this->belongsTo('App\Entities\Partners\Vendor', 'vendor_id');
}
public function status() public function status()
{ {
return $this->status_id ? trans('app.active') : trans('app.in_active'); return $this->status_id ? trans('app.active') : trans('app.in_active');

16
app/Entities/Subscriptions/SubscriptionsRepository.php

@ -16,16 +16,20 @@ class SubscriptionsRepository extends BaseRepository
parent::__construct($model); parent::__construct($model);
} }
public function getSubscriptions($q, $vendorId)
public function getSubscriptions($q, $customerId)
{ {
return $this->model->orderBy('due_date') return $this->model->orderBy('due_date')
->where(function($query) use ($q, $vendorId) {
if ($vendorId)
$query->where('vendor_id', $vendorId);
if ($q)
->where(function ($query) use ($q, $customerId) {
if ($customerId) {
$query->where('customer_id', $customerId);
}
if ($q) {
$query->where('domain_name', 'like', '%'.$q.'%'); $query->where('domain_name', 'like', '%'.$q.'%');
}
}) })
->with('vendor')
->with('customer')
->paginate($this->_paginate); ->paginate($this->_paginate);
} }
} }

100
app/Http/Controllers/Partners/VendorsController.php

@ -1,100 +0,0 @@
<?php
namespace App\Http\Controllers\Partners;
use App\Entities\Partners\Vendor;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class VendorsController extends Controller
{
/**
* Display a listing of the vendor.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$editableVendor = null;
$vendors = Vendor::where(function ($query) {
$query->where('name', 'like', '%'.request('q').'%');
})->paginate(25);
if (in_array(request('action'), ['edit', 'delete']) && request('id') != null) {
$editableVendor = Vendor::find(request('id'));
}
return view('vendors.index', compact('vendors', 'editableVendor'));
}
/**
* Store a newly created vendor in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$newVendorData = $this->validate($request, [
'name' => 'required|max:60',
'email' => 'nullable|email|unique:vendors,email',
'phone' => 'nullable',
'notes' => 'nullable|max:255',
]);
Vendor::create($newVendorData);
flash(trans('vendor.created'), 'success');
return redirect()->route('vendors.index');
}
/**
* Update the specified vendor in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Entities\Partners\Vendor $vendor
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Vendor $vendor)
{
$vendorData = $this->validate($request, [
'name' => 'required|max:60',
'email' => 'nullable|email|unique:vendors,email,'.$vendor->id,
'phone' => 'nullable',
'notes' => 'nullable|max:255',
'is_active' => 'required|boolean',
]);
$routeParam = request()->only('page', 'q');
$vendor = $vendor->update($vendorData);
flash(trans('vendor.updated'), 'success');
return redirect()->route('vendors.index', $routeParam);
}
/**
* Remove the specified vendor from storage.
*
* @param \App\Entities\Partners\Vendor $vendor
* @return \Illuminate\Http\Response
*/
public function destroy(Vendor $vendor)
{
// TODO: user cannot delete vendor that has been used in other table
$this->validate(request(), [
'vendor_id' => 'required',
]);
$routeParam = request()->only('page', 'q');
if (request('vendor_id') == $vendor->id && $vendor->delete()) {
flash(trans('vendor.deleted'), 'warning');
return redirect()->route('vendors.index', $routeParam);
}
flash(trans('vendor.undeleted'), 'danger');
return back();
}
}

9
app/Http/Controllers/Projects/ProjectsController.php

@ -2,12 +2,11 @@
namespace App\Http\Controllers\Projects; namespace App\Http\Controllers\Projects;
use App\Entities\Projects\ProjectsRepository;
use App\Http\Controllers\Controller;
use App\Http\Requests\Projects\CreateRequest; use App\Http\Requests\Projects\CreateRequest;
use App\Http\Requests\Projects\UpdateRequest;
use App\Http\Requests\Projects\DeleteRequest; use App\Http\Requests\Projects\DeleteRequest;
use App\Http\Controllers\Controller;
use App\Entities\Projects\ProjectsRepository;
use App\Http\Requests\Projects\UpdateRequest;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class ProjectsController extends Controller class ProjectsController extends Controller
@ -124,7 +123,7 @@ class ProjectsController extends Controller
public function payments($projectId) public function payments($projectId)
{ {
$project = $this->repo->requireById($projectId); $project = $this->repo->requireById($projectId);
$project->load('payments.customer');
$project->load('payments.partner');
return view('projects.payments', compact('project')); return view('projects.payments', compact('project'));
} }

64
app/Policies/Partners/VendorPolicy.php

@ -1,64 +0,0 @@
<?php
namespace App\Policies\Partners;
use App\Entities\Users\User;
use App\Entities\Partners\Vendor;
use Illuminate\Auth\Access\HandlesAuthorization;
class VendorPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can view the project.
*
* @param \App\Entities\Users\User $user
* @param \App\Entities\Partners\Vendor $vendor
* @return mixed
*/
public function view(User $user, Vendor $vendor)
{
// Update $user authorization to view $vendor here.
return true;
}
/**
* Determine whether the user can create projects.
*
* @param \App\Entities\Users\User $user
* @param \App\Entities\Partners\Vendor $vendor
* @return mixed
*/
public function create(User $user, Vendor $vendor)
{
// Update $user authorization to create $vendor here.
return true;
}
/**
* Determine whether the user can update the project.
*
* @param \App\Entities\Users\User $user
* @param \App\Entities\Partners\Vendor $vendor
* @return mixed
*/
public function update(User $user, Vendor $vendor)
{
// Update $user authorization to update $vendor here.
return true;
}
/**
* Determine whether the user can delete the project.
*
* @param \App\Entities\Users\User $user
* @param \App\Entities\Partners\Vendor $vendor
* @return mixed
*/
public function delete(User $user, Vendor $vendor)
{
// Update $user authorization to delete $vendor here.
return true;
}
}

3
app/Providers/AuthServiceProvider.php

@ -3,8 +3,8 @@
namespace App\Providers; namespace App\Providers;
use App\Entities\Users\Permission; use App\Entities\Users\Permission;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider class AuthServiceProvider extends ServiceProvider
{ {
@ -15,7 +15,6 @@ class AuthServiceProvider extends ServiceProvider
*/ */
protected $policies = [ protected $policies = [
'App\Entities\Partners\Customer' => 'App\Policies\Partners\CustomerPolicy', 'App\Entities\Partners\Customer' => 'App\Policies\Partners\CustomerPolicy',
'App\Entities\Partners\Vendor' => 'App\Policies\Partners\VendorPolicy',
'App\Entities\Users\Event' => 'App\Policies\EventPolicy', 'App\Entities\Users\Event' => 'App\Policies\EventPolicy',
]; ];

3
database/factories/ModelFactory.php

@ -2,7 +2,6 @@
use App\Entities\Invoices\Invoice; use App\Entities\Invoices\Invoice;
use App\Entities\Partners\Customer; use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor;
use App\Entities\Projects\Feature; use App\Entities\Projects\Feature;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Entities\Projects\Task; use App\Entities\Projects\Task;
@ -65,7 +64,7 @@ $factory->define(Subscription::class, function (Faker\Generator $faker) {
return factory(Customer::class)->create()->id; return factory(Customer::class)->create()->id;
}, },
'vendor_id' => function () { 'vendor_id' => function () {
return factory(Vendor::class)->create()->id;
return factory(Customer::class)->create()->id;
}, },
]; ];
}); });

2
database/factories/PaymentFactory.php

@ -20,7 +20,7 @@ $factory->define(Payment::class, function (Faker $faker) {
'owner_id' => function () { 'owner_id' => function () {
return factory(User::class)->create()->id; return factory(User::class)->create()->id;
}, },
'customer_id' => function () {
'partner_id' => function () {
return factory(Customer::class)->create()->id; return factory(Customer::class)->create()->id;
}, },
]; ];

11
database/factories/VendorFactory.php

@ -1,11 +0,0 @@
<?php
use App\Entities\Partners\Vendor;
use Faker\Generator as Faker;
$factory->define(Vendor::class, function (Faker $faker) {
return [
'name' => $faker->company,
];
});

36
database/migrations/2017_10_26_092017_create_vendors_table.php

@ -1,36 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateVendorsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('vendors', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 60);
$table->string('email')->nullable()->unique();
$table->string('phone')->nullable();
$table->string('notes')->nullable();
$table->boolean('is_active')->default(1);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('vendors');
}
}

29
resources/lang/id/vendor.php

@ -1,29 +0,0 @@
<?php
return [
// Labels
'vendor' => 'Vendor',
'list' => 'Daftar Vendor',
'search' => 'Cari Vendor',
'not_found' => 'Vendor tidak ditemukan',
'empty' => 'Belum ada Vendor',
'back_to_show' => 'Back to Vendor Detail',
'back_to_index' => 'Kembali ke daftar Vendor',
// Actions
'create' => 'Input Vendor Baru',
'created' => 'Input Vendor baru telah berhasil.',
'show' => 'Detail Vendor',
'edit' => 'Edit Vendor',
'update' => 'Update Vendor',
'updated' => 'Update data Vendor telah berhasil.',
'delete' => 'Hapus Vendor',
'delete_confirm' => 'Anda yakin akan menghapus Vendor ini?',
'deleted' => 'Hapus data Vendor telah berhasil.',
'undeleted' => 'Data Vendor gagal dihapus.',
'undeleteable' => 'Data Vendor tidak dapat dihapus.',
// Attributes
'name' => 'Nama Vendor',
'description' => 'Deskripsi Vendor',
];

1
resources/views/payments/index.blade.php

@ -35,7 +35,6 @@
<td class="text-right">{{ $payment->present()->amount }}</td> <td class="text-right">{{ $payment->present()->amount }}</td>
<td>{{ $payment->description }}</td> <td>{{ $payment->description }}</td>
<td>{{ $payment->partner->name }}</td> <td>{{ $payment->partner->name }}</td>
{{-- <td>{{ $payment->partner }}</td> --}}
<td> <td>
{!! link_to_route('payments.show', trans('app.show'), [$payment->id], ['class'=>'btn btn-info btn-xs']) !!} {!! link_to_route('payments.show', trans('app.show'), [$payment->id], ['class'=>'btn btn-info btn-xs']) !!}
{!! link_to_route('payments.edit', trans('app.edit'), [$payment->id], ['class'=>'btn btn-warning btn-xs']) !!} {!! link_to_route('payments.edit', trans('app.edit'), [$payment->id], ['class'=>'btn btn-warning btn-xs']) !!}

2
resources/views/subscriptions/index.blade.php

@ -32,7 +32,7 @@
<td>{{ $subscriptions->firstItem() + $key }}</td> <td>{{ $subscriptions->firstItem() + $key }}</td>
<td>{{ $subscription->domain_name }}</td> <td>{{ $subscription->domain_name }}</td>
<td class="text-center">{{ $subscription->hosting_capacity }}</td> <td class="text-center">{{ $subscription->hosting_capacity }}</td>
<td>{{ $subscription->vendor->name }}</td>
<td>{{ $subscription->customer->name }}</td>
<td class="text-right" title=" <td class="text-right" title="
{{ trans('subscription.start_date') }} : {{ dateId($subscription->start_date) }} \n {{ trans('subscription.start_date') }} : {{ dateId($subscription->start_date) }} \n
{{ trans('subscription.due_date') }} : {{ dateId($subscription->due_date) }} {{ trans('subscription.due_date') }} : {{ dateId($subscription->due_date) }}

60
resources/views/vendors/forms.blade.php

@ -1,60 +0,0 @@
@if (Request::get('action') == 'create')
{!! Form::open(['route' => 'vendors.store']) !!}
{!! FormField::text('name', ['required' => true]) !!}
{!! FormField::email('email') !!}
{!! FormField::text('phone') !!}
{!! FormField::textarea('notes') !!}
{!! Form::submit(trans('vendor.create'), ['class' => 'btn btn-success']) !!}
{{ link_to_route('vendors.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
{!! Form::close() !!}
@endif
@if (Request::get('action') == 'edit' && $editableVendor)
{!! Form::model($editableVendor, ['route' => ['vendors.update', $editableVendor->id],'method' => 'patch']) !!}
{!! FormField::text('name', ['required' => true]) !!}
{!! FormField::email('email') !!}
{!! FormField::text('phone') !!}
{!! FormField::textarea('notes') !!}
{!! FormField::radios('is_active', ['Non Aktif', 'Aktif']) !!}
@if (request('q'))
{{ Form::hidden('q', request('q')) }}
@endif
@if (request('page'))
{{ Form::hidden('page', request('page')) }}
@endif
{!! Form::submit(trans('vendor.update'), ['class' => 'btn btn-success']) !!}
{{ link_to_route('vendors.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
{!! Form::close() !!}
@endif
@if (Request::get('action') == 'delete' && $editableVendor)
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">{{ trans('vendor.delete') }}</h3></div>
<div class="panel-body">
<label class="control-label">{{ trans('vendor.name') }}</label>
<p>{{ $editableVendor->name }}</p>
<label class="control-label">{{ trans('contact.email') }}</label>
<p>{{ $editableVendor->email }}</p>
<label class="control-label">{{ trans('contact.phone') }}</label>
<p>{{ $editableVendor->phone }}</p>
<label class="control-label">{{ trans('app.status') }}</label>
<p>{{ $editableVendor->is_active }}</p>
<label class="control-label">{{ trans('app.notes') }}</label>
<p>{{ $editableVendor->notes }}</p>
{!! $errors->first('vendor_id', '<span class="form-error small">:message</span>') !!}
</div>
<hr style="margin:0">
<div class="panel-body">{{ trans('app.delete_confirm') }}</div>
<div class="panel-footer">
{!! FormField::delete(
['route'=>['vendors.destroy',$editableVendor->id]],
trans('app.delete_confirm_button'),
['class'=>'btn btn-danger'],
[
'vendor_id' => $editableVendor->id,
'page' => request('page'),
'q' => request('q'),
]
) !!}
{{ link_to_route('vendors.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
</div>
</div>
@endif

67
resources/views/vendors/index.blade.php

@ -1,67 +0,0 @@
@extends('layouts.app')
@section('title', trans('vendor.list'))
@section('content')
<h1 class="page-header">
<div class="pull-right">
{{ link_to_route('vendors.index', trans('vendor.create'), ['action' => 'create'], ['class' => 'btn btn-success']) }}
</div>
{{ trans('vendor.list') }}
<small>{{ trans('app.total') }} : {{ $vendors->total() }} {{ trans('vendor.vendor') }}</small>
</h1>
<div class="row">
<div class="col-md-9">
<div class="panel panel-default table-responsive">
<div class="panel-heading">
{{ Form::open(['method' => 'get','class' => 'form-inline']) }}
{!! FormField::text('q', ['value' => request('q'), 'label' => trans('vendor.search'), 'class' => 'input-sm']) !!}
{{ Form::submit(trans('vendor.search'), ['class' => 'btn btn-sm']) }}
{{ link_to_route('vendors.index', trans('app.reset')) }}
{{ Form::close() }}
</div>
<table class="table table-condensed">
<thead>
<tr>
<th class="text-center">{{ trans('app.table_no') }}</th>
<th>{{ trans('vendor.name') }}</th>
<th>{{ trans('contact.email') }}</th>
<th>{{ trans('contact.phone') }}</th>
<th class="text-center">{{ trans('app.status') }}</th>
<th class="text-center">{{ trans('app.action') }}</th>
</tr>
</thead>
<tbody>
@foreach($vendors as $key => $vendor)
<tr>
<td class="text-center">{{ $vendors->firstItem() + $key }}</td>
<td>{{ $vendor->name }}</td>
<td>{{ $vendor->email }}</td>
<td>{{ $vendor->phone }}</td>
<td class="text-center">{{ $vendor->is_active }}</td>
<td class="text-center">
{!! link_to_route(
'vendors.index',
trans('app.edit'),
['action' => 'edit', 'id' => $vendor->id] + Request::only('page', 'q'),
['id' => 'edit-vendor-' . $vendor->id]
) !!} |
{!! link_to_route(
'vendors.index',
trans('app.delete'),
['action' => 'delete', 'id' => $vendor->id] + Request::only('page', 'q'),
['id' => 'del-vendor-' . $vendor->id]
) !!}
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panel-body">{{ $vendors->appends(Request::except('page'))->render() }}</div>
</div>
</div>
<div class="col-md-3">
@includeWhen(Request::has('action'), 'vendors.forms')
</div>
</div>
@endsection

2
routes/web.php

@ -22,6 +22,4 @@ Route::group(['middleware' => ['web','role:admin']], function () {
Route::resource('backups', 'BackupsController', ['except' => ['create', 'show', 'edit']]); Route::resource('backups', 'BackupsController', ['except' => ['create', 'show', 'edit']]);
}); });
Route::apiResource('vendors', 'Partners\VendorsController');
Route::apiResource('customers', 'Partners\CustomersController'); Route::apiResource('customers', 'Partners\CustomersController');

5
tests/Feature/ManageSubscriptionsTest.php

@ -3,7 +3,6 @@
namespace Tests\Feature; namespace Tests\Feature;
use App\Entities\Partners\Customer; use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Entities\Subscriptions\Subscription; use App\Entities\Subscriptions\Subscription;
use Tests\TestCase; use Tests\TestCase;
@ -14,7 +13,7 @@ class ManageSubscriptionsTest extends TestCase
public function admin_can_entry_subscription() public function admin_can_entry_subscription()
{ {
$user = $this->adminUserSigningIn(); $user = $this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create();
$vendor = factory(Customer::class)->create();
$project = factory(Project::class)->create(); $project = factory(Project::class)->create();
$customer = factory(Customer::class)->create(); $customer = factory(Customer::class)->create();
@ -54,7 +53,7 @@ class ManageSubscriptionsTest extends TestCase
public function admin_can_edit_subscription_data() public function admin_can_edit_subscription_data()
{ {
$user = $this->adminUserSigningIn(); $user = $this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create();
$vendor = factory(Customer::class)->create();
$eppCode = str_random(10); $eppCode = str_random(10);
$project = factory(Project::class)->create(); $project = factory(Project::class)->create();
$customer = factory(Customer::class)->create(); $customer = factory(Customer::class)->create();

100
tests/Feature/ManageVendorsTest.php

@ -1,100 +0,0 @@
<?php
namespace Tests\Feature;
use App\Entities\Partners\Vendor;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase as TestCase;
class ManageVendorsTest extends TestCase
{
use DatabaseMigrations;
/** @test */
public function user_can_see_vendor_list_in_vendor_index_page()
{
$vendor1 = factory(Vendor::class)->create();
$vendor2 = factory(Vendor::class)->create();
$this->adminUserSigningIn();
$this->visit(route('vendors.index'));
$this->see($vendor1->name);
$this->see($vendor2->name);
}
/** @test */
public function user_can_create_a_vendor()
{
$this->adminUserSigningIn();
$this->visit(route('vendors.index'));
$this->click(trans('vendor.create'));
$this->seePageIs(route('vendors.index', ['action' => 'create']));
$this->submitForm(trans('vendor.create'), [
'name' => 'Vendor 1 name',
'email' => 'vendor1@mail.com',
'phone' => '081234567890',
'notes' => '',
]);
$this->seePageIs(route('vendors.index'));
$this->seeInDatabase('vendors', [
'name' => 'Vendor 1 name',
'email' => 'vendor1@mail.com',
'phone' => '081234567890',
'notes' => null,
]);
}
/** @test */
public function user_can_edit_a_vendor_within_search_query()
{
$this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create(['name' => 'Testing 123']);
$this->visit(route('vendors.index', ['q' => '123']));
$this->click('edit-vendor-'.$vendor->id);
$this->seePageIs(route('vendors.index', ['action' => 'edit', 'id' => $vendor->id, 'q' => '123']));
$this->submitForm(trans('vendor.update'), [
'name' => 'Vendor 1 name',
'email' => 'vendor1@mail.com',
'phone' => '081234567890',
'notes' => '',
'is_active' => 0,
]);
$this->seePageIs(route('vendors.index', ['q' => '123']));
$this->seeInDatabase('vendors', [
'name' => 'Vendor 1 name',
'email' => 'vendor1@mail.com',
'phone' => '081234567890',
'notes' => null,
'is_active' => 0,
]);
}
/** @test */
public function user_can_delete_a_vendor()
{
$this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create();
$this->visit(route('vendors.index', [$vendor->id]));
$this->click('del-vendor-'.$vendor->id);
$this->seePageIs(route('vendors.index', ['action' => 'delete', 'id' => $vendor->id]));
$this->seeInDatabase('vendors', [
'id' => $vendor->id,
]);
$this->press(trans('app.delete_confirm_button'));
$this->dontSeeInDatabase('vendors', [
'id' => $vendor->id,
]);
}
}

9
tests/Feature/Payments/ManagePaymentsTest.php

@ -3,7 +3,6 @@
namespace Tests\Feature\Payments; namespace Tests\Feature\Payments;
use App\Entities\Partners\Customer; use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor;
use App\Entities\Payments\Payment; use App\Entities\Payments\Payment;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use Tests\TestCase; use Tests\TestCase;
@ -45,7 +44,7 @@ class ManagePaymentsTest extends TestCase
public function admin_can_entry_project_an_expanse_payment() public function admin_can_entry_project_an_expanse_payment()
{ {
$user = $this->adminUserSigningIn(); $user = $this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create();
$vendor = factory(Customer::class)->create();
$project = factory(Project::class)->create(); $project = factory(Project::class)->create();
$this->visit(route('payments.index')); $this->visit(route('payments.index'));
@ -80,7 +79,7 @@ class ManagePaymentsTest extends TestCase
$customer = factory(Customer::class)->create(); $customer = factory(Customer::class)->create();
$project = factory(Project::class)->create(); $project = factory(Project::class)->create();
$payment = factory(Payment::class, 'expanse')->create([
$payment = factory(Payment::class)->create([
'partner_id' => $customer->id, 'partner_id' => $customer->id,
'project_id' => $project->id, 'project_id' => $project->id,
'owner_id' => $user->id, 'owner_id' => $user->id,
@ -110,7 +109,7 @@ class ManagePaymentsTest extends TestCase
{ {
$user = $this->adminUserSigningIn(); $user = $this->adminUserSigningIn();
$payment = factory(Payment::class, 'expanse')->create(['owner_id' => $user->id]);
$payment = factory(Payment::class)->create(['owner_id' => $user->id]);
$this->visit(route('payments.index')); $this->visit(route('payments.index'));
$this->click(trans('app.edit')); $this->click(trans('app.edit'));
$this->click(trans('payment.delete')); $this->click(trans('payment.delete'));
@ -125,7 +124,7 @@ class ManagePaymentsTest extends TestCase
$user = $this->adminUserSigningIn(); $user = $this->adminUserSigningIn();
$project = factory(Project::class)->create(['owner_id' => $user->id]); $project = factory(Project::class)->create(['owner_id' => $user->id]);
$payment = factory(Payment::class, 'expanse')->create(['project_id' => $project->id, 'owner_id' => $user->id]);
$payment = factory(Payment::class)->create(['project_id' => $project->id, 'owner_id' => $user->id]);
$this->visit(route('payments.index')); $this->visit(route('payments.index'));
$this->click(trans('app.show')); $this->click(trans('app.show'));

8
tests/Feature/Payments/PaymentSearchTest.php

@ -13,8 +13,8 @@ class PaymentSearchTest extends TestCase
{ {
$admin = $this->adminUserSigningIn(); $admin = $this->adminUserSigningIn();
$project = factory(Project::class)->create(['name' => 'Project']); $project = factory(Project::class)->create(['name' => 'Project']);
$payment = factory(Payment::class, 'expanse')->create(['owner_id' => $admin->id, 'project_id' => $project->id]);
$unShownPayment = factory(Payment::class, 'expanse')->create(['owner_id' => $admin->id]);
$payment = factory(Payment::class)->create(['owner_id' => $admin->id, 'project_id' => $project->id]);
$unShownPayment = factory(Payment::class)->create(['owner_id' => $admin->id]);
$this->visit(route('payments.index')); $this->visit(route('payments.index'));
$this->submitForm(trans('app.search'), [ $this->submitForm(trans('app.search'), [
@ -31,8 +31,8 @@ class PaymentSearchTest extends TestCase
public function partner_find_payment_by_customer_id() public function partner_find_payment_by_customer_id()
{ {
$admin = $this->adminUserSigningIn(); $admin = $this->adminUserSigningIn();
$payment = factory(Payment::class, 'expanse')->create(['owner_id' => $admin->id]);
$unShownPayment = factory(Payment::class, 'expanse')->create(['owner_id' => $admin->id]);
$payment = factory(Payment::class)->create(['owner_id' => $admin->id]);
$unShownPayment = factory(Payment::class)->create(['owner_id' => $admin->id]);
$this->visit(route('payments.index')); $this->visit(route('payments.index'));
$this->submitForm(trans('app.search'), [ $this->submitForm(trans('app.search'), [

4
tests/Unit/Models/PaymentTest.php

@ -9,9 +9,9 @@ use Tests\TestCase;
class PaymentTest extends TestCase class PaymentTest extends TestCase
{ {
/** @test */ /** @test */
public function it_has_customer_relation()
public function it_has_partner_relation()
{ {
$payment = factory(Payment::class)->create(); $payment = factory(Payment::class)->create();
$this->assertTrue($payment->customer instanceof Customer);
$this->assertTrue($payment->partner instanceof Customer);
} }
} }

8
tests/Unit/Models/SubscriptionTest.php

@ -3,7 +3,6 @@
namespace Tests\Unit\Models; namespace Tests\Unit\Models;
use App\Entities\Partners\Customer; use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor;
use App\Entities\Subscriptions\Subscription; use App\Entities\Subscriptions\Subscription;
use Tests\TestCase as TestCase; use Tests\TestCase as TestCase;
@ -22,11 +21,4 @@ class SubscriptionTest extends TestCase
$subscription = factory(Subscription::class)->create(); $subscription = factory(Subscription::class)->create();
$this->assertTrue($subscription->customer instanceof Customer); $this->assertTrue($subscription->customer instanceof Customer);
} }
/** @test */
public function it_has_vendor_relation()
{
$subscription = factory(Subscription::class)->create();
$this->assertTrue($subscription->vendor instanceof Vendor);
}
} }

19
tests/Unit/Models/VendorTest.php

@ -1,19 +0,0 @@
<?php
namespace Tests\Unit\Models;
use App\Entities\Partners\Vendor;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase as TestCase;
class VendorTest extends TestCase
{
use DatabaseMigrations;
/** @test */
public function it_has_name_attribute()
{
$vendor = factory(Vendor::class)->create(['name' => 'Vendor 1 name']);
$this->assertEquals('Vendor 1 name', $vendor->name);
}
}

43
tests/Unit/Policies/VendorPolicyTest.php

@ -1,43 +0,0 @@
<?php
namespace Tests\Unit\Policies;
use App\Entities\Partners\Vendor;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase as TestCase;
class VendorTest extends TestCase
{
use DatabaseMigrations;
/** @test */
public function user_can_create_vendor()
{
$user = $this->adminUserSigningIn();
$this->assertTrue($user->can('create', new Vendor));
}
/** @test */
public function user_can_view_vendor()
{
$user = $this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create(['name' => 'Vendor 1 name']);
$this->assertTrue($user->can('view', $vendor));
}
/** @test */
public function user_can_update_vendor()
{
$user = $this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create(['name' => 'Vendor 1 name']);
$this->assertTrue($user->can('update', $vendor));
}
/** @test */
public function user_can_delete_vendor()
{
$user = $this->adminUserSigningIn();
$vendor = factory(Vendor::class)->create(['name' => 'Vendor 1 name']);
$this->assertTrue($user->can('delete', $vendor));
}
}
Loading…
Cancel
Save