user = factory(User::class)->create(); $this->setting_credit = factory(SettingCredit::class)->create(); $this->booking = factory(Booking::class)->create([ 'user_id' => $this->user->id ]); $this->userBankSlip = factory(UserBankSlip::class)->create([ 'booking_id' => $this->booking->id ]); $this->user->attachRole(Role::Where('name','member')->first()); } public function testPost() { $response = $this->actingAs($this->user) ->postJson('/api/booking/', [ 'account_name' => 'johnny', 'account_num' => '1234567', 'bank_name' => 'myabnak', 'bank_branch' => 'banking', 'company_name' => 'besaras', 'company_address' => 'californina', 'bank_address' => 'cyber', 'swift_code' => '123wert', 'cnap' => '2131rew', 'term' => 'x2_cash', 'amount' => '14000', 'rmb_book_amount' => '2131', 'rmb_book_pay_method' => '2131rea', 'rmb_book_account_name' => '2131rew', 'rmb_book_acc_no' => '2131', 'rmb_book_bank_branch' => '2131rew', 'usd_book_amount' => '2131', 'usd_book_pay_method' => '2131rew', 'usd_book_company_name' => '2131rew', 'usd_book_company_address' => '2131rew', 'usd_book_swift_code' => '2131rew', 'usd_book_cnap' => '2131rew', 'usd_book_bank_branch' => '2131rew', 'verification_status' => '1' ]); if(14000 > $this->setting_credit->rmb_credit_limit){ $response->assertStatus(401); } else{ $response->assertStatus(201); } } public function testuploadbankslip() { Storage::fake('file'); $bankslip_path = UploadedFile::fake()->image('comp.jpg'); if(!file_exists($bankslip_path)){ $response->assertStatus(400); } $this->actingAs($this->user) ->json('POST', '/api/booking/' . $this->booking->id . '/upload-user-bankslip', [ 'file' => $bankslip_path ]) ->assertSuccessful(); } public function testUpdateBankslipAmount() { $this->actingAs($this->user) ->json('PATCH', '/api/booking/' . $this->booking->id . '/bankslip-amount', [ 'transfer_amount' => '9000' ]) ->assertSuccessful(); } public function testuploadPO() { Storage::fake('file'); $image_path = UploadedFile::fake()->image('comp.jpg'); if(!file_exists($image_path)){ $response->assertStatus(400); } $this->actingAs($this->user) ->json('POST', '/api/booking/' . $this->booking->id . '/upload-po', [ 'file' => $image_path, 'amount' => '12345' ]) ->assertSuccessful(); } public function testCancel() { $this->actingAs($this->user) ->json('POST','/api/booking/' . $this->booking->id . '/cancel', []) ->assertSuccessful(); } public function testApproveBankSlip() { $this->actingAs($this->user) ->json('POST','/api/booking/' . $this->booking->id . '/approve-bank-slip', [ 'estimated_arrival_time' => '6000' ]) ->assertSuccessful(); } public function testRejectBankSlip() { $this->actingAs($this->user) ->json('POST','/api/booking/' . $this->booking->id . '/reject-bank-slip', [ 'reject_reason' => 'Amount no enough' ]) ->assertSuccessful(); } // Only this is Admin permision required public function testUploadInvoice(){ $this->user->roles()->sync([]); $this->user->attachRole(Role::Where('name','admin')->first()); Storage::fake('invoice_path'); $invoice_path = UploadedFile::fake()->create('document.pdf'); if(!file_exists($invoice_path)){ $response->assertStatus(400); } $this->actingAs($this->user) ->json('POST', '/api/booking/' . $this->booking->id . '/upload-invoice', [ 'invoice_path' => $invoice_path, 'amount' => '12345' ]) ->assertSuccessful(); } }