2021-07-07 15:45:40 +02:00
< ? php
/**
* Invoice Ninja ( https :// invoiceninja . com ) .
*
* @ link https :// github . com / invoiceninja / invoiceninja source repository
*
* @ copyright Copyright ( c ) 2021. Invoice Ninja LLC ( https :// invoiceninja . com )
*
* @ license https :// www . elastic . co / licensing / elastic - license
*/
namespace Tests\Browser\ClientPortal\Gateways\CheckoutCom ;
2021-07-11 17:07:14 +02:00
use App\Models\CompanyGateway ;
2021-07-07 15:45:40 +02:00
use Laravel\Dusk\Browser ;
use Tests\Browser\Pages\ClientPortal\Login ;
use Tests\DuskTestCase ;
class CreditCardTest extends DuskTestCase
{
protected function setUp () : void
{
parent :: setUp ();
foreach ( static :: $browsers as $browser ) {
$browser -> driver -> manage () -> deleteAllCookies ();
}
2021-07-11 17:07:14 +02:00
$this -> disableCompanyGateways ();
CompanyGateway :: where ( 'gateway_key' , '3758e7f7c6f4cecf0f4f348b9a00f456' ) -> restore ();
2021-07-07 15:45:40 +02:00
$this -> browse ( function ( Browser $browser ) {
$browser
-> visit ( new Login ())
-> auth ();
});
}
public function testAddingPaymentMethodShouldntBePossible ()
{
$this -> browse ( function ( Browser $browser ) {
$browser
-> visitRoute ( 'client.payment_methods.index' )
-> press ( 'Add Payment Method' )
-> clickLink ( 'Credit Card' )
-> assertSee ( 'Checkout.com can be can saved as payment method for future use, once you complete your first transaction. Don\'t forget to check "Store credit card details" during payment process.' );
});
}
2021-07-07 15:50:54 +02:00
2021-07-07 15:53:29 +02:00
public function testPayWithNewCard ()
2021-07-07 15:50:54 +02:00
{
$this -> browse ( function ( Browser $browser ) {
$browser
-> visitRoute ( 'client.invoices.index' )
-> click ( '@pay-now' )
-> press ( 'Pay Now' )
-> clickLink ( 'Credit Card' )
-> withinFrame ( 'iframe' , function ( Browser $browser ) {
$browser
-> type ( 'cardnumber' , '4242424242424242' )
-> type ( 'exp-date' , '04/22' )
-> type ( 'cvc' , '100' );
})
-> press ( '#pay-button' )
-> waitForText ( 'Details of the payment' , 60 );
});
}
2021-07-07 15:53:29 +02:00
public function testPayWithNewCardAndSaveForFutureUse ()
{
$this -> browse ( function ( Browser $browser ) {
$browser
-> visitRoute ( 'client.invoices.index' )
-> click ( '@pay-now' )
-> press ( 'Pay Now' )
-> clickLink ( 'Credit Card' )
-> withinFrame ( 'iframe' , function ( Browser $browser ) {
$browser
-> type ( 'cardnumber' , '4242424242424242' )
-> type ( 'exp-date' , '04/22' )
-> type ( 'cvc' , '100' );
})
-> radio ( '#proxy_is_default' , true )
-> press ( '#pay-button' )
-> waitForText ( 'Details of the payment' , 60 )
-> visitRoute ( 'client.payment_methods.index' )
-> clickLink ( 'View' )
-> assertSee ( '4242' );
});
}
2021-07-07 15:56:20 +02:00
public function testPayWithSavedCreditCard ()
{
$this -> browse ( function ( Browser $browser ) {
$browser
-> visitRoute ( 'client.invoices.index' )
-> click ( '@pay-now' )
-> press ( 'Pay Now' )
-> clickLink ( 'Credit Card' )
-> click ( '.toggle-payment-with-token' )
-> click ( '#pay-now-with-token' )
-> waitForText ( 'Details of the payment' , 60 );
});
}
2021-07-07 15:58:23 +02:00
public function testRemoveCreditCard ()
{
$this -> browse ( function ( Browser $browser ) {
$browser
-> visitRoute ( 'client.payment_methods.index' )
-> clickLink ( 'View' )
-> press ( 'Remove Payment Method' )
-> waitForText ( 'Confirmation' )
-> click ( '@confirm-payment-removal' )
-> assertSee ( 'Payment method has been successfully removed.' );
});
}
2021-07-07 15:45:40 +02:00
}