g5_updatable 0.2.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +45 -34
  3. data/app/concerns/g5_updatable/belongs_to_location.rb +14 -0
  4. data/app/concerns/g5_updatable/first_class_properties.rb +25 -0
  5. data/app/concerns/g5_updatable/urn_as_parameter.rb +7 -0
  6. data/app/controllers/g5_updatable/feed_controller.rb +1 -1
  7. data/app/models/g5_updatable/client.rb +12 -0
  8. data/app/models/g5_updatable/integration_setting.rb +20 -0
  9. data/app/models/g5_updatable/location.rb +16 -0
  10. data/app/serializers/g5_updatable/location_serializer.rb +12 -0
  11. data/db/migrate/20140709222005_create_g5_updatable_clients_and_locations.rb +24 -0
  12. data/db/migrate/20141030211945_create_integration_setting.rb +18 -0
  13. data/lib/g5_updatable/client_feed_processor.rb +34 -12
  14. data/lib/g5_updatable/client_updater.rb +7 -16
  15. data/lib/g5_updatable/engine.rb +2 -13
  16. data/lib/g5_updatable/integration_settings_updater.rb +21 -0
  17. data/lib/g5_updatable/locations_updater.rb +14 -21
  18. data/lib/g5_updatable/rspec/factories.rb +19 -0
  19. data/lib/g5_updatable/rspec.rb +3 -0
  20. data/lib/g5_updatable/version.rb +1 -1
  21. data/lib/g5_updatable.rb +2 -1
  22. data/lib/generators/g5_updatable/install/USAGE +0 -3
  23. data/lib/generators/g5_updatable/install/install_generator.rb +0 -6
  24. data/lib/tasks/g5_updatable_tasks.rake +12 -4
  25. data/spec/concerns/g5_updatable/belongs_to_location_spec.rb +30 -0
  26. data/spec/dummy/app/models/favorite_food.rb +3 -0
  27. data/spec/dummy/config/database.sample.yml +9 -0
  28. data/spec/dummy/config/database.travis.yml +4 -0
  29. data/spec/dummy/db/migrate/20140709220627_drop_clients_and_locations.rb +10 -0
  30. data/spec/dummy/db/migrate/20140714225203_create_favorite_foods.rb +10 -0
  31. data/spec/dummy/db/schema.rb +39 -21
  32. data/spec/dummy/log/test.log +18589 -920
  33. data/spec/lib/g5_updatable/client_feed_processor_spec.rb +77 -22
  34. data/spec/lib/g5_updatable/client_updater_spec.rb +28 -41
  35. data/spec/lib/g5_updatable/integration_settings_updater_spec.rb +48 -0
  36. data/spec/lib/g5_updatable/locations_updater_spec.rb +29 -52
  37. data/spec/lib/generators/g5_updatable/install_generator_spec.rb +0 -12
  38. data/spec/models/g5_updatable/client_spec.rb +25 -0
  39. data/spec/models/g5_updatable/integration_setting_spec.rb +33 -0
  40. data/spec/models/g5_updatable/location_spec.rb +34 -0
  41. data/spec/serializers/g5_updatable/location_serializer_spec.rb +21 -0
  42. data/spec/spec_helper.rb +13 -5
  43. data/spec/support/shared_example_for_urn_as_parameter.rb +7 -0
  44. data/spec/support/shared_examples_for_first_class_properties_json.rb +29 -0
  45. metadata +104 -42
  46. data/lib/g5_updatable/feed_mapper.rb +0 -58
  47. data/lib/g5_updatable/g5_client.rb +0 -10
  48. data/lib/g5_updatable/g5_location.rb +0 -22
  49. data/lib/generators/g5_updatable/install/templates/g5_updatable.rb +0 -25
  50. data/spec/dummy/config/database.yml +0 -25
  51. data/spec/dummy/config/initializers/g5_updatable.rb +0 -4
  52. data/spec/dummy/db/development.sqlite3 +0 -0
  53. data/spec/dummy/log/development.log +0 -6434
  54. data/spec/dummy/spec/fabricators/client_fabricator.rb +0 -6
  55. data/spec/dummy/spec/fabricators/location_fabricator.rb +0 -9
  56. data/spec/dummy/spec/models/client_spec.rb +0 -0
  57. data/spec/dummy/spec/models/location_spec.rb +0 -0
  58. data/spec/dummy/spec/support/client_feed.html +0 -97
  59. data/spec/dummy/spec/support/updated_client_feed.html +0 -148
  60. data/spec/fabricators/client_fabricator.rb +0 -6
  61. data/spec/fabricators/location_fabricator.rb +0 -9
  62. data/spec/lib/g5_updatable/feed_mapper_spec.rb +0 -119
  63. data/spec/lib/tmp/config/initializers/g5_updatable.rb +0 -25
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe G5Updatable::LocationSerializer do
4
+ let(:location) do
5
+ FactoryGirl.build(
6
+ :location,
7
+ uid: "https://example.com/locations/test-urn",
8
+ urn: "test-urn",
9
+ client_uid: "https://example.com/client",
10
+ properties: {
11
+ name: "Test Name"
12
+ }
13
+ )
14
+ end
15
+ subject { G5Updatable::LocationSerializer.new(location).as_json["location"] }
16
+
17
+ its([:uid]) { is_expected.to eq("https://example.com/locations/test-urn") }
18
+ its([:urn]) { is_expected.to eq("test-urn") }
19
+ its([:client_uid]) { is_expected.to eq("https://example.com/client") }
20
+ its([:name]) { is_expected.to eq("Test Name") }
21
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,20 +1,28 @@
1
1
  # This file is copied to spec/ when you run 'rails generate rspec:install'
