/** * Setups test data. */ public function setUp() { parent::setUp(); $this->user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]); Auth::attempt(['email' => $this->user->email, 'password' => 'laravel-shop']); $this->cart = App\Cart::current()->add(['price' => 9.99, 'sku' => str_random(15)]); }
/** * Tests item in cart functionality. */ public function testPurchasedItemAttribute() { $user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]); Auth::attempt(['email' => $user->email, 'password' => 'laravel-shop']); $product = App\TestProduct::create(['price' => 9.99, 'sku' => str_random(15), 'name' => str_random(64), 'description' => str_random(500)]); $cart = App\Cart::current()->add($product); Shop::setGateway('testPass'); $order = Shop::placeOrder(); $this->assertTrue($order->isCompleted); $this->assertTrue($product->wasPurchased); $user->delete(); $product->delete(); }
/** * Tests if failed transactions are being created. */ public function testFailedTransactions() { // Prepare $user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]); $bool = Auth::attempt(['email' => $user->email, 'password' => 'laravel-shop']); $cart = App\Cart::current()->add(['sku' => '0001', 'price' => 1.99])->add(['sku' => '0002', 'price' => 2.99]); Shop::setGateway('testFail'); // Beging test $order = Shop::placeOrder(); $this->assertNotNull($order); $this->assertNotEmpty($order->id); $this->assertTrue($order->hasFailed); $this->assertEquals(count($order->transactions), 1); $user->delete(); }
/** * Tests a purchase and shop flow. */ public function testFailPurchase() { // Prepare $user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]); $bool = Auth::attempt(['email' => $user->email, 'password' => 'laravel-shop']); $cart = App\Cart::current()->add(['sku' => '0001', 'price' => 1.99])->add(['sku' => '0002', 'price' => 2.99]); Shop::setGateway('testFail'); $this->assertFalse(Shop::checkout()); $this->assertEquals(Shop::exception()->getMessage(), 'Checkout failed.'); $order = Shop::placeOrder(); $this->assertNotNull($order); $this->assertNotEmpty($order->id); $this->assertTrue($order->hasFailed); $this->assertEquals(Shop::exception()->getMessage(), 'Payment failed.'); $user->delete(); }
/** * Tests cart order placement. */ public function testOrderPlacement() { $cart = App\Cart::current()->add(['sku' => str_random(15), 'price' => 1.99])->add(['sku' => str_random(15), 'price' => 1.99]); $order = $cart->placeOrder(); $this->assertNotEmpty($order); $this->assertEquals($order->totalPrice, 3.98); $this->assertEquals($cart->count, 0); $this->assertEquals($order->count, 2); $this->assertTrue($order->isPending); }
/** * Tests completed orders based on total amount equals to 0. */ public function testVariedOrderTotal() { $user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]); Auth::attempt(['email' => $user->email, 'password' => 'laravel-shop']); $cart = App\Cart::current(); $cart->add(['sku' => 'ZERO0000', 'price' => 0.0])->add(['sku' => 'TEN00010', 'price' => 10.0]); Shop::setGateway('paypal'); Shop::gateway()->setCreditCard(Config::get('testing.paypal.creditcard.type'), Config::get('testing.paypal.creditcard.number'), Config::get('testing.paypal.creditcard.month'), Config::get('testing.paypal.creditcard.year'), Config::get('testing.paypal.creditcard.cvv'), Config::get('testing.paypal.creditcard.firstname'), Config::get('testing.paypal.creditcard.lastname')); $this->assertTrue(Shop::checkout()); $order = Shop::placeOrder(); $this->assertTrue($order->isCompleted); $user->delete(); }