@@ -5,6 +5,7 @@ module DSL
5
5
module ParametersSpec
6
6
class Dummy
7
7
include Grape ::DSL ::Parameters
8
+ attr_accessor :api , :element , :parent
8
9
9
10
def validate_attributes ( *args )
10
11
@validate_attributes = *args
@@ -41,16 +42,33 @@ def validates_reader
41
42
describe Parameters do
42
43
subject { ParametersSpec ::Dummy . new }
43
44
44
- xdescribe '#use' do
45
- it 'does some thing'
45
+ describe '#use' do
46
+ before { allow ( subject . api ) . to receive ( :namespace_stackable ) . with ( :named_params ) }
47
+ let ( :options ) { { option : 'value' } }
48
+ let ( :named_params ) { { params_group : proc { } } }
49
+
50
+ it 'calls processes associated with named params' do
51
+ allow ( Grape ::DSL ::Configuration ) . to receive ( :stacked_hash_to_hash ) . and_return ( named_params )
52
+ expect ( subject ) . to receive ( :instance_exec ) . with ( options ) . and_yield
53
+ subject . use :params_group , options
54
+ end
55
+
56
+ it 'raises error when non-existent named param is called' do
57
+ allow ( Grape ::DSL ::Configuration ) . to receive ( :stacked_hash_to_hash ) . and_return ( { } )
58
+ expect { subject . use :params_group } . to raise_error ( 'Params :params_group not found!' )
59
+ end
46
60
end
47
61
48
- xdescribe '#use_scope' do
49
- it 'does some thing'
62
+ describe '#use_scope' do
63
+ it 'is alias to #use' do
64
+ expect ( subject . method ( :use_scope ) ) . to eq subject . method ( :use )
65
+ end
50
66
end
51
67
52
- xdescribe '#includes' do
53
- it 'does some thing'
68
+ describe '#includes' do
69
+ it 'is alias to #use' do
70
+ expect ( subject . method ( :includes ) ) . to eq subject . method ( :use )
71
+ end
54
72
end
55
73
56
74
describe '#requires' do
@@ -103,12 +121,40 @@ def validates_reader
103
121
end
104
122
end
105
123
106
- xdescribe '#group' do
107
- it 'does some thing'
124
+ describe '#group' do
125
+ it 'is alias to #requires' do
126
+ expect ( subject . method ( :group ) ) . to eq subject . method ( :requires )
127
+ end
108
128
end
109
129
110
- xdescribe '#params' do
111
- it 'does some thing'
130
+ describe '#params' do
131
+ it 'inherits params from parent' do
132
+ parent_params = { foo : 'bar' }
133
+ subject . parent = Object . new
134
+ allow ( subject . parent ) . to receive ( :params ) . and_return ( parent_params )
135
+ expect ( subject . params ( { } ) ) . to eq parent_params
136
+ end
137
+
138
+ describe 'when params argument is an array of hashes' do
139
+ it 'returns values of each hash for @element key' do
140
+ subject . element = :foo
141
+ expect ( subject . params ( [ { foo : 'bar' } , { foo : 'baz' } ] ) ) . to eq ( %w( bar baz ) )
142
+ end
143
+ end
144
+
145
+ describe 'when params argument is a hash' do
146
+ it 'returns value for @element key' do
147
+ subject . element = :foo
148
+ expect ( subject . params ( foo : 'bar' ) ) . to eq ( 'bar' )
149
+ end
150
+ end
151
+
152
+ describe 'when params argument is not a array or a hash' do
153
+ it 'returns empty hash' do
154
+ subject . element = Object . new
155
+ expect ( subject . params ( Object . new ) ) . to eq ( { } )
156
+ end
157
+ end
112
158
end
113
159
end
114
160
end
0 commit comments