2
2
  ENV["RAILS_ENV"] ||= 'test'
3
3
 
4
- require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require 'rspec/rails'
6
+ require 'rspec/its'
7
+
8
+ require 'generator_spec'
9
+ require 'factory_girl'
10
+ require 'g5_updatable/rspec'
11
+ require 'shoulda/matchers'
12
+ require 'g5_foundation_client/rspec'
6
13
 
7
14
  Rails.backtrace_cleaner.remove_silencers!
8
15
 
9
16
  # Requires supporting ruby files with custom matchers and macros, etc,
10
17
  # in spec/support/ and its subdirectories.
11
- Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
18
+ Dir[G5Updatable::Engine.root.join("spec/support/**/*.rb")].each { |f| require f }
12
19
 
13
20
  # Checks for pending migrations before tests are run.
14
21
  # If you are not using ActiveRecord, you can remove this line.
15
22
  ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
16
23
 
17
24
  RSpec.configure do |config|
25
+ config.include FactoryGirl::Syntax::Methods
18
26
  # ## Mock Framework
19
27
  #
20
28
  # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
@@ -24,12 +32,12 @@ RSpec.configure do |config|
24
32
  # config.mock_with :rr
25
33
 
26
34
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
27
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
35
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
28
36
 
29
37
  # If you're not using ActiveRecord, or you'd prefer not to run each of your
30
38
  # examples within a transaction, remove the following line or assign false
31
39
  # instead of true.
32
- config.use_transactional_fixtures = true
40
+ config.use_transactional_fixtures = true
33
41
 
34
42
  # If true, the base class of anonymous controllers will be inferred
35
43
  # automatically. This will be the default behavior in future versions of
@@ -40,5 +48,5 @@ RSpec.configure do |config|
40
48
  # order dependency and want to debug it, you can fix the order by providing
41
49
  # the seed, which is printed after each run.
42
50
  # --seed 1234
43
- config.order = "random"
51
+ config.order = "random"
44
52
  end
