diff --git a/app/Entities/Subscriptions/Subscription.php b/app/Entities/Subscriptions/Subscription.php
new file mode 100755
index 0000000..18213d3
--- /dev/null
+++ b/app/Entities/Subscriptions/Subscription.php
@@ -0,0 +1,28 @@
+belongsTo(Project::class);
+ }
+
+ public function customer()
+ {
+ return $this->belongsTo(User::class,'customer_id');
+ }
+
+}
diff --git a/app/Entities/Subscriptions/SubscriptionPresenter.php b/app/Entities/Subscriptions/SubscriptionPresenter.php
new file mode 100644
index 0000000..1f0e182
--- /dev/null
+++ b/app/Entities/Subscriptions/SubscriptionPresenter.php
@@ -0,0 +1,13 @@
+customer_id ? $this->customer->name . ' (' . $this->customer->email . ')' : '-';
+ }
+}
\ No newline at end of file
diff --git a/app/Entities/Subscriptions/SubscriptionsRepository.php b/app/Entities/Subscriptions/SubscriptionsRepository.php
new file mode 100755
index 0000000..ffc64ad
--- /dev/null
+++ b/app/Entities/Subscriptions/SubscriptionsRepository.php
@@ -0,0 +1,23 @@
+model->orderBy('due_date')->where('domain_name','like','%' . $q . '%')->paginate($this->_paginate);
+ }
+}
\ No newline at end of file
diff --git a/app/Entities/Users/UsersRepository.php b/app/Entities/Users/UsersRepository.php
index 1c32f1b..717bff2 100755
--- a/app/Entities/Users/UsersRepository.php
+++ b/app/Entities/Users/UsersRepository.php
@@ -29,6 +29,7 @@ class UsersRepository extends BaseRepository
$query->whereIn('name', explode('|', $rolesString));
}
})
+ ->with('roles')
->paginate($this->_paginate);
}
diff --git a/app/Http/Controllers/SubscriptionsController.php b/app/Http/Controllers/SubscriptionsController.php
new file mode 100755
index 0000000..967b470
--- /dev/null
+++ b/app/Http/Controllers/SubscriptionsController.php
@@ -0,0 +1,82 @@
+repo = $repo;
+ }
+
+ public function index(Request $req)
+ {
+ $subscriptions = $this->repo->getAll($req->get('q'));
+ return view('subscriptions.index',compact('subscriptions'));
+ }
+
+ public function create()
+ {
+ $projects = $this->repo->getProjectsList();
+ $customers = $this->repo->getCustomersList();
+ return view('subscriptions.create', compact('projects','customers'));
+ }
+
+ public function store(CreateRequest $req)
+ {
+ $subscription = $this->repo->create($req->except('_token'));
+ flash()->success(trans('subscription.created'));
+ return redirect()->route('subscriptions.index');
+ }
+
+ public function show($subscriptionId)
+ {
+ $subscription = $this->repo->requireById($subscriptionId);
+ return view('subscriptions.show', compact('subscription'));
+ }
+
+ public function edit($subscriptionId)
+ {
+ $subscription = $this->repo->requireById($subscriptionId);
+ $projects = $this->repo->getProjectsList();
+ $customers = $this->repo->getCustomersList();
+ return view('subscriptions.edit',compact('subscription','projects','customers'));
+ }
+
+ public function update(UpdateRequest $req, $subscriptionId)
+ {
+ $subscription = $this->repo->update($req->except(['_method','_token']), $subscriptionId);
+ flash()->success(trans('subscription.updated'));
+ return redirect()->route('subscriptions.edit', $subscriptionId);
+ }
+
+ public function delete($subscriptionId)
+ {
+ $subscription = $this->repo->requireById($subscriptionId);
+ return view('subscriptions.delete', compact('subscription'));
+ }
+
+ public function destroy(DeleteRequest $req, $subscriptionId)
+ {
+ if ($subscriptionId == $req->get('subscription_id'))
+ {
+ $this->repo->delete($subscriptionId);
+ flash()->success(trans('subscription.deleted'));
+ }
+ else
+ flash()->error(trans('subscription.undeleted'));
+
+ return redirect()->route('subscriptions.index');
+ }
+
+}
diff --git a/app/Http/Requests/Subscriptions/CreateRequest.php b/app/Http/Requests/Subscriptions/CreateRequest.php
new file mode 100644
index 0000000..2b31e34
--- /dev/null
+++ b/app/Http/Requests/Subscriptions/CreateRequest.php
@@ -0,0 +1,40 @@
+user()->can('manage_subscriptions');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'domain_name' => 'required|max:60|unique:subscriptions,domain_name',
+ 'epp_code' => 'max:60',
+ 'domain_price' => 'required|numeric',
+ 'hosting_capacity' => 'max:60',
+ 'hosting_price' => 'required_with:hosting_capacity|numeric',
+ 'start_date' => 'required|date|date_format:Y-m-d',
+ 'due_date' => 'required|date|date_format:Y-m-d',
+ 'customer_id' => 'required|numeric',
+ 'project_id' => 'required|numeric',
+ 'remark' => 'max:255',
+ ];
+ }
+
+}
diff --git a/app/Http/Requests/Subscriptions/DeleteRequest.php b/app/Http/Requests/Subscriptions/DeleteRequest.php
new file mode 100644
index 0000000..675db2a
--- /dev/null
+++ b/app/Http/Requests/Subscriptions/DeleteRequest.php
@@ -0,0 +1,31 @@
+user()->can('manage_subscriptions');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'subscription_id' => 'required'
+ ];
+ }
+
+}
diff --git a/app/Http/Requests/Subscriptions/UpdateRequest.php b/app/Http/Requests/Subscriptions/UpdateRequest.php
new file mode 100644
index 0000000..058d5bd
--- /dev/null
+++ b/app/Http/Requests/Subscriptions/UpdateRequest.php
@@ -0,0 +1,40 @@
+user()->can('manage_subscriptions');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'domain_name' => 'required|max:60|unique:subscriptions,domain_name,' . $this->segment(2),
+ 'epp_code' => 'max:60',
+ 'domain_price' => 'required|numeric',
+ 'hosting_capacity' => 'max:60',
+ 'hosting_price' => 'required_with:hosting_capacity|numeric',
+ 'start_date' => 'required|date|date_format:Y-m-d',
+ 'due_date' => 'required|date|date_format:Y-m-d',
+ 'customer_id' => 'required|numeric',
+ 'project_id' => 'required|numeric',
+ 'remark' => 'max:255',
+ ];
+ }
+
+}
diff --git a/app/Http/routes.php b/app/Http/routes.php
index aa3c77c..92a925b 100644
--- a/app/Http/routes.php
+++ b/app/Http/routes.php
@@ -7,4 +7,5 @@ require __DIR__ . '/routes/references.php';
require __DIR__ . '/routes/account.php';
require __DIR__ . '/routes/backup.php';
require __DIR__ . '/routes/projects.php';
-require __DIR__ . '/routes/payments.php';
\ No newline at end of file
+require __DIR__ . '/routes/payments.php';
+require __DIR__ . '/routes/subscriptions.php';
\ No newline at end of file
diff --git a/app/Http/routes/subscriptions.php b/app/Http/routes/subscriptions.php
new file mode 100644
index 0000000..f47971a
--- /dev/null
+++ b/app/Http/routes/subscriptions.php
@@ -0,0 +1,9 @@
+ ['web','role:admin']], function() {
+ /**
+ * Subscriptions Routes
+ */
+ Route::get('subscriptions/{id}/delete', ['as'=>'subscriptions.delete', 'uses'=>'SubscriptionsController@delete']);
+ Route::resource('subscriptions','SubscriptionsController');
+});
diff --git a/app/Services/FormField.php b/app/Services/FormField.php
index 65c27d9..c9d3e6a 100644
--- a/app/Services/FormField.php
+++ b/app/Services/FormField.php
@@ -294,6 +294,7 @@ class FormField
$options['type'] = 'number';
$options['addon'] = ['before' => isset($options['currency']) ? $options['currency'] : 'Rp'];
$options['class'] = 'text-right';
+ $options['min'] = '0';
return $this->text($name, $options);
}
diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php
index 83bcdb6..c3f8680 100644
--- a/database/factories/ModelFactory.php
+++ b/database/factories/ModelFactory.php
@@ -2,6 +2,7 @@
use App\Entities\Payments\Payment;
use App\Entities\Projects\Project;
+use App\Entities\Subscriptions\Subscription;
use App\Entities\Users\User;
/*
@@ -60,4 +61,26 @@ $factory->define(Payment::class, function (Faker\Generator $faker) {
'description' => $faker->paragraph,
'customer_id' => $customerId,
];
+});
+
+$factory->define(Subscription::class, function (Faker\Generator $faker) {
+ $projectId = factory(Project::class)->create()->id;
+
+ $customer = factory(User::class)->create();
+ $customer->assignRole('customer');
+ $customerId = $customer->id;
+ $startDate = Carbon::parse($faker->dateTimeBetween('-1 year', '-1 month')->format('Y-m-d'));
+
+ return [
+ 'project_id' => $projectId,
+ 'domain_name' => 'www.' . str_random(10) . '.com',
+ 'domain_price' => 125000,
+ 'epp_code' => str_random(10),
+ 'hosting_capacity' => rand(1,3) . ' GB',
+ 'hosting_price' => rand(1,5) * 100000,
+ 'start_date' => $startDate->format('Y-m-d'),
+ 'due_date' => $startDate->addYears(1)->format('Y-m-d'),
+ 'remark' => $faker->paragraph,
+ 'customer_id' => $customerId,
+ ];
});
\ No newline at end of file
diff --git a/resources/lang/id/subscription.php b/resources/lang/id/subscription.php
new file mode 100644
index 0000000..1446da1
--- /dev/null
+++ b/resources/lang/id/subscription.php
@@ -0,0 +1,31 @@
+ 'Langganan',
+ 'subscriptions' => 'Daftar Langganan',
+ 'domain_name' => 'Domain',
+ 'domain_price' => 'Harga Domain',
+ 'epp_code' => 'Kode EPP',
+ 'hosting_capacity' => 'Kapasitas Hosting',
+ 'hosting_price' => 'Harga Hosting',
+ 'start_date' => 'Mulai Sewa',
+ 'due_date' => 'Perpanjangan',
+ 'extension_price' => 'Biaya Perpanjangan',
+ 'create' => 'Input Langganan Baru',
+ 'created' => 'Input Langganan baru telah berhasil.',
+ 'show' => 'Detail Langganan',
+ 'edit' => 'Edit Langganan',
+ 'update' => 'Update Langganan',
+ 'updated' => 'Update data Langganan telah berhasil.',
+ 'delete' => 'Hapus Langganan',
+ 'deleted' => 'Hapus data Langganan telah berhasil.',
+ 'undeleted' => 'Data Langganan gagal dihapus.',
+ 'remark' => 'Catatan',
+ 'search' => 'Cari Langganan',
+ 'found' => 'Langganan ditemukan',
+ 'not_found' => 'Langganan tidak ditemukan',
+ 'empty' => 'Belum ada Langganan',
+ 'back_to_index' => 'Kembali ke daftar Langganan',
+ 'customer' => 'Customer',
+ 'project' => 'Project',
+];
\ No newline at end of file
diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php
index 9d3bb14..fbc991d 100755
--- a/resources/views/layouts/partials/sidebar.blade.php
+++ b/resources/views/layouts/partials/sidebar.blade.php
@@ -21,6 +21,9 @@
@endcan
+ @can('manage_subscriptions')
+
{!! html_link_to_route('subscriptions.index', trans('subscription.subscription'), [], ['icon' => 'retweet']) !!}
+ @endcan
@can('manage_payments')
{!! html_link_to_route('payments.index', trans('payment.payments') . ' ', [], ['icon' => 'money']) !!}
diff --git a/resources/views/subscriptions/create.blade.php b/resources/views/subscriptions/create.blade.php
new file mode 100755
index 0000000..2b49ef5
--- /dev/null
+++ b/resources/views/subscriptions/create.blade.php
@@ -0,0 +1,55 @@
+@extends('layouts.app')
+
+@section('title', trans('subscription.create'))
+
+@section('content')
+
+ - {{ link_to_route('subscriptions.index',trans('subscription.subscriptions')) }}
+ - {{ trans('subscription.create') }}
+
+
+
+
+ {!! Form::open(['route'=>'subscriptions.store']) !!}
+
+
{{ trans('subscription.create') }}
+
+
+
+ {!! FormField::text('domain_name',['label'=> trans('subscription.domain_name')]) !!}
+
+
+ {!! FormField::price('domain_price',['label'=> trans('subscription.domain_price')]) !!}
+
+
+ {!! FormField::text('epp_code',['label'=> trans('subscription.epp_code')]) !!}
+
+
+ {!! FormField::text('hosting_capacity',['label'=> trans('subscription.hosting_capacity')]) !!}
+
+
+ {!! FormField::price('hosting_price',['label'=> trans('subscription.hosting_price')]) !!}
+
+
+
+
+ {!! FormField::text('start_date',['label'=> trans('subscription.start_date')]) !!}
+
+
+ {!! FormField::text('due_date',['label'=> trans('subscription.due_date')]) !!}
+
+
+ {!! FormField::select('customer_id', $customers,['label'=> trans('subscription.customer')]) !!}
+ {!! FormField::select('project_id', $projects,['label'=> trans('subscription.project')]) !!}
+ {!! FormField::textarea('remark',['label'=> trans('subscription.remark')]) !!}
+
+
+
+
+ {!! Form::close() !!}
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/subscriptions/delete.blade.php b/resources/views/subscriptions/delete.blade.php
new file mode 100755
index 0000000..c00d4da
--- /dev/null
+++ b/resources/views/subscriptions/delete.blade.php
@@ -0,0 +1,18 @@
+@extends('layouts.app')
+
+@section('title', trans('subscription.delete'))
+
+@section('content')
+
+
+
+ @include('subscriptions.partials.subscription-show')
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/subscriptions/edit.blade.php b/resources/views/subscriptions/edit.blade.php
new file mode 100755
index 0000000..44376d3
--- /dev/null
+++ b/resources/views/subscriptions/edit.blade.php
@@ -0,0 +1,52 @@
+@extends('layouts.app')
+
+@section('title', trans('subscription.edit'))
+
+@section('content')
+
+
+ {!! Form::model($subscription, ['route'=>['subscriptions.update', $subscription->id], 'method' => 'patch']) !!}
+
+
{{ $subscription->domain_name }} {{ trans('subscription.edit') }}
+
+
+
+ {!! FormField::text('domain_name',['label'=> trans('subscription.domain_name')]) !!}
+
+
+ {!! FormField::price('domain_price',['label'=> trans('subscription.domain_price')]) !!}
+
+
+ {!! FormField::text('epp_code',['label'=> trans('subscription.epp_code')]) !!}
+
+
+ {!! FormField::text('hosting_capacity',['label'=> trans('subscription.hosting_capacity')]) !!}
+
+
+ {!! FormField::price('hosting_price',['label'=> trans('subscription.hosting_price')]) !!}
+
+
+
+
+ {!! FormField::text('start_date',['label'=> trans('subscription.start_date')]) !!}
+
+
+ {!! FormField::text('due_date',['label'=> trans('subscription.due_date')]) !!}
+
+
+ {!! FormField::select('customer_id', $customers,['label'=> trans('subscription.customer')]) !!}
+ {!! FormField::select('project_id', $projects,['label'=> trans('subscription.project')]) !!}
+ {!! FormField::textarea('remark',['label'=> trans('subscription.remark')]) !!}
+
+
+
+
+ {!! Form::close() !!}
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/subscriptions/index.blade.php b/resources/views/subscriptions/index.blade.php
new file mode 100755
index 0000000..0a2dba1
--- /dev/null
+++ b/resources/views/subscriptions/index.blade.php
@@ -0,0 +1,51 @@
+@extends('layouts.app')
+
+@section('title', trans('subscription.subscriptions'))
+
+@section('content')
+
+
+ {!! Form::open(['method'=>'get','class'=>'form-inline']) !!}
+ {!! Form::text('q', Request::get('q'), ['class'=>'form-control index-search-field','placeholder'=>trans('subscription.search'),'style' => 'width:350px']) !!}
+ {!! Form::submit(trans('subscription.search'), ['class' => 'btn btn-info btn-sm']) !!}
+ {!! link_to_route('subscriptions.index','Reset',[],['class' => 'btn btn-default btn-sm']) !!}
+ {!! Form::close() !!}
+
+
+
+ | {{ trans('app.table_no') }} |
+ {{ trans('subscription.domain_name') }} |
+ {{ trans('subscription.hosting_capacity') }} |
+ {{ trans('subscription.start_date') }} |
+ {{ trans('subscription.due_date') }} |
+ {{ trans('subscription.extension_price') }} |
+ {{ trans('app.action') }} |
+
+
+ @forelse($subscriptions as $key => $subscription)
+ due_date)->diffInDays(Carbon::now()) < 60 ? 'class=bg-danger' : '' }}>
+ |
+ {{ $subscriptions->firstItem() + $key }}
+ |
+ {{ $subscription->domain_name }} |
+ {{ $subscription->hosting_capacity }} |
+ {{ dateId($subscription->start_date) }} |
+ {{ dateId($subscription->due_date) }} |
+ {{ formatRp($subscription->domain_price + $subscription->hosting_price) }} |
+
+ {!! link_to_route('subscriptions.show',trans('app.show'),[$subscription->id],['class'=>'btn btn-info btn-xs']) !!}
+ {!! link_to_route('subscriptions.edit',trans('app.edit'),[$subscription->id],['class'=>'btn btn-warning btn-xs']) !!}
+ |
+
+ @empty
+
+ | {{ trans('subscription.not_found') }} |
+
+ @endforelse
+
+
+ {!! str_replace('/?', '?', $subscriptions->appends(Request::except('page'))->render()) !!}
+@endsection
diff --git a/resources/views/subscriptions/partials/subscription-show.blade.php b/resources/views/subscriptions/partials/subscription-show.blade.php
new file mode 100644
index 0000000..54f3965
--- /dev/null
+++ b/resources/views/subscriptions/partials/subscription-show.blade.php
@@ -0,0 +1,28 @@
+
+
{{ trans('subscription.show') }}
+
+
+ | {{ trans('subscription.project') }} | {{ $subscription->project->name }} |
+ | {{ trans('subscription.domain_name') }} | {{ $subscription->domain_name }} |
+ | {{ trans('subscription.domain_price') }} | {{ formatRp($subscription->domain_price) }} |
+ | {{ trans('subscription.epp_code') }} | {{ $subscription->epp_code }} |
+ | {{ trans('subscription.hosting_capacity') }} | {{ $subscription->hosting_capacity }} |
+ | {{ trans('subscription.hosting_price') }} | {{ formatRp($subscription->hosting_price) }} |
+ | {{ trans('subscription.start_date') }} | {{ dateId($subscription->start_date) }} |
+ | {{ trans('subscription.due_date') }} | {{ dateId($subscription->due_date) }} |
+
+ | {{ trans('subscription.customer') }} |
+
+ {{ $subscription->present()->customerNameAndEmail }}
+ @if ($subscription->project->customer_id && auth()->id() == $subscription->project->owner_id)
+ {!! link_to_route('users.edit', 'Edit', [$subscription->customer_id], ['title' => 'Edit Data Customer']) !!}
+ @endif
+ |
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/subscriptions/show.blade.php b/resources/views/subscriptions/show.blade.php
new file mode 100755
index 0000000..98fde1d
--- /dev/null
+++ b/resources/views/subscriptions/show.blade.php
@@ -0,0 +1,12 @@
+@extends('layouts.app')
+
+@section('title', trans('subscription.show'))
+
+@section('content')
+
+
+
+ @include('subscriptions.partials.subscription-show')
+
+
+@endsection
\ No newline at end of file
diff --git a/tests/ManageSubscriptionsTest.php b/tests/ManageSubscriptionsTest.php
new file mode 100644
index 0000000..c633e3a
--- /dev/null
+++ b/tests/ManageSubscriptionsTest.php
@@ -0,0 +1,146 @@
+create();
+ $user->assignRole('admin');
+ $this->actingAs($user);
+
+ $project = factory(Project::class)->create();
+
+ $customer = factory(User::class)->create();
+ $customer->assignRole('customer');
+
+ $this->visit('subscriptions');
+ $this->seePageIs('subscriptions');
+ $this->see(trans('subscription.subscriptions'));
+ $this->click(trans('subscription.create'));
+ $this->seePageIs('subscriptions/create');
+
+ // Fill Form
+ $this->type('www.domain.com','domain_name');
+ $this->type(100000,'domain_price');
+ $this->type('100000','epp_code');
+ $this->type('3GB','hosting_capacity');
+ $this->type(500000,'hosting_price');
+ $this->type('2015-05-02','start_date');
+ $this->type('2016-05-02','due_date');
+ $this->select($project->id, 'project_id');
+ $this->select($customer->id, 'customer_id');
+ $this->type('','remark');
+ $this->press(trans('subscription.create'));
+
+ $this->seePageIs('subscriptions');
+ $this->see(trans('subscription.created'));
+ $this->seeInDatabase('subscriptions', ['project_id' => $project->id,'domain_price' => 100000,'start_date' => '2015-05-02','due_date' => '2016-05-02']);
+ }
+
+ /** @test */
+ public function admin_can_edit_subscription_data()
+ {
+ $user = factory(User::class)->create();
+ $user->assignRole('admin');
+ $this->actingAs($user);
+
+ $project = factory(Project::class)->create();
+
+ $customer = factory(User::class)->create();
+ $customer->assignRole('customer');
+
+ $subscription = factory(Subscription::class)->create(['customer_id' => $customer->id, 'project_id' => $project->id]);
+
+ $this->visit('subscriptions/' . $subscription->id . '/edit');
+ $this->seePageIs('subscriptions/' . $subscription->id . '/edit');
+
+ // Fill Form
+ $this->type($eppCode = str_random(10),'epp_code');
+ $this->type('4GB','hosting_capacity');
+ $this->type(500000,'hosting_price');
+ $this->type('2015-05-02','start_date');
+ $this->type('2016-05-02','due_date');
+ $this->press(trans('subscription.update'));
+
+ $this->seePageIs('subscriptions/' . $subscription->id . '/edit');
+ $this->see(trans('subscription.updated'));
+ $this->seeInDatabase('subscriptions', [
+ 'epp_code' => $eppCode,
+ 'customer_id' => $customer->id,
+ 'project_id' => $project->id,
+ 'hosting_capacity' => '4GB',
+ 'hosting_price' => '500000',
+ 'start_date' => '2015-05-02',
+ 'due_date' => '2016-05-02',
+ ]);
+ }
+
+ /** @test */
+ public function admin_can_delete_a_subscription()
+ {
+ $user = factory(User::class)->create();
+ $user->assignRole('admin');
+ $this->actingAs($user);
+
+ $subscription = factory(Subscription::class)->create();
+
+ $this->visit('/subscriptions');
+ $this->click(trans('app.edit'));
+ $this->click(trans('subscription.delete'));
+ $this->press(trans('app.delete_confirm_button'));
+ $this->seePageIs('subscriptions');
+ $this->see(trans('subscription.deleted'));
+ }
+
+ /** @test */
+ public function admin_can_see_a_subscription()
+ {
+ $user = factory(User::class)->create();
+ $user->assignRole('admin');
+ $this->actingAs($user);
+
+ $subscription = factory(Subscription::class)->create();
+
+ $this->visit('/subscriptions');
+ $this->click(trans('app.show'));
+ $this->seePageIs('subscriptions/' . $subscription->id);
+ $this->see(trans('subscription.show'));
+ $this->see($subscription->domain_name);
+ $this->see(formatRp($subscription->domain_price));
+ $this->see($subscription->hosting_capacity);
+ $this->see(formatRp($subscription->hosting_price));
+ $this->see(dateId($subscription->start_date));
+ $this->see(dateId($subscription->due_date));
+ }
+
+ /** @test */
+ public function admin_can_see_all_subscriptions()
+ {
+ $user = factory(User::class)->create();
+ $user->assignRole('admin');
+ $this->actingAs($user);
+
+ $subscriptions = factory(Subscription::class, 30)->create();
+ $this->assertEquals(30, $subscriptions->count());
+
+ $this->visit('/subscriptions');
+ $this->see($subscriptions[1]->domain_name);
+ $this->see($subscriptions[1]->hosting_capacity);
+ $this->see(dateId($subscriptions[1]->start_date));
+ $this->see(dateId($subscriptions[1]->due_date));
+ $this->see(formatRp($subscriptions[1]->domain_price + $subscriptions[1]->hosting_price));
+
+ $this->click('2');
+ $this->seePageIs('/subscriptions?page=2');
+ }
+}