lhs 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +38 -0
  3. data/Gemfile +11 -0
  4. data/README.md +67 -0
  5. data/Rakefile +26 -0
  6. data/docs/collections.md +28 -0
  7. data/docs/data.md +39 -0
  8. data/docs/examples/claim_no_include.json +16 -0
  9. data/docs/examples/claim_with_include.json +47 -0
  10. data/docs/items.md +55 -0
  11. data/docs/service.jpg +0 -0
  12. data/docs/service.pdf +649 -3
  13. data/docs/services.md +191 -0
  14. data/lhs.gemspec +31 -0
  15. data/lib/lhs.rb +6 -0
  16. data/lib/lhs/collection.rb +78 -0
  17. data/lib/lhs/concerns/data/json.rb +12 -0
  18. data/lib/lhs/concerns/item/destroy.rb +15 -0
  19. data/lib/lhs/concerns/item/save.rb +29 -0
  20. data/lib/lhs/concerns/item/update.rb +24 -0
  21. data/lib/lhs/concerns/service/all.rb +24 -0
  22. data/lib/lhs/concerns/service/batch.rb +37 -0
  23. data/lib/lhs/concerns/service/build.rb +17 -0
  24. data/lib/lhs/concerns/service/create.rb +26 -0
  25. data/lib/lhs/concerns/service/endpoints.rb +82 -0
  26. data/lib/lhs/concerns/service/find.rb +36 -0
  27. data/lib/lhs/concerns/service/find_by.rb +35 -0
  28. data/lib/lhs/concerns/service/first.rb +19 -0
  29. data/lib/lhs/concerns/service/includes.rb +21 -0
  30. data/lib/lhs/concerns/service/mapping.rb +23 -0
  31. data/lib/lhs/concerns/service/model.rb +16 -0
  32. data/lib/lhs/concerns/service/request.rb +96 -0
  33. data/lib/lhs/concerns/service/where.rb +16 -0
  34. data/lib/lhs/data.rb +103 -0
  35. data/lib/lhs/errors.rb +86 -0
  36. data/lib/lhs/item.rb +83 -0
  37. data/lib/lhs/proxy.rb +26 -0
  38. data/lib/lhs/service.rb +20 -0
  39. data/lib/lhs/version.rb +3 -0
  40. data/script/ci/build.sh +19 -0
  41. data/spec/collection/meta_data_spec.rb +54 -0
  42. data/spec/collection/respond_to_spec.rb +19 -0
  43. data/spec/collection/without_object_items_spec.rb +26 -0
  44. data/spec/data/collection_spec.rb +36 -0
  45. data/spec/data/item_spec.rb +44 -0
  46. data/spec/data/merge_spec.rb +32 -0
  47. data/spec/data/raw_spec.rb +39 -0
  48. data/spec/data/respond_to_spec.rb +26 -0
  49. data/spec/data/root_spec.rb +25 -0
  50. data/spec/data/to_json_spec.rb +39 -0
  51. data/spec/dummy/README.rdoc +28 -0
  52. data/spec/dummy/Rakefile +6 -0
  53. data/spec/dummy/app/assets/images/.keep +0 -0
  54. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  55. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  56. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  57. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  58. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  59. data/spec/dummy/app/mailers/.keep +0 -0
  60. data/spec/dummy/app/models/.keep +0 -0
  61. data/spec/dummy/app/models/concerns/.keep +0 -0
  62. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  63. data/spec/dummy/bin/bundle +3 -0
  64. data/spec/dummy/bin/rails +4 -0
  65. data/spec/dummy/bin/rake +4 -0
  66. data/spec/dummy/config.ru +4 -0
  67. data/spec/dummy/config/application.rb +14 -0
  68. data/spec/dummy/config/boot.rb +5 -0
  69. data/spec/dummy/config/environment.rb +5 -0
  70. data/spec/dummy/config/environments/development.rb +34 -0
  71. data/spec/dummy/config/environments/production.rb +75 -0
  72. data/spec/dummy/config/environments/test.rb +39 -0
  73. data/spec/dummy/config/initializers/assets.rb +8 -0
  74. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  75. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  76. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  77. data/spec/dummy/config/initializers/inflections.rb +16 -0
  78. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  79. data/spec/dummy/config/initializers/session_store.rb +3 -0
  80. data/spec/dummy/config/initializers/wrap_parameters.rb +9 -0
  81. data/spec/dummy/config/locales/en.yml +23 -0
  82. data/spec/dummy/config/routes.rb +56 -0
  83. data/spec/dummy/config/secrets.yml +22 -0
  84. data/spec/dummy/lib/assets/.keep +0 -0
  85. data/spec/dummy/public/404.html +67 -0
  86. data/spec/dummy/public/422.html +67 -0
  87. data/spec/dummy/public/500.html +66 -0
  88. data/spec/dummy/public/favicon.ico +0 -0
  89. data/spec/item/destroy_spec.rb +39 -0
  90. data/spec/item/getter_spec.rb +24 -0
  91. data/spec/item/respond_to_spec.rb +29 -0
  92. data/spec/item/save_errors_spec.rb +48 -0
  93. data/spec/item/save_spec.rb +58 -0
  94. data/spec/item/setter_spec.rb +38 -0
  95. data/spec/item/update_spec.rb +56 -0
  96. data/spec/proxy/load_spec.rb +47 -0
  97. data/spec/rails_helper.rb +9 -0
  98. data/spec/service/all_spec.rb +31 -0
  99. data/spec/service/build_spec.rb +25 -0
  100. data/spec/service/create_spec.rb +81 -0
  101. data/spec/service/creation_failed_spec.rb +54 -0
  102. data/spec/service/endpoint_misconfiguration_spec.rb +26 -0
  103. data/spec/service/endpoint_options_spec.rb +23 -0
  104. data/spec/service/endpoints_spec.rb +57 -0
  105. data/spec/service/find_by_spec.rb +49 -0
  106. data/spec/service/find_each_spec.rb +47 -0
  107. data/spec/service/find_in_batches_spec.rb +68 -0
  108. data/spec/service/find_spec.rb +71 -0
  109. data/spec/service/first_spec.rb +39 -0
  110. data/spec/service/includes_spec.rb +61 -0
  111. data/spec/service/mapping_spec.rb +72 -0
  112. data/spec/service/model_name_spec.rb +17 -0
  113. data/spec/service/request_spec.rb +22 -0
  114. data/spec/service/where_spec.rb +33 -0
  115. data/spec/spec_helper.rb +4 -0
  116. data/spec/support/cleanup_configuration.rb +17 -0
  117. data/spec/support/cleanup_services.rb +20 -0
  118. data/spec/support/fixtures/json/feedback.json +11 -0
  119. data/spec/support/fixtures/json/feedbacks.json +174 -0
  120. data/spec/support/fixtures/json/localina_content_ad.json +23 -0
  121. data/spec/support/load_json.rb +3 -0
  122. metadata +346 -0
