1
1
require 'basket'
2
2
require 'catalogue'
3
+ require 'mock_db'
3
4
4
- # here's a simple mock class, but for anything more complex use a mocking framework
5
- class MockDB
6
- def execute ( s )
7
- # do nothing
8
- end
9
-
10
- def get_first_value ( s )
11
- nil
12
- end
13
- end
14
-
15
- db = MockDB . new
5
+ db = MockDb . new
16
6
17
7
describe Basket do
18
8
catalogue = Catalogue . new ( db )
19
9
describe '#initialize' do
20
10
it "is empty initially" do
21
- basket = Basket . new ( catalogue )
11
+ basket = Basket . new ( catalogue , [ ] )
22
12
# when testing methods test the data not a formatted message containing the data
23
13
expect ( basket . purchases [ 'FR1' ] ) . to eq ( 0 )
24
14
expect ( basket . purchases [ 'SR1' ] ) . to eq ( 0 )
@@ -27,14 +17,14 @@ def get_first_value(s)
27
17
end
28
18
describe '#add' do
29
19
it "can add a valid item" do
30
- basket = Basket . new ( catalogue )
20
+ basket = Basket . new ( catalogue , [ ] )
31
21
basket . add ( "FR1" )
32
22
expect ( basket . purchases [ 'FR1' ] ) . to eq ( 1 )
33
23
expect ( basket . purchases [ 'SR1' ] ) . to eq ( 0 )
34
24
expect ( basket . purchases [ 'CF1' ] ) . to eq ( 0 )
35
25
end
36
26
it "will not add an invalid item" do
37
- basket = Basket . new ( catalogue )
27
+ basket = Basket . new ( catalogue , [ ] )
38
28
basket . add ( "ZZZ" )
39
29
expect ( basket . purchases [ 'FR1' ] ) . to eq ( 0 )
40
30
expect ( basket . purchases [ 'SR1' ] ) . to eq ( 0 )
@@ -43,7 +33,7 @@ def get_first_value(s)
43
33
end
44
34
describe '#remove' do
45
35
it "can remove a valid item if present" do
46
- basket = Basket . new ( catalogue )
36
+ basket = Basket . new ( catalogue , [ ] )
47
37
basket . add ( "FR1" )
48
38
basket . add ( "FR1" )
49
39
basket . remove ( "FR1" )
@@ -52,7 +42,7 @@ def get_first_value(s)
52
42
expect ( basket . purchases [ 'CF1' ] ) . to eq ( 0 )
53
43
end
54
44
it "will not remove an invalid item" do
55
- basket = Basket . new ( catalogue )
45
+ basket = Basket . new ( catalogue , [ ] )
56
46
basket . remove ( "ZZZ" )
57
47
expect ( basket . purchases [ 'FR1' ] ) . to eq ( 0 )
58
48
expect ( basket . purchases [ 'SR1' ] ) . to eq ( 0 )
@@ -61,11 +51,11 @@ def get_first_value(s)
61
51
end
62
52
describe '#total' do
63
53
it "will be zero initially" do
64
- basket = Basket . new ( catalogue )
54
+ basket = Basket . new ( catalogue , [ ] )
65
55
expect ( basket . total ) . to eq ( 0 )
66
56
end
67
57
it "will calculate the running total" do
68
- basket = Basket . new ( catalogue )
58
+ basket = Basket . new ( catalogue , [ ] )
69
59
basket . add ( "FR1" )
70
60
basket . add ( "FR1" )
71
61
basket . add ( "CF1" )
@@ -74,7 +64,7 @@ def get_first_value(s)
74
64
end
75
65
describe '#show' do
76
66
it "will show product names and quantities" do
77
- basket = Basket . new ( catalogue )
67
+ basket = Basket . new ( catalogue , [ ] )
78
68
basket . add ( "FR1" )
79
69
basket . add ( "FR1" )
80
70
basket . add ( "CF1" )
0 commit comments