cartman 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +1 -0
- data/README.md +1 -1
- data/lib/cartman/cart.rb +7 -2
- data/lib/cartman/version.rb +1 -1
- data/spec/cart_spec.rb +11 -0
- metadata +2 -2
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -61,7 +61,7 @@ The `Cart` object also has some handy methods that you should be aware of:
|
|
61
61
|
- `remove_item(item)` - which, you guessed it, removes an item. This method takes an Item object, not a hash.
|
62
62
|
- `contains?(Product)` - This is a biggie. It will tell you if a certain item is in the cart. And the way it works is you pass it an object, like an instance of a Product model, and it will examine the class, and the id, and look to see if it's in the cart already. This method only works if the `:id` and `:type` keys are set in the item's data hash.
|
63
63
|
- `find(Product)` - This will return the `Item` object that represents the object passed in. It works like `contains?` and uses class, and id. It only works if the `:id` and `:type` keys are set in the item's data hash.
|
64
|
-
- `items` - this returns a magic array of all the items. I call it magic because you can call on it:
|
64
|
+
- `items` - this returns a magic array of all the items. You can also pass in a type string, which will return a magic array of all the items with a matching type. I call it magic because you can call on it:
|
65
65
|
- `each_with_object` - which will act like a regular `each` call, but the block will yield the `Item` and the object it represents by using the `:type` and `:id` keys.
|
66
66
|
- `total` - will sum all of the `cost` return values of all of the items in the cart. For this to work, the `:unit_cost` and `:quantity` fields need to be set for all items.
|
67
67
|
- `count` - which will give you the total number of items in the cart. Faster than `cart.items.size` because it doesn't load all of the item data from redis.
|
data/lib/cartman/cart.rb
CHANGED
@@ -28,8 +28,13 @@ module Cartman
|
|
28
28
|
touch
|
29
29
|
end
|
30
30
|
|
31
|
-
def items
|
32
|
-
ItemCollection.new(line_item_ids.collect{ |item_id| get_item(item_id)})
|
31
|
+
def items(type=nil)
|
32
|
+
items = ItemCollection.new(line_item_ids.collect{ |item_id| get_item(item_id)})
|
33
|
+
if type
|
34
|
+
return items.select{ |item| item.type == type }
|
35
|
+
else
|
36
|
+
return items
|
37
|
+
end
|
33
38
|
end
|
34
39
|
|
35
40
|
def contains?(object)
|
data/lib/cartman/version.rb
CHANGED
data/spec/cart_spec.rb
CHANGED
@@ -74,6 +74,7 @@ describe Cartman do
|
|
74
74
|
before(:each) do
|
75
75
|
cart.add_item(id: 17, type: "Bottle", name: "Bordeux", unit_cost: 92.12, quantity: 2)
|
76
76
|
cart.add_item(id: 34, type: "Bottle", name: "Cabernet", unit_cost: 92.12, quantity: 2)
|
77
|
+
cart.add_item(id: 35, type: "GiftCard", name: "Gift Card", unit_cost: 100.00, quantity: 1)
|
77
78
|
end
|
78
79
|
|
79
80
|
it "should return an ItemCollection of Items" do
|
@@ -82,6 +83,16 @@ describe Cartman do
|
|
82
83
|
cart.items.first.id.should eq("17")
|
83
84
|
cart.items.first.name.should eq("Bordeux")
|
84
85
|
end
|
86
|
+
|
87
|
+
it "should return all items in cart if no filter is given" do
|
88
|
+
cart.items.size.should eq(3)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should return a subset of the items if a filter is given" do
|
92
|
+
cart.items("Bottle").size.should eq(2)
|
93
|
+
cart.items("GiftCard").size.should eq(1)
|
94
|
+
cart.items("SomethingElse").size.should eq(0)
|
95
|
+
end
|
85
96
|
end
|
86
97
|
|
87
98
|
describe "#contains?(item)" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cartman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|