@@ -0,0 +1,72 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Service do
4
+
5
+ context 'mapping' do
6
+
7
+ let(:datastore) { 'http://datastore-stg.lb-service.sunrise.intra.local.ch/v2' }
8
+
9
+ before(:each) do
10
+ LHC.config.placeholder('datastore', datastore)
11
+ class LocalEntry < LHS::Service
12
+ endpoint ':datastore/local-entries'
13
+ end
14
+ end
15
+
16
+ it 'maps some attr accessors to another target (proxy)' do
17
+ class LocalEntry < LHS::Service
18
+ map :name, ->(entry){ entry.addresses.first.business.identities.first.name }
19
+ end
20
+ stub_request(:get, "#{datastore}/local-entries/1")
21
+ .to_return(status: 200, body: {addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}.to_json)
22
+ entry = LocalEntry.find(1)
23
+ expect(entry.name).to eq 'Löwenzorn'
24
+ end
25
+
26
+ it 'maps for root_item even if that item is nested in a root collection' do
27
+ class LocalEntry < LHS::Service
28
+ map :name, ->(entry){ entry.addresses.first.business.identities.first.name }
29
+ end
30
+ stub_request(:get, "#{datastore}/local-entries/1?limit=1")
31
+ .to_return(status: 200, body: {items: [{addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}]}.to_json)
32
+ entry = LocalEntry.find_by(id: 1)
33
+ expect(entry.name).to eq 'Löwenzorn'
34
+ end
35
+
36
+ it 'return data proxy in case of item or collection' do
37
+ class LocalEntry < LHS::Service
38
+ map :business, ->(entry){ entry.addresses.first.business }
39
+ end
40
+ stub_request(:get, "#{datastore}/local-entries/1")
41
+ .to_return(status: 200, body: {addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}.to_json)
42
+ entry = LocalEntry.find(1)
43
+ expect(entry.business).to be_kind_of LHS::Data
44
+ end
45
+
46
+ it 'clones mappings when using include' do
47
+ class Agb < LHS::Service
48
+ endpoint ":datastore/agbs/active?agb_type=CC_TOU"
49
+ map :pdf_url, ->(agb) { agb['binary_url_pdf_de'] }
50
+ end
51
+
52
+ preceding_agb_url = "#{datastore}/agbs/547f0b461c266c4830ea6cea"
53
+ # initial request
54
+ stub_request(:get, "#{datastore}/agbs/active?agb_type=CC_TOU&limit=1").
55
+ to_return(
56
+ status: 200,
57
+ body: {
58
+ 'href' => "#{datastore}/agbs/547f02c61c266c4830ea6ce7",
59
+ 'preceding_agb' => { 'href' => preceding_agb_url },
60
+ 'binary_url_pdf_de' => 'de'
61
+ }.to_json)
62
+
63
+ # includes request
64
+ stub_request(:get, preceding_agb_url).to_return(
65
+ status: 200, body: { 'href' => preceding_agb_url }.to_json, headers: {}
66
+ )
67
+
68
+ agb = Agb.includes(:preceding_agb).first!
69
+ expect(agb.pdf_url).to be == 'de'
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,17 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Service do
4
+
5
+ context 'model_name' do
6
+
7
+ before(:each) do
8
+ class LocalEntry < LHS::Service
9
+ endpoint ':datastore/local-entries'
10
+ end
11
+ end
12
+
13
+ it 'provides a model name' do
14
+ expect(LocalEntry.model_name.name).to eq 'LocalEntry'
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Service do
4
+
5
+ context 'url pattern' do
6
+
7
+ let(:datastore) { 'http://datastore-stg.lb-service.sunrise.intra.local.ch/v2' }
8
+
9
+ before(:each) do
10
+ LHC.config.placeholder(:datastore, datastore)
11
+ class SomeService < LHS::Service
12
+ endpoint ':datastore/content-ads/:campaign_id/feedbacks'
13
+ endpoint ':datastore/feedbacks'
14
+ end
15
+ end
16
+
17
+ it 'is using params as query params explicitly when provided in params namespace' do
18
+ stub_request(:get, "#{datastore}/content-ads/123/feedbacks?campaign_id=456").to_return(status: 200)
19
+ SomeService.where(campaign_id: 123, params: { campaign_id: '456' })
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,33 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Service do
4
+
5
+ let(:datastore) do
6
+ 'http://datastore.lb-service/v2'
7
+ end
8
+
9
+ before(:each) do
10
+ LHC.config.placeholder('datastore', datastore)
11
+ class SomeService < LHS::Service
12
+ endpoint ':datastore/v2/content-ads/:campaign_id/feedbacks'
13
+ endpoint ':datastore/v2/feedbacks'
14
+ end
15
+ end
16
+
17
+ context 'where' do
18
+
19
+ it 'is querying relevant endpoint when using where' do
20
+ stub_request(:get, "#{datastore}/v2/feedbacks?has_review=true").to_return(status: 200)
21
+ SomeService.where(has_review: true)
22
+ stub_request(:get, "#{datastore}/v2/content-ads/123/feedbacks?has_review=true").to_return(status: 200)
23
+ SomeService.where(campaign_id: '123', has_review: true)
24
+ stub_request(:get, "#{datastore}/v2/feedbacks").to_return(status: 200, body: '')
25
+ SomeService.where
26
+ end
27
+
28
+ it 'is using params as query params explicitly when provided in params namespace' do
29
+ stub_request(:get, "#{datastore}/v2/content-ads/123/feedbacks?campaign_id=456").to_return(status: 200)
30
+ SomeService.where(campaign_id: '123', params: { campaign_id: '456' })
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ require 'pry'
2
+ require 'webmock/rspec'
3
+
4
+ Dir[File.join(__dir__, "support/**/*.rb")].each {|f| require f}
@@ -0,0 +1,17 @@
1
+ require 'lhc'
2
+ class LHC::Config
3
+
4
+ def _cleanup
5
+ @endpoints = {}
6
+ @placeholders = {}
7
+ @interceptors = nil
8
+ end
9
+ end
10
+
11
+ RSpec.configure do |config|
12
+
13
+ config.before(:each) do
14
+ LHC::Config.instance._cleanup
15
+ end
16
+
17
+ end
@@ -0,0 +1,20 @@
1
+ class LHS::Service
2
+
3
+ CHILDREN = []
4
+
5
+ def self.inherited(child)
6
+ CHILDREN.push(child)
7
+ super
8
+ end
9
+
10
+ end
11
+
12
+
13
+ RSpec.configure do |config|
14
+
15
+ config.before(:each) do
16
+ LHS::Service::CHILDREN.each do |child|
17
+ child.instance.endpoints = [] if !child.name['LHS']
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ {
2
+ "href": "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/-Sc4_pYNpqfsudzhtivfkA",
3
+ "campaign": {
4
+ "href": "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc5690cf271c375c5a12d"
5
+ },
6
+ "source_id": "aaa",
7
+ "recommended": true,
8
+ "modified": "2014-09-19T14:03:35.599+02:00",
9
+ "created_date": "2014-09-19T14:03:35.597+02:00",
10
+ "comments": []
11
+ }
@@ -0,0 +1,174 @@
1
+ {
2
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/?exclude_hidden=false&offset=0&limit=10",
3
+ "items" : [ {
4
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/0sdaetZ-OWVg4oBiBJ-7IQ",
5
+ "campaign" : {
6
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc5690cf271c375c5a12d"
7
+ },
8
+ "source_id" : "aaa",
9
+ "recommended" : true,
10
+ "ratings" : {
11
+ "ambiente" : 4,
12
+ "service" : 2,
13
+ "food" : 3
14
+ },
15
+ "valid_from" : "2014-10-01",
16
+ "modified" : "2014-09-18T16:13:32.987+02:00",
17
+ "created_date" : "2014-09-18T16:13:31.496+02:00",
18
+ "average_rating" : 3.0,
19
+ "comments" : [ ]
20
+ }, {
21
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/QsUOQWNJoB-GFUNsX7z0jg",
22
+ "campaign" : {
23
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc5690cf271c375c5a11f"
24
+ },
25
+ "source_id" : "abcdefghs12345",
26
+ "name" : "Steve",
27
+ "recommended" : true,
28
+ "ratings" : {
29
+ "ambiente" : 3,
30
+ "service" : 5,
31
+ "food" : 2
32
+ },
33
+ "valid_from" : "2014-10-01",
34
+ "modified" : "2014-09-18T15:43:12.134+02:00",
35
+ "created_date" : "2014-09-18T15:42:57.892+02:00",
36
+ "review_title" : "GUMMYBEARS GUMMYBEARS GUMMYBEARS",
37
+ "review" : "GUMMYBEARS! ... WOAH, STEVE! No, we both know how you get when you eat gummybears!",
38
+ "average_rating" : 3.3333333333333335,
39
+ "comments" : [ ]
40
+ }, {
41
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/QynNtmpXlsEGvUJ0ekDKVw",
42
+ "campaign" : {
43
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc56b0cf271c375c5a14d"
44
+ },
45
+ "source_id" : "abcdefghs12345",
46
+ "name" : "Steve",
47
+ "recommended" : true,
48
+ "ratings" : {
49
+ "ambiente" : 3,
50
+ "service" : 5,
51
+ "food" : 2
52
+ },
53
+ "valid_from" : "2014-10-01",
54
+ "modified" : "2014-09-17T11:17:39.660+02:00",
55
+ "created_date" : "2014-09-17T11:17:34.234+02:00",
56
+ "review_title" : "GUMMYBEARS GUMMYBEARS GUMMYBEARS",
57
+ "review" : "GUMMYBEARS! ... WOAH, STEVE! No, we both know how you get when you eat gummybears!",
58
+ "average_rating" : 3.3333333333333335,
59
+ "comments" : [ ]
60
+ }, {
61
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/INmminYWNZwW_qNFx5peJQ",
62
+ "campaign" : {
63
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc56b0cf271c375c5a153"
64
+ },
65
+ "source_id" : "abcdefghs12345",
66
+ "name" : "Steve",
67
+ "recommended" : true,
68
+ "ratings" : {
69
+ "ambiente" : 3,
70
+ "service" : 5,
71
+ "food" : 2
72
+ },
73
+ "valid_from" : "2014-10-01",
74
+ "modified" : "2014-09-16T11:20:32.600+02:00",
75
+ "created_date" : "2014-09-16T11:20:30.194+02:00",
76
+ "review_title" : "GUMMYBEARS GUMMYBEARS GUMMYBEARS",
77
+ "review" : "GUMMYBEARS! ... WOAH, STEVE! No, we both know how you get when you eat gummybears!",
78
+ "average_rating" : 3.3333333333333335,
79
+ "comments" : [ ]
80
+ }, {
81
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/ltgfr0VRYDN2nxyC119wTg",
82
+ "campaign" : {
83
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc56b0cf271c375c5a14c"
84
+ },
85
+ "source_id" : "aaa",
86
+ "recommended" : false,
87
+ "ratings" : {
88
+ "ambiente" : 2,
89
+ "service" : 1,
90
+ "food" : 1
91
+ },
92
+ "valid_from" : "2014-10-01",
93
+ "modified" : "2014-09-15T16:23:54.898+02:00",
94
+ "created_date" : "2014-09-15T16:23:40.355+02:00",
95
+ "average_rating" : 1.3333333333333333,
96
+ "comments" : [ ]
97
+ }, {
98
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/5dUdQP-kZ6sulN8NtpGXTw",
99
+ "campaign" : {
100
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc56b0cf271c375c5a14c"
101
+ },
102
+ "source_id" : "abcdefghs12345",
103
+ "name" : "Steve",
104
+ "recommended" : true,
105
+ "ratings" : {
106
+ "ambiente" : 3,
107
+ "service" : 5,
108
+ "food" : 2
109
+ },
110
+ "valid_from" : "2014-10-01",
111
+ "modified" : "2014-09-12T13:10:51.220+02:00",
112
+ "created_date" : "2014-09-12T13:10:48.813+02:00",
113
+ "review_title" : "GUMMYBEARS GUMMYBEARS GUMMYBEARS",
114
+ "review" : "GUMMYBEARS! ... WOAH, STEVE! No, we both know how you get when you eat gummybears!",
115
+ "average_rating" : 3.3333333333333335,
116
+ "comments" : [ ]
117
+ }, {
118
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/Z3KfWzIEQ3ZVCUj2IdrSNQ",
119
+ "campaign" : {
120
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc5690cf271c375c5a12e"
121
+ },
122
+ "source_id" : "abcdefghs",
123
+ "recommended" : true,
124
+ "valid_from" : "2014-10-01",
125
+ "modified" : "2014-09-10T16:57:36.255+02:00",
126
+ "created_date" : "2014-09-10T16:57:36.254+02:00",
127
+ "comments" : [ ]
128
+ }, {
129
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/ZUUUeiw-Stw5Zb1baHDUzQ",
130
+ "campaign" : {
131
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc5690cf271c375c5a12d"
132
+ },
133
+ "source_id" : "abcdefghs",
134
+ "recommended" : true,
135
+ "valid_from" : "2014-10-01",
136
+ "modified" : "2014-09-10T16:57:32.792+02:00",
137
+ "created_date" : "2014-09-10T16:57:32.791+02:00",
138
+ "comments" : [ ]
139
+ }, {
140
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/GyeWvhEtU4cYN_5T2FX2UA",
141
+ "campaign" : {
142
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/539266ec0cf2cd754583cfa0"
143
+ },
144
+ "source_id" : "abcdefghs",
145
+ "name" : "aa",
146
+ "recommended" : true,
147
+ "ratings" : {
148
+ "ambiente" : 2,
149
+ "service" : 4,
150
+ "food" : 3
151
+ },
152
+ "valid_from" : "2014-10-01",
153
+ "modified" : "2014-09-11T09:48:19.096+02:00",
154
+ "created_date" : "2014-09-10T16:35:39.201+02:00",
155
+ "review_title" : "bbb",
156
+ "review" : "fff",
157
+ "average_rating" : 3.0,
158
+ "comments" : [ ]
159
+ }, {
160
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/feedbacks/o-qTRqQGFS3Z_RPJm1f8SA",
161
+ "campaign" : {
162
+ "href" : "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc56c0cf271c375c5a160"
163
+ },
164
+ "source_id" : "abcdefghs12345",
165
+ "recommended" : true,
166
+ "valid_from" : "2014-10-01",
167
+ "modified" : "2014-09-10T16:31:52.493+02:00",
168
+ "created_date" : "2014-09-10T16:31:52.492+02:00",
169
+ "comments" : [ ]
170
+ } ],
171
+ "total" : 98,
172
+ "offset" : 0,
173
+ "limit" : 10
174
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "href": "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc5690cf271c375c5a12d",
3
+ "id": "51dfc5690cf271c375c5a12d",
4
+ "product": "BKE",
5
+ "hidden": false,
6
+ "contract_type": "published",
7
+ "source_id": "123",
8
+ "phone_number": "0041562227764",
9
+ "type": "LOCALINA",
10
+ "feedbacks": {
11
+ "href": "http://datastore-stg.lb-service.sunrise.intra.local.ch/v2/content-ads/51dfc5690cf271c375c5a12d/feedbacks?exclude_hidden=false&offset=0&limit=10"
12
+ },
13
+ "aggregated_feedback": {
14
+ "recommendation": 1,
15
+ "number_of_feedbacks": 2,
16
+ "number_of_reviews": 0,
17
+ "number_of_ratings": 0
18
+ },
19
+ "online_booking": {
20
+ "max_persons_plus_sign": true,
21
+ "max_persons_per_reservation": 8
22
+ }
23
+ }
@@ -0,0 +1,3 @@
1
+ def load_json(name)
2
+ File.read("spec/support/fixtures/json/#{name}.json")
3
+ end
metadata ADDED
@@ -0,0 +1,346 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lhs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - local.ch
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lhc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: lhc-core-interceptors
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 4.0.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 4.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: geminabox
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Rails gem providing an easy interface to use http services here at local
112
+ email:
113
+ - ws-operations@local.ch
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - Gemfile
120
+ - README.md
121
+ - Rakefile
122
+ - docs/collections.md
123
+ - docs/data.md
124
+ - docs/examples/claim_no_include.json
125
+ - docs/examples/claim_with_include.json
126
+ - docs/items.md
127
+ - docs/service.jpg
128
+ - docs/service.pdf
129
+ - docs/services.md
130
+ - lhs.gemspec
131
+ - lib/lhs.rb
132
+ - lib/lhs/collection.rb
133
+ - lib/lhs/concerns/data/json.rb
134
+ - lib/lhs/concerns/item/destroy.rb
135
+ - lib/lhs/concerns/item/save.rb
136
+ - lib/lhs/concerns/item/update.rb
137
+ - lib/lhs/concerns/service/all.rb
138
+ - lib/lhs/concerns/service/batch.rb
139
+ - lib/lhs/concerns/service/build.rb
140
+ - lib/lhs/concerns/service/create.rb
141
+ - lib/lhs/concerns/service/endpoints.rb
142
+ - lib/lhs/concerns/service/find.rb
143
+ - lib/lhs/concerns/service/find_by.rb
144
+ - lib/lhs/concerns/service/first.rb
145
+ - lib/lhs/concerns/service/includes.rb
146
+ - lib/lhs/concerns/service/mapping.rb
147
+ - lib/lhs/concerns/service/model.rb
148
+ - lib/lhs/concerns/service/request.rb
149
+ - lib/lhs/concerns/service/where.rb
150
+ - lib/lhs/data.rb
151
+ - lib/lhs/errors.rb
152
+ - lib/lhs/item.rb
153
+ - lib/lhs/proxy.rb
154
+ - lib/lhs/service.rb
155
+ - lib/lhs/version.rb
156
+ - script/ci/build.sh
157
+ - spec/.DS_Store
158
+ - spec/collection/meta_data_spec.rb
159
+ - spec/collection/respond_to_spec.rb
160
+ - spec/collection/without_object_items_spec.rb
161
+ - spec/data/collection_spec.rb
162
+ - spec/data/item_spec.rb
163
+ - spec/data/merge_spec.rb
164
+ - spec/data/raw_spec.rb
165
+ - spec/data/respond_to_spec.rb
166
+ - spec/data/root_spec.rb
167
+ - spec/data/to_json_spec.rb
168
+ - spec/dummy/README.rdoc
169
+ - spec/dummy/Rakefile
170
+ - spec/dummy/app/assets/images/.keep
171
+ - spec/dummy/app/assets/javascripts/application.js
172
+ - spec/dummy/app/assets/stylesheets/application.css
173
+ - spec/dummy/app/controllers/application_controller.rb
174
+ - spec/dummy/app/controllers/concerns/.keep
175
+ - spec/dummy/app/helpers/application_helper.rb
176
+ - spec/dummy/app/mailers/.keep
177
+ - spec/dummy/app/models/.keep
178
+ - spec/dummy/app/models/concerns/.keep
179
+ - spec/dummy/app/views/layouts/application.html.erb
180
+ - spec/dummy/bin/bundle
181
+ - spec/dummy/bin/rails
182
+ - spec/dummy/bin/rake
183
+ - spec/dummy/config.ru
184
+ - spec/dummy/config/application.rb
185
+ - spec/dummy/config/boot.rb
186
+ - spec/dummy/config/environment.rb
187
+ - spec/dummy/config/environments/development.rb
188
+ - spec/dummy/config/environments/production.rb
189
+ - spec/dummy/config/environments/test.rb
190
+ - spec/dummy/config/initializers/assets.rb
191
+ - spec/dummy/config/initializers/backtrace_silencers.rb
192
+ - spec/dummy/config/initializers/cookies_serializer.rb
193
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
194
+ - spec/dummy/config/initializers/inflections.rb
195
+ - spec/dummy/config/initializers/mime_types.rb
196
+ - spec/dummy/config/initializers/session_store.rb
197
+ - spec/dummy/config/initializers/wrap_parameters.rb
198
+ - spec/dummy/config/locales/en.yml
199
+ - spec/dummy/config/routes.rb
200
+ - spec/dummy/config/secrets.yml
201
+ - spec/dummy/lib/assets/.keep
202
+ - spec/dummy/log/.keep
203
+ - spec/dummy/public/404.html
204
+ - spec/dummy/public/422.html
205
+ - spec/dummy/public/500.html
206
+ - spec/dummy/public/favicon.ico
207
+ - spec/item/destroy_spec.rb
208
+ - spec/item/getter_spec.rb
209
+ - spec/item/respond_to_spec.rb
210
+ - spec/item/save_errors_spec.rb
211
+ - spec/item/save_spec.rb
212
+ - spec/item/setter_spec.rb
213
+ - spec/item/update_spec.rb
214
+ - spec/proxy/load_spec.rb
215
+ - spec/rails_helper.rb
216
+ - spec/service/all_spec.rb
217
+ - spec/service/build_spec.rb
218
+ - spec/service/create_spec.rb
219
+ - spec/service/creation_failed_spec.rb
220
+ - spec/service/endpoint_misconfiguration_spec.rb
221
+ - spec/service/endpoint_options_spec.rb
222
+ - spec/service/endpoints_spec.rb
223
+ - spec/service/find_by_spec.rb
224
+ - spec/service/find_each_spec.rb
225
+ - spec/service/find_in_batches_spec.rb
226
+ - spec/service/find_spec.rb
227
+ - spec/service/first_spec.rb
228
+ - spec/service/includes_spec.rb
229
+ - spec/service/mapping_spec.rb
230
+ - spec/service/model_name_spec.rb
231
+ - spec/service/request_spec.rb
232
+ - spec/service/where_spec.rb
233
+ - spec/spec_helper.rb
234
+ - spec/support/cleanup_configuration.rb
235
+ - spec/support/cleanup_services.rb
236
+ - spec/support/fixtures/json/feedback.json
237
+ - spec/support/fixtures/json/feedbacks.json
238
+ - spec/support/fixtures/json/localina_content_ad.json
239
+ - spec/support/load_json.rb
240
+ homepage: https://github.com/local-ch/lhs
241
+ licenses: []
242
+ metadata: {}
243
+ post_install_message:
244
+ rdoc_options: []
245
+ require_paths:
246
+ - lib
247
+ required_ruby_version: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: 1.9.2
252
+ required_rubygems_version: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ requirements:
258
+ - Ruby >= 1.9.2
259
+ rubyforge_project:
260
+ rubygems_version: 2.2.2
261
+ signing_key:
262
+ specification_version: 4
263
+ summary: LocalHttpServices
264
+ test_files:
265
+ - spec/collection/meta_data_spec.rb
266
+ - spec/collection/respond_to_spec.rb
267
+ - spec/collection/without_object_items_spec.rb
268
+ - spec/data/collection_spec.rb
269
+ - spec/data/item_spec.rb
270
+ - spec/data/merge_spec.rb
271
+ - spec/data/raw_spec.rb
272
+ - spec/data/respond_to_spec.rb
273
+ - spec/data/root_spec.rb
274
+ - spec/data/to_json_spec.rb
275
+ - spec/dummy/README.rdoc
276
+ - spec/dummy/Rakefile
277
+ - spec/dummy/app/assets/images/.keep
278
+ - spec/dummy/app/assets/javascripts/application.js
279
+ - spec/dummy/app/assets/stylesheets/application.css
280
+ - spec/dummy/app/controllers/application_controller.rb
281
+ - spec/dummy/app/controllers/concerns/.keep
282
+ - spec/dummy/app/helpers/application_helper.rb
283
+ - spec/dummy/app/mailers/.keep
284
+ - spec/dummy/app/models/.keep
285
+ - spec/dummy/app/models/concerns/.keep
286
+ - spec/dummy/app/views/layouts/application.html.erb
287
+ - spec/dummy/bin/bundle
288
+ - spec/dummy/bin/rails
289
+ - spec/dummy/bin/rake
290
+ - spec/dummy/config.ru
291
+ - spec/dummy/config/application.rb
292
+ - spec/dummy/config/boot.rb
293
+ - spec/dummy/config/environment.rb
294
+ - spec/dummy/config/environments/development.rb
295
+ - spec/dummy/config/environments/production.rb
296
+ - spec/dummy/config/environments/test.rb
297
+ - spec/dummy/config/initializers/assets.rb
298
+ - spec/dummy/config/initializers/backtrace_silencers.rb
299
+ - spec/dummy/config/initializers/cookies_serializer.rb
300
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
301
+ - spec/dummy/config/initializers/inflections.rb
302
+ - spec/dummy/config/initializers/mime_types.rb
303
+ - spec/dummy/config/initializers/session_store.rb
304
+ - spec/dummy/config/initializers/wrap_parameters.rb
305
+ - spec/dummy/config/locales/en.yml
306
+ - spec/dummy/config/routes.rb
307
+ - spec/dummy/config/secrets.yml
308
+ - spec/dummy/lib/assets/.keep
309
+ - spec/dummy/log/.keep
310
+ - spec/dummy/public/404.html
311
+ - spec/dummy/public/422.html
312
+ - spec/dummy/public/500.html
313
+ - spec/dummy/public/favicon.ico
314
+ - spec/item/destroy_spec.rb
315
+ - spec/item/getter_spec.rb
316
+ - spec/item/respond_to_spec.rb
317
+ - spec/item/save_errors_spec.rb
318
+ - spec/item/save_spec.rb
319
+ - spec/item/setter_spec.rb
320
+ - spec/item/update_spec.rb
321
+ - spec/proxy/load_spec.rb
322
+ - spec/rails_helper.rb
323
+ - spec/service/all_spec.rb
324
+ - spec/service/build_spec.rb
325
+ - spec/service/create_spec.rb
326
+ - spec/service/creation_failed_spec.rb
327
+ - spec/service/endpoint_misconfiguration_spec.rb
328
+ - spec/service/endpoint_options_spec.rb
329
+ - spec/service/endpoints_spec.rb
330
+ - spec/service/find_by_spec.rb
331
+ - spec/service/find_each_spec.rb
332
+ - spec/service/find_in_batches_spec.rb
333
+ - spec/service/find_spec.rb
334
+ - spec/service/first_spec.rb
335
+ - spec/service/includes_spec.rb
336
+ - spec/service/mapping_spec.rb
337
+ - spec/service/model_name_spec.rb
338
+ - spec/service/request_spec.rb
339
+ - spec/service/where_spec.rb
340
+ - spec/spec_helper.rb
341
+ - spec/support/cleanup_configuration.rb
342
+ - spec/support/cleanup_services.rb
343
+ - spec/support/fixtures/json/feedback.json
344
+ - spec/support/fixtures/json/feedbacks.json
345
+ - spec/support/fixtures/json/localina_content_ad.json
346
+ - spec/support/load_json.rb