From 6c34a0cd7371829a85b0fa11bdee6cb051b1a4db Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sat, 8 Apr 2017 22:42:47 +0800 Subject: [PATCH] Added CartCollection, CashDraft, and CreditDraft class --- app/Cart/CartCollection.php | 77 +++++++++++++++++++++++++++++++++++++++ app/Cart/CashDraft.php | 11 ++++++ app/Cart/CreditDraft.php | 11 ++++++ app/Cart/TransactionDraft.php | 8 ++++ tests/Unit/CartCollectionTest.php | 50 +++++++++++++++++++++++++ tests/Unit/ExampleTest.php | 20 ---------- 6 files changed, 157 insertions(+), 20 deletions(-) create mode 100644 app/Cart/CartCollection.php create mode 100644 app/Cart/CashDraft.php create mode 100644 app/Cart/CreditDraft.php create mode 100644 app/Cart/TransactionDraft.php create mode 100644 tests/Unit/CartCollectionTest.php delete mode 100644 tests/Unit/ExampleTest.php diff --git a/app/Cart/CartCollection.php b/app/Cart/CartCollection.php new file mode 100644 index 0000000..1073f3e --- /dev/null +++ b/app/Cart/CartCollection.php @@ -0,0 +1,77 @@ +session = session(); + $this->instance('drafts'); + } + + public function instance($instance = null) + { + $instance = $instance ?: 'drafts'; + + $this->instance = sprintf('%s.%s', 'transactions', $instance); + + return $this; + } + + public function currentInstance() + { + return str_replace('transactions.', '', $this->instance); + } + + public function add(TransactionDraft $draft) + { + $content = $this->getContent(); + $draft->draftKey = str_random(10); + $content->put($draft->draftKey, $draft); + + $this->session->put($this->instance, $content); + + return $draft; + } + + public function content() + { + if (is_null($this->session->get($this->instance))) { + return collect([]); + } + + return $this->session->get($this->instance); + } + + protected function getContent() + { + $content = $this->session->has($this->instance) ? $this->session->get($this->instance) : collect([]); + + return $content; + } + + public function count() + { + return $this->getContent()->count(); + } + + public function isEmpty() + { + return $this->count() == 0; + } + + public function hasContent() + { + return !$this->isEmpty(); + } + +} \ No newline at end of file diff --git a/app/Cart/CashDraft.php b/app/Cart/CashDraft.php new file mode 100644 index 0000000..54d0f47 --- /dev/null +++ b/app/Cart/CashDraft.php @@ -0,0 +1,11 @@ +assertEquals('drafts', $cart->currentInstance()); + } + + /** @test */ + public function it_can_have_multiple_instances() + { + $cart = new CartCollection; + + $cashDraft = new CashDraft; + $creditDraft = new CreditDraft; + + $cart->add($cashDraft); + $cart->add($creditDraft); + + $cart->instance('wishlist')->add($cashDraft); + $cart->instance('wishlist')->add($creditDraft); + + $this->assertCount(2, $cart->instance('drafts')->content()); + $this->assertCount(2, $cart->instance('wishlist')->content()); + } + + /** @test */ + public function cart_collection_consist_of_transacion_draft_class() + { + $cart = new CartCollection; + $cashDraft = new CashDraft; + $creditDraft = new CreditDraft; + + $cart->add($cashDraft); + $cart->add($creditDraft); + + $this->assertCount(2, $cart->content()); + $this->assertTrue($cart->hasContent()); + } +} diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php deleted file mode 100644 index 5663bb4..0000000 --- a/tests/Unit/ExampleTest.php +++ /dev/null @@ -1,20 +0,0 @@ -assertTrue(true); - } -}