@@ -0,0 +1,7 @@
1
+ shared_examples_for "a model that uses its URN as its parameter" do
2
+ let(:model) { FactoryGirl.build(instance_factory_name, urn: "test-urn") }
3
+
4
+ it "returns the URN as the param" do
5
+ expect(model.to_param).to eq("test-urn")
6
+ end
7
+ end
@@ -0,0 +1,29 @@
1
+ shared_examples_for "a model with first-class properties" do
2
+ describe "properties" do
3
+ let(:instance) { FactoryGirl.build(instance_factory_name, properties: { key: "value" }) }
4
+
5
+ context "when properties are on an instance from the database" do
6
+ before do
7
+ instance.save!
8
+ end
9
+ subject { instance.class.find(instance.id) }
10
+
11
+ its(:key) { should eq("value") }
12
+ end
13
+
14
+ context "when properties were set on an in-memory instance" do
15
+ context "trying to access an existing property" do
16
+ subject { instance.key }
17
+ it { should eq("value") }
18
+ end
19
+
20
+ context "trying to access an nonexistent property" do
21
+ subject { instance.bad }
22
+
23
+ it "blows up normally" do
24
+ expect { subject }.to raise_error(NoMethodError)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: g5_updatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-19 00:00:00.000000000 Z
11
+ date: 2014-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,30 +16,30 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.1.5
19
+ version: 4.1.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.1.5
26
+ version: 4.1.7
27
27
  - !ruby/object:Gem::Dependency
28
- name: microformats2
28
+ name: g5_foundation_client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.1.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: virtus
42
+ name: pg
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,13 +53,27 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: sqlite3
56
+ name: active_model_serializers
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.8'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: virtus
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
- type: :development
76
+ type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
@@ -80,6 +94,48 @@ dependencies:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: 3.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-its
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
+ - !ruby/object:Gem::Dependency
112
+ name: factory_girl
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: generator_spec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
83
139
  description: Client/Locations data update engine for G5 applications
84
140
  email:
85
141
  - brian.bauer@getg5.com
@@ -92,24 +148,33 @@ files:
92
148
  - Rakefile
93
149
  - app/assets/javascripts/g5_updatable/application.js
94
150
  - app/assets/stylesheets/g5_updatable/application.css
151
+ - app/concerns/g5_updatable/belongs_to_location.rb
152
+ - app/concerns/g5_updatable/first_class_properties.rb
153
+ - app/concerns/g5_updatable/urn_as_parameter.rb
95
154
  - app/controllers/g5_updatable/application_controller.rb
96
155
  - app/controllers/g5_updatable/feed_controller.rb
97
156
  - app/helpers/g5_updatable/application_helper.rb
157
+ - app/models/g5_updatable/client.rb
158
+ - app/models/g5_updatable/integration_setting.rb
159
+ - app/models/g5_updatable/location.rb
160
+ - app/serializers/g5_updatable/location_serializer.rb
98
161
  - app/views/layouts/g5_updatable/application.html.erb
99
162
  - config/routes.rb
163
+ - db/migrate/20140709222005_create_g5_updatable_clients_and_locations.rb
164
+ - db/migrate/20141030211945_create_integration_setting.rb
100
165
  - lib/g5_updatable.rb
101
166
  - lib/g5_updatable/client_feed_processor.rb
102
167
  - lib/g5_updatable/client_updater.rb
103
168
  - lib/g5_updatable/engine.rb
104
- - lib/g5_updatable/feed_mapper.rb
105
- - lib/g5_updatable/g5_client.rb
106
- - lib/g5_updatable/g5_location.rb
169
+ - lib/g5_updatable/integration_settings_updater.rb
107
170
  - lib/g5_updatable/locations_updater.rb
171
+ - lib/g5_updatable/rspec.rb
172
+ - lib/g5_updatable/rspec/factories.rb
108
173
  - lib/g5_updatable/version.rb
109
174
  - lib/generators/g5_updatable/install/USAGE
110
175
  - lib/generators/g5_updatable/install/install_generator.rb
111
- - lib/generators/g5_updatable/install/templates/g5_updatable.rb
112
176
  - lib/tasks/g5_updatable_tasks.rake
177
+ - spec/concerns/g5_updatable/belongs_to_location_spec.rb
113
178
  - spec/dummy/README.rdoc
114
179
  - spec/dummy/Rakefile
115
180
  - spec/dummy/app/assets/javascripts/application.js
@@ -117,6 +182,7 @@ files:
117
182
  - spec/dummy/app/controllers/application_controller.rb
118
183
  - spec/dummy/app/helpers/application_helper.rb
119
184
  - spec/dummy/app/models/client.rb
185
+ - spec/dummy/app/models/favorite_food.rb
120
186
  - spec/dummy/app/models/location.rb
121
187
  - spec/dummy/app/views/layouts/application.html.erb
122
188
  - spec/dummy/bin/bundle
@@ -125,7 +191,8 @@ files:
125
191
  - spec/dummy/config.ru
126
192
  - spec/dummy/config/application.rb
127
193
  - spec/dummy/config/boot.rb
128
- - spec/dummy/config/database.yml
194
+ - spec/dummy/config/database.sample.yml
195
+ - spec/dummy/config/database.travis.yml
129
196
  - spec/dummy/config/environment.rb
130
197
  - spec/dummy/config/environments/development.rb
131
198
  - spec/dummy/config/environments/production.rb
@@ -134,7 +201,6 @@ files:
134
201
  - spec/dummy/config/initializers/backtrace_silencers.rb
135
202
  - spec/dummy/config/initializers/cookies_serializer.rb
136
203
  - spec/dummy/config/initializers/filter_parameter_logging.rb
137
- - spec/dummy/config/initializers/g5_updatable.rb
138
204
  - spec/dummy/config/initializers/inflections.rb
139
205
  - spec/dummy/config/initializers/mime_types.rb
140
206
  - spec/dummy/config/initializers/session_store.rb
@@ -142,36 +208,33 @@ files:
142
208
  - spec/dummy/config/locales/en.yml
143
209
  - spec/dummy/config/routes.rb
144
210
  - spec/dummy/config/secrets.yml
145
- - spec/dummy/db/development.sqlite3
146
211
  - spec/dummy/db/migrate/20140630175259_create_locations.rb
147
212
  - spec/dummy/db/migrate/20140630175330_create_clients.rb
213
+ - spec/dummy/db/migrate/20140709220627_drop_clients_and_locations.rb
214
+ - spec/dummy/db/migrate/20140714225203_create_favorite_foods.rb
148
215
  - spec/dummy/db/schema.rb
149
216
  - spec/dummy/db/test.sqlite3
150
- - spec/dummy/log/development.log
151
217
  - spec/dummy/log/test.log
152
218
  - spec/dummy/public/404.html
153
219
  - spec/dummy/public/422.html
154
220
  - spec/dummy/public/500.html
155
221
  - spec/dummy/public/favicon.ico
156
- - spec/dummy/spec/fabricators/client_fabricator.rb
157
- - spec/dummy/spec/fabricators/location_fabricator.rb
158
- - spec/dummy/spec/models/client_spec.rb
159
- - spec/dummy/spec/models/location_spec.rb
160
- - spec/dummy/spec/support/client_feed.html
161
- - spec/dummy/spec/support/updated_client_feed.html
162
222
  - spec/dummy/tmp/pids/server.pid
163
- - spec/fabricators/client_fabricator.rb
164
- - spec/fabricators/location_fabricator.rb
165
223
  - spec/lib/g5_updatable/client_feed_processor_spec.rb
166
224
  - spec/lib/g5_updatable/client_updater_spec.rb
167
- - spec/lib/g5_updatable/feed_mapper_spec.rb
225
+ - spec/lib/g5_updatable/integration_settings_updater_spec.rb
168
226
  - spec/lib/g5_updatable/locations_updater_spec.rb
169
227
  - spec/lib/g5_updatable/version.rb
