diff --git a/packages/Webkul/Checkout/src/Database/Factories/CartAddressFactory.php b/packages/Webkul/Checkout/src/Database/Factories/CartAddressFactory.php new file mode 100644 index 000000000..536369a49 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Factories/CartAddressFactory.php @@ -0,0 +1,18 @@ +define(CartAddress::class, function (Faker $faker) { + $now = date("Y-m-d H:i:s"); + return [ + 'first_name' => $faker->firstName(), + 'last_name' => $faker->lastName, + 'email' => $faker->email, + 'created_at' => $now, + 'updated_at' => $now, + 'address_type' => 'billing', + ]; +}); diff --git a/packages/Webkul/Checkout/src/Database/Factories/CartFactory.php b/packages/Webkul/Checkout/src/Database/Factories/CartFactory.php new file mode 100644 index 000000000..394c543c9 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Factories/CartFactory.php @@ -0,0 +1,41 @@ +define(Cart::class, function (Faker $faker) { + $now = date("Y-m-d H:i:s"); + + $lastOrder = DB::table('orders') + ->orderBy('id', 'desc') + ->select('id') + ->first(); + + $customer = factory(Customer::class)->create(); + $cartAddress = factory(CartAddress::class)->create(); + + return [ + 'is_guest' => 0, + 'is_active' => 1, + 'customer_id' => $customer->id, + 'customer_email' => $customer->email, + 'customer_first_name' => $customer->first_name, + 'customer_last_name' => $customer->last_name, + 'is_gift' => 0, + 'base_currency_code' => 'EUR', + 'channel_currency_code' => 'EUR', + 'grand_total' => 0.0000, + 'base_grand_total' => 0.0000, + 'sub_total' => 0.0000, + 'base_sub_total' => 0.0000, + 'channel_id' => 1, + 'created_at' => $now, + 'updated_at' => $now, + ]; +}); diff --git a/packages/Webkul/Checkout/src/Database/Factories/CartItemFactory.php b/packages/Webkul/Checkout/src/Database/Factories/CartItemFactory.php new file mode 100644 index 000000000..7c916f194 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Factories/CartItemFactory.php @@ -0,0 +1,16 @@ +define(CartItem::class, function (Faker $faker) { + $now = date("Y-m-d H:i:s"); + + return [ + 'created_at' => $now, + 'updated_at' => $now, + ]; +}); + diff --git a/packages/Webkul/Checkout/src/Database/Factories/CartPaymentFactory.php b/packages/Webkul/Checkout/src/Database/Factories/CartPaymentFactory.php new file mode 100644 index 000000000..3d45f70b0 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Factories/CartPaymentFactory.php @@ -0,0 +1,16 @@ +define(CartPayment::class, function (Faker $faker) { + $now = date("Y-m-d H:i:s"); + + return [ + 'created_at' => $now, + 'updated_at' => $now, + ]; +}); + diff --git a/packages/Webkul/Checkout/src/Providers/CheckoutServiceProvider.php b/packages/Webkul/Checkout/src/Providers/CheckoutServiceProvider.php index 74be9bc20..b0714c511 100755 --- a/packages/Webkul/Checkout/src/Providers/CheckoutServiceProvider.php +++ b/packages/Webkul/Checkout/src/Providers/CheckoutServiceProvider.php @@ -5,6 +5,7 @@ namespace Webkul\Checkout\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Foundation\AliasLoader; use Webkul\Checkout\Facades\Cart; +use Illuminate\Database\Eloquent\Factory as EloquentFactory; class CheckoutServiceProvider extends ServiceProvider { @@ -17,6 +18,8 @@ class CheckoutServiceProvider extends ServiceProvider $this->app->register(ModuleServiceProvider::class); $this->app->register(EventServiceProvider::class); + + $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories'); } /** @@ -48,4 +51,16 @@ class CheckoutServiceProvider extends ServiceProvider $this->app->bind('cart', 'Webkul\Checkout\Cart'); } + + /** + * Register factories. + * + * @param string $path + * + * @return void + */ + protected function registerEloquentFactoriesFrom($path): void + { + $this->app->make(EloquentFactory::class)->load($path); + } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Database/Factories/ProductDownloadableLinkFactory.php b/packages/Webkul/Product/src/Database/Factories/ProductDownloadableLinkFactory.php new file mode 100644 index 000000000..67bace113 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Factories/ProductDownloadableLinkFactory.php @@ -0,0 +1,31 @@ +define(ProductDownloadableLink::class, function (Faker $faker) { + $now = date("Y-m-d H:i:s"); + $filename = 'ProductImageExampleForUpload.jpg'; + $filepath = '/tests/_data/'; + return [ + 'url' => '', + 'file' => $filepath . $filename, + 'file_name' => $filename, + 'type' => 'file', + 'price' => 0.0000, + 'downloads' => $faker->randomNumber(1), + 'created_at' => $now, + 'updated_at' => $now, + ]; +}); + +$factory->define(ProductDownloadableLinkTranslation::class, function (Faker $faker) { + return [ + 'locale' => 'en', + 'title' => $faker->word, + ]; +}); + diff --git a/packages/Webkul/Sales/src/Database/Factories/InvoiceItemFactory.php b/packages/Webkul/Sales/src/Database/Factories/InvoiceItemFactory.php new file mode 100644 index 000000000..21cd87411 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Factories/InvoiceItemFactory.php @@ -0,0 +1,41 @@ +define(InvoiceItem::class, function (Faker $faker, array $attributes) { + + $basePrice = $faker->randomFloat(2); + $quantity = $faker->randomNumber(); + + if (! $attributes['order_item_id']) { + $attributes['order_item_id'] = function () { + return factory(OrderItem::class)->create()->id; + }; + } + + $orderItem = OrderItem::find($attributes['order_item_id']); + + return [ + 'name' => $faker->word, + 'sku' => $faker->unique()->ean13, + 'qty' => $quantity, + 'price' => $basePrice, + 'base_price' => $basePrice, + 'total' => $quantity * $basePrice, + 'base_total' => $quantity * $basePrice, + 'tax_amount' => 0, + 'base_tax_amount' => 0, + 'product_id' => $orderItem->product_id, + 'product_type' => $orderItem->product_type, + 'order_item_id' => $attributes['order_item_id'], + 'invoice_id' => function () { + return factory(Invoice::class)->create()->id; + }, + ]; +}); diff --git a/packages/Webkul/Sales/src/Database/Factories/OrderItemFactory.php b/packages/Webkul/Sales/src/Database/Factories/OrderItemFactory.php new file mode 100644 index 000000000..c9a4fc635 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Factories/OrderItemFactory.php @@ -0,0 +1,38 @@ +define(OrderItem::class, function (Faker $faker) { + $now = date("Y-m-d H:i:s"); + + $product = factory(Product::class, 'simple')->create(); + + return [ + 'sku' => $product->sku, + 'type' => $product->type, + 'name' => $product->name, + 'price' => $product->price, + 'base_price' => $product->price, + 'total' => $product->price, + 'base_total' => $product->price, + 'product_id' => $product->id, + 'qty_ordered' => 1, + 'qty_shipped' => 0, + 'qty_invoiced' => 0, + 'qty_canceled' => 0, + 'qty_refunded' => 0, + 'order_id' => function () { + return factory(Order::class)->create()->id; + }, + 'created_at' => $now, + 'updated_at' => $now, + ]; +}); + + + diff --git a/packages/Webkul/Sales/src/Database/Factories/OrderPaymentFactory.php b/packages/Webkul/Sales/src/Database/Factories/OrderPaymentFactory.php new file mode 100644 index 000000000..8a4bb49fe --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Factories/OrderPaymentFactory.php @@ -0,0 +1,17 @@ +define(OrderPayment::class, function (Faker $faker) { + $now = date("Y-m-d H:i:s"); + + return [ + 'created_at' => $now, + 'updated_at' => $now, + ]; +}); +