18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/shark/rspec/fake_subscription_service/request.rb', line 18
def stub_requests
WebMock.stub_request(:post, %r{^#{host}/subscriptions}).to_return do |request|
log_info "Faking POST request with body: #{request.body}"
payload_data = JSON.parse(request.body)['data']['attributes']
object_data = ObjectCache.instance.add(payload_data)
SharkSpec.fake_response(201, data: object_data)
end
WebMock.stub_request(
:post,
%r{^#{host}/subscriptions/bulk_creation}
).to_return do |request|
log_info "Faking POST request with body: #{request.body}"
payload_data = JSON.parse(request.body)['data']['attributes']['subscriptions']
objects_data = ObjectCache.instance.add_multiple(payload_data)
SharkSpec.fake_response(201, data: objects_data)
end
WebMock.stub_request(
:post,
%r{^#{host}/subscriptions/bulk_deletion}
).to_return do |request|
log_info "Faking POST request with body: #{request.body}"
payload_data = JSON.parse(request.body)['data']['attributes']['subscriptions']
ObjectCache.instance.remove_multiple(payload_data)
SharkSpec.fake_response(204, nil)
end
WebMock.stub_request(:delete, %r{^#{host}/subscriptions/.+}).to_return do |request|
log_info "Faking DELETE request with body: #{request.body}"
id = request.uri.path.split('/')[2]
ObjectCache.instance.remove(id)
SharkSpec.fake_response(204, nil)
end
WebMock.stub_request(:get, %r{^#{host}/subscriptions}).to_return do |request|
log_info 'Faking GET request'
query_parameters = request.uri.query_values
objects_data = if query_parameters
params = {}
query_parameters.each do |key, value|
parsed_key = key.match(/filter\[(.*)\]/)[1].camelize(:lower)
params[parsed_key] = value if ALLOWED_FILTERS.include?(parsed_key)
end
ObjectCache.instance.objects.select do |subscription|
conditions = params.map do |param, value|
subscription[:attributes][param] == value
end
conditions.all?
end
else
ObjectCache.instance.objects
end
SharkSpec.fake_response(200, data: objects_data)
end
end
|