170
228
  - spec/lib/generators/g5_updatable/install_generator_spec.rb
171
229
  - spec/lib/generators/tmp/config/routes.rb
172
- - spec/lib/tmp/config/initializers/g5_updatable.rb
173
230
  - spec/lib/tmp/config/routes.rb
231
+ - spec/models/g5_updatable/client_spec.rb
232
+ - spec/models/g5_updatable/integration_setting_spec.rb
233
+ - spec/models/g5_updatable/location_spec.rb
234
+ - spec/serializers/g5_updatable/location_serializer_spec.rb
174
235
  - spec/spec_helper.rb
236
+ - spec/support/shared_example_for_urn_as_parameter.rb
237
+ - spec/support/shared_examples_for_first_class_properties_json.rb
175
238
  homepage: https://github.com/G5/g5_updatable
176
239
  licenses:
177
240
  - MIT
@@ -197,11 +260,13 @@ signing_key:
197
260
  specification_version: 4
198
261
  summary: Client/Locations data update engine for G5 applications
199
262
  test_files:
263
+ - spec/concerns/g5_updatable/belongs_to_location_spec.rb
200
264
  - spec/dummy/app/assets/javascripts/application.js
201
265
  - spec/dummy/app/assets/stylesheets/application.css
202
266
  - spec/dummy/app/controllers/application_controller.rb
203
267
  - spec/dummy/app/helpers/application_helper.rb
204
268
  - spec/dummy/app/models/client.rb
269
+ - spec/dummy/app/models/favorite_food.rb
205
270
  - spec/dummy/app/models/location.rb
206
271
  - spec/dummy/app/views/layouts/application.html.erb
207
272
  - spec/dummy/bin/bundle
@@ -209,7 +274,8 @@ test_files:
209
274
  - spec/dummy/bin/rake
210
275
  - spec/dummy/config/application.rb
211
276
  - spec/dummy/config/boot.rb
212
- - spec/dummy/config/database.yml
277
+ - spec/dummy/config/database.sample.yml
278
+ - spec/dummy/config/database.travis.yml
213
279
  - spec/dummy/config/environment.rb
214
280
  - spec/dummy/config/environments/development.rb
215
281
  - spec/dummy/config/environments/production.rb
@@ -218,7 +284,6 @@ test_files:
218
284
  - spec/dummy/config/initializers/backtrace_silencers.rb
219
285
  - spec/dummy/config/initializers/cookies_serializer.rb
220
286
  - spec/dummy/config/initializers/filter_parameter_logging.rb
221
- - spec/dummy/config/initializers/g5_updatable.rb
222
287
  - spec/dummy/config/initializers/inflections.rb
223
288
  - spec/dummy/config/initializers/mime_types.rb
224
289
  - spec/dummy/config/initializers/session_store.rb
@@ -227,12 +292,12 @@ test_files:
227
292
  - spec/dummy/config/routes.rb
228
293
  - spec/dummy/config/secrets.yml
229
294
  - spec/dummy/config.ru
230
- - spec/dummy/db/development.sqlite3
231
295
  - spec/dummy/db/migrate/20140630175259_create_locations.rb
232
296
  - spec/dummy/db/migrate/20140630175330_create_clients.rb
297
+ - spec/dummy/db/migrate/20140709220627_drop_clients_and_locations.rb
298
+ - spec/dummy/db/migrate/20140714225203_create_favorite_foods.rb
233
299
  - spec/dummy/db/schema.rb
234
300
  - spec/dummy/db/test.sqlite3
235
- - spec/dummy/log/development.log
236
301
  - spec/dummy/log/test.log
237
302
  - spec/dummy/public/404.html
238
303
  - spec/dummy/public/422.html
@@ -240,22 +305,19 @@ test_files:
240
305
  - spec/dummy/public/favicon.ico
241
306
  - spec/dummy/Rakefile
242
307
  - spec/dummy/README.rdoc
243
- - spec/dummy/spec/fabricators/client_fabricator.rb
244
- - spec/dummy/spec/fabricators/location_fabricator.rb
245
- - spec/dummy/spec/models/client_spec.rb
246
- - spec/dummy/spec/models/location_spec.rb
247
- - spec/dummy/spec/support/client_feed.html
248
- - spec/dummy/spec/support/updated_client_feed.html
249
308
  - spec/dummy/tmp/pids/server.pid
250
- - spec/fabricators/client_fabricator.rb
251
- - spec/fabricators/location_fabricator.rb
252
309
  - spec/lib/g5_updatable/client_feed_processor_spec.rb
253
310
  - spec/lib/g5_updatable/client_updater_spec.rb
254
- - spec/lib/g5_updatable/feed_mapper_spec.rb
311
+ - spec/lib/g5_updatable/integration_settings_updater_spec.rb
255
312
  - spec/lib/g5_updatable/locations_updater_spec.rb
256
313
  - spec/lib/g5_updatable/version.rb
257
314
  - spec/lib/generators/g5_updatable/install_generator_spec.rb
258
315
  - spec/lib/generators/tmp/config/routes.rb
259
- - spec/lib/tmp/config/initializers/g5_updatable.rb
260
316
  - spec/lib/tmp/config/routes.rb
317
+ - spec/models/g5_updatable/client_spec.rb
318
+ - spec/models/g5_updatable/integration_setting_spec.rb
319
+ - spec/models/g5_updatable/location_spec.rb
320
+ - spec/serializers/g5_updatable/location_serializer_spec.rb
261
321
  - spec/spec_helper.rb
322
+ - spec/support/shared_example_for_urn_as_parameter.rb
323
+ - spec/support/shared_examples_for_first_class_properties_json.rb
@@ -1,58 +0,0 @@
1
- require "g5_updatable/g5_client"
2
- require "g5_updatable/g5_location"
3
- require "microformats2"
4
-
5
- class G5Updatable::FeedMapper
6
- def initialize(urn)
7
- @urn = urn
8
- @feed = Microformats2.parse(client_uid).first if @urn
9
- end
10
-
11
- def client
12
- G5Updatable::G5Client.new(client_parameters) if @feed
13
- end
14
-
15
- def locations
16
- return [] if @feed.blank?
17
-
18
- @feed.orgs.map do |location|
19
- G5Updatable::G5Location.new(location_parameters(location.format))
20
- end
21
- end
22
-
23
- private
24
-
25
- def client_uid
26
- "#{G5Updatable.feed_endpoint}#{@urn}" if @urn.present?
27
- end
28
-
29
- def client_parameters
30
- {
31
- name: @feed.name.to_s,
32
- vertical: @feed.g5_vertical.to_s,
33
- domain: @feed.g5_domain.to_s,
34
- type: @feed.g5_domain_type.to_s
35
- }
36
- end
37
-
38
- def location_parameters(location)
39
- {
40
- uid: location.uid.to_s,
41
- urn: location.uid.to_s.split("/").last,
42
- name: location.name.to_s,
43
- domain: location.g5_domain.to_s,
44
- street_address: location.adr.try(:format).try(:street_address).to_s,
45
- state: location.adr.try(:format).try(:region).to_s,
46
- city: location.adr.try(:format).try(:locality).to_s,
47
- neighborhood: location.adr.try(:format).try(:g5_neighborhood).to_s,
48
- postal_code: location.adr.try(:format).try(:postal_code).to_s,
49
- phone_number: location.adr.try(:format).try(:tel).to_s,
50
- default_number: location.adr.try(:format).try(:tel).to_s,
51
- corporate: location.g5_corporate.to_s,
52
- floor_plans: location.g5_floorplan.to_s,
53
- primary_amenity: location.g5_aparment_amenity_1.to_s,
54
- qualifier: location.g5_aparment_feature_1.to_s,
55
- primary_landmark: location.g5_landmark_1.to_s
56
- }
57
- end
58
- end