contentful 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6a904e1decfbc78bc44ca0dff8882e712b1342c3
4
- data.tar.gz: 9e4e1fbe1a6f851cd1294cf6e937f5dd42df01f5
3
+ metadata.gz: 6b4c5fc8a4dc2ae13b7ee0fe9e0444e995b921bf
4
+ data.tar.gz: 9f38b091341e8b0137292070a7ae9b10ccdcab7d
5
5
  SHA512:
6
- metadata.gz: 914f9f1a62d29730cedb7863191f240e873f6b9d28532dbda5412662be8899f832855ec62f9b0b02435afb36c85b3c9d5bac616b45998fbd9085739256af51f0
7
- data.tar.gz: 73819d1c7c6bc21ca72aa2e183f2b013899349dc0877f7fa6313f62f1e242381d7d401a892683c0ee37d251e9259e36bc3b1f3efc033dbe4868d0c9d87ab9555
6
+ metadata.gz: b09b93dab0ba708a502cb898dd3dd05f23693053b517594f2f18faf2b0955ddc468868ccb9828eb9fdff50ebf951d45310d5b29e4e373bda90969dbeec714fe3
7
+ data.tar.gz: 3d0aaeca5389a70b4d7e957e982996dbf16e9593a5fb6df3f529ce6ffc7474c07b669460d300c681406edc57dd86d6ec257b8b6e309a107608bad5234b1f1e4c
data/.travis.yml CHANGED
@@ -6,3 +6,6 @@ rvm:
6
6
  - 2.1
7
7
  - 2.0.0
8
8
  - 1.9.3
9
+ notifications:
10
+ slack:
11
+ secure: Zr3mKCiTb0vaTD4MPtTG8BbyYyErFuoxioM25QyrqePKVkDFeZC1MtGmg5klQQrJiWTKZPa/zB8NAHYkoUxg9I+z15JK0hYfz9KRubEpCrXCaqTC9Vzq88kJ3LN8YsTyBF66izaBH2KLsOfaJRxwplFzZqgpg4GG2DUBPtrGtes=
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Change Log
2
2
  ## Unreleased
3
3
 
4
+ ## 0.8.0
5
+ ### Changed
6
+ * Unified Locale Handling [#73](https://github.com/contentful/contentful.rb/issues/73)
7
+
4
8
  ## 0.7.0
5
9
  ### Added
6
10
  * Add support for querying a field's `linkType` [#75](https://github.com/contentful/contentful.rb/pull/75)
data/Guardfile ADDED
@@ -0,0 +1,42 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+ # Note: The cmd option is now required due to the increasing number of ways
19
+ # rspec may be run, below are examples of the most common uses.
20
+ # * bundler: 'bundle exec rspec'
21
+ # * bundler binstubs: 'bin/rspec'
22
+ # * spring: 'bin/rspec' (This will use spring if running and you have
23
+ # installed the spring binstubs per the docs)
24
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
25
+ # * 'just' rspec: 'rspec'
26
+
27
+ guard :rspec, cmd: "bundle exec rspec" do
28
+ require "guard/rspec/dsl"
29
+ dsl = Guard::RSpec::Dsl.new(self)
30
+
31
+ # Feel free to open issues for suggestions and improvements
32
+
33
+ # RSpec files
34
+ rspec = dsl.rspec
35
+ watch(rspec.spec_helper) { rspec.spec_dir }
36
+ watch(rspec.spec_support) { rspec.spec_dir }
37
+ watch(rspec.spec_files)
38
+
39
+ # Ruby files
40
+ ruby = dsl.ruby
41
+ dsl.watch_spec_files_for(ruby.lib_files)
42
+ end
data/contentful.gemspec CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency 'rake', '~> 10'
23
23
  gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
24
24
 
25
+ gem.add_development_dependency 'guard'
26
+ gem.add_development_dependency 'guard-rspec'
25
27
  gem.add_development_dependency 'rspec', '~> 2'
26
28
  gem.add_development_dependency 'rr'
27
29
  gem.add_development_dependency 'vcr'
@@ -0,0 +1,502 @@
1
+ module Contentful
2
+ module Constants
3
+ KNOWN_LOCALES = [
4
+ "zh",
5
+ "en",
6
+ "es",
7
+ "hi",
8
+ "ru",
9
+ "ar",
10
+ "pt",
11
+ "bn",
12
+ "fr",
13
+ "ms",
14
+ "tr",
15
+ "de",
16
+ "ja",
17
+ "fa",
18
+ "ur",
19
+ "pa",
20
+ "vi",
21
+ "id",
22
+ "ko",
23
+ "te",
24
+ "mr",
25
+ "it",
26
+ "th",
27
+ "my",
28
+ "kn",
29
+ "gu",
30
+ "pl",
31
+ "af",
32
+ "af-NA",
33
+ "af-ZA",
34
+ "agq",
35
+ "agq-CM",
36
+ "ak",
37
+ "ak-GH",
38
+ "sq",
39
+ "sq-AL",
40
+ "am",
41
+ "am-ET",
42
+ "ar-DZ",
43
+ "ar-BH",
44
+ "ar-EG",
45
+ "ar-IQ",
46
+ "ar-JO",
47
+ "ar-KW",
48
+ "ar-LB",
49
+ "ar-LY",
50
+ "ar-MA",
51
+ "ar-OM",
52
+ "ar-QA",
53
+ "ar-SA",
54
+ "ar-SD",
55
+ "ar-SY",
56
+ "ar-TN",
57
+ "ar-AE",
58
+ "ar-YE",
59
+ "ar-001",
60
+ "hy",
61
+ "hy-AM",
62
+ "as",
63
+ "as-IN",
64
+ "asa",
65
+ "asa-TZ",
66
+ "az",
67
+ "az-Cyrl",
68
+ "az-Cyrl-AZ",
69
+ "az-Latn",
70
+ "az-Latn-AZ",
71
+ "ksf",
72
+ "ksf-CM",
73
+ "bm",
74
+ "bm-ML",
75
+ "bas",
76
+ "bas-CM",
77
+ "eu",
78
+ "eu-ES",
79
+ "be",
80
+ "be-BY",
81
+ "bem",
82
+ "bem-ZM",
83
+ "bez",
84
+ "bez-TZ",
85
+ "bn-BD",
86
+ "bn-IN",
87
+ "brx",
88
+ "brx-IN",
89
+ "bs",
90
+ "bs-BA",
91
+ "br",
92
+ "br-FR",
93
+ "bg",
94
+ "bg-BG",
95
+ "my-MM",
96
+ "ca",
97
+ "ca-ES",
98
+ "tzm",
99
+ "tzm-Latn",
100
+ "tzm-Latn-MA",
101
+ "chr",
102
+ "chr-US",
103
+ "cgg",
104
+ "cgg-UG",
105
+ "zh-CN",
106
+ "zh-Hans",
107
+ "zh-Hans-CN",
108
+ "zh-Hans-HK",
109
+ "zh-Hans-MO",
110
+ "zh-Hans-SG",
111
+ "zh-Hant",
112
+ "zh-Hant-HK",
113
+ "zh-Hant-MO",
114
+ "zh-Hant-TW",
115
+ "swc",
116
+ "swc-CD",
117
+ "kw",
118
+ "kw-GB",
119
+ "hr",
120
+ "hr-HR",
121
+ "cs",
122
+ "cs-CZ",
123
+ "da",
124
+ "da-DK",
125
+ "dua",
126
+ "dua-CM",
127
+ "nl",
128
+ "nl-AW",
129
+ "nl-BE",
130
+ "nl-CW",
131
+ "nl-NL",
132
+ "nl-SX",
133
+ "ebu",
134
+ "ebu-KE",
135
+ "en-AS",
136
+ "en-AU",
137
+ "en-BB",
138
+ "en-BE",
139
+ "en-BZ",
140
+ "en-BM",
141
+ "en-BW",
142
+ "en-CA",
143
+ "en-EU",
144
+ "en-GU",
145
+ "en-GY",
146
+ "en-HK",
147
+ "en-IN",
148
+ "en-IE",
149
+ "en-JM",
150
+ "en-MT",
151
+ "en-MH",
152
+ "en-MU",
153
+ "en-NA",
154
+ "en-NZ",
155
+ "en-MP",
156
+ "en-PK",
157
+ "en-PH",
158
+ "en-SG",
159
+ "en-ZA",
160
+ "en-TT",
161
+ "en-US-POSIX",
162
+ "en-UM",
163
+ "en-VI",
164
+ "en-GB",
165
+ "en-US",
166
+ "en-ZW",
167
+ "eo",
168
+ "et",
169
+ "et-EE",
170
+ "ee",
171
+ "ee-GH",
172
+ "ee-TG",
173
+ "ewo",
174
+ "ewo-CM",
175
+ "fo",
176
+ "fo-FO",
177
+ "fil",
178
+ "fil-PH",
179
+ "fi",
180
+ "fi-FI",
181
+ "fr-BE",
182
+ "fr-BJ",
183
+ "fr-BF",
184
+ "fr-BI",
185
+ "fr-CM",
186
+ "fr-CA",
187
+ "fr-CF",
188
+ "fr-TD",
189
+ "fr-KM",
190
+ "fr-CG",
191
+ "fr-CD",
192
+ "fr-CI",
193
+ "fr-DJ",
194
+ "fr-GQ",
195
+ "fr-FR",
196
+ "fr-GF",
197
+ "fr-GA",
198
+ "fr-GP",
199
+ "fr-GN",
200
+ "fr-LU",
201
+ "fr-MG",
202
+ "fr-ML",
203
+ "fr-MQ",
204
+ "fr-YT",
205
+ "fr-MC",
206
+ "fr-NE",
207
+ "fr-RW",
208
+ "fr-RE",
209
+ "fr-BL",
210
+ "fr-MF",
211
+ "fr-SN",
212
+ "fr-CH",
213
+ "fr-TG",
214
+ "ff",
215
+ "ff-SN",
216
+ "gl",
217
+ "gl-ES",
218
+ "lg",
219
+ "lg-UG",
220
+ "ka",
221
+ "ka-GE",
222
+ "de-AT",
223
+ "de-BE",
224
+ "de-DE",
225
+ "de-LI",
226
+ "de-LU",
227
+ "de-CH",
228
+ "el",
229
+ "el-CY",
230
+ "el-GR",
231
+ "gu-IN",
232
+ "guz",
233
+ "guz-KE",
234
+ "ha",
235
+ "ha-Latn",
236
+ "ha-Latn-GH",
237
+ "ha-Latn-NE",
238
+ "ha-Latn-NG",
239
+ "haw",
240
+ "haw-US",
241
+ "he",
242
+ "he-IL",
243
+ "hi-IN",
244
+ "hu",
245
+ "hu-HU",
246
+ "is",
247
+ "is-IS",
248
+ "ig",
249
+ "ig-NG",
250
+ "id-ID",
251
+ "ga",
252
+ "ga-IE",
253
+ "it-IT",
254
+ "it-CH",
255
+ "ja-JP",
256
+ "dyo",
257
+ "dyo-SN",
258
+ "kea",
259
+ "kea-CV",
260
+ "kab",
261
+ "kab-DZ",
262
+ "kl",
263
+ "kl-GL",
264
+ "kln",
265
+ "kln-KE",
266
+ "kam",
267
+ "kam-KE",
268
+ "kn-IN",
269
+ "kk",
270
+ "kk-Cyrl",
271
+ "kk-Cyrl-KZ",
272
+ "km",
273
+ "km-KH",
274
+ "ki",
275
+ "ki-KE",
276
+ "rw",
277
+ "rw-RW",
278
+ "kok",
279
+ "kok-IN",
280
+ "ko-KR",
281
+ "khq",
282
+ "khq-ML",
283
+ "ses",
284
+ "ses-ML",
285
+ "nmg",
286
+ "nmg-CM",
287
+ "lag",
288
+ "lag-TZ",
289
+ "lv",
290
+ "lv-LV",
291
+ "ln",
292
+ "ln-CG",
293
+ "ln-CD",
294
+ "lt",
295
+ "lt-LT",
296
+ "lu",
297
+ "lu-CD",
298
+ "luo",
299
+ "luo-KE",
300
+ "luy",
301
+ "luy-KE",
302
+ "mk",
303
+ "mk-MK",
304
+ "jmc",
305
+ "jmc-TZ",
306
+ "mgh",
307
+ "mgh-MZ",
308
+ "kde",
309
+ "kde-TZ",
310
+ "mg",
311
+ "mg-MG",
312
+ "ms-BN",
313
+ "ms-MY",
314
+ "ml",
315
+ "ml-IN",
316
+ "mt",
317
+ "mt-MT",
318
+ "gv",
319
+ "gv-GB",
320
+ "mr-IN",
321
+ "mas",
322
+ "mas-KE",
323
+ "mas-TZ",
324
+ "mer",
325
+ "mer-KE",
326
+ "mfe",
327
+ "mfe-MU",
328
+ "mua",
329
+ "mua-CM",
330
+ "naq",
331
+ "naq-NA",
332
+ "ne",
333
+ "ne-IN",
334
+ "ne-NP",
335
+ "nd",
336
+ "nd-ZW",
337
+ "nb",
338
+ "nb-NO",
339
+ "nn",
340
+ "nn-NO",
341
+ "nus",
342
+ "nus-SD",
343
+ "nyn",
344
+ "nyn-UG",
345
+ "or",
346
+ "or-IN",
347
+ "om",
348
+ "om-ET",
349
+ "om-KE",
350
+ "ps",
351
+ "ps-AF",
352
+ "fa-AF",
353
+ "fa-IR",
354
+ "pl-PL",
355
+ "pt-AO",
356
+ "pt-BR",
357
+ "pt-GW",
358
+ "pt-MZ",
359
+ "pt-PT",
360
+ "pt-ST",
361
+ "pa-Arab",
362
+ "pa-Arab-PK",
363
+ "pa-Guru",
364
+ "pa-Guru-IN",
365
+ "ro",
366
+ "ro-MD",
367
+ "ro-RO",
368
+ "rm",
369
+ "rm-CH",
370
+ "rof",
371
+ "rof-TZ",
372
+ "rn",
373
+ "rn-BI",
374
+ "ru-MD",
375
+ "ru-RU",
376
+ "ru-UA",
377
+ "rwk",
378
+ "rwk-TZ",
379
+ "saq",
380
+ "saq-KE",
381
+ "sg",
382
+ "sg-CF",
383
+ "sbp",
384
+ "sbp-TZ",
385
+ "seh",
386
+ "seh-MZ",
387
+ "sr",
388
+ "sr-Cyrl",
389
+ "sr-Cyrl-BA",
390
+ "sr-Cyrl-ME",
391
+ "sr-Cyrl-RS",
392
+ "sr-Latn",
393
+ "sr-Latn-BA",
394
+ "sr-Latn-ME",
395
+ "sr-Latn-RS",
396
+ "ksb",
397
+ "ksb-TZ",
398
+ "sn",
399
+ "sn-ZW",
400
+ "ii",
401
+ "ii-CN",
402
+ "si",
403
+ "si-LK",
404
+ "sk",
405
+ "sk-SK",
406
+ "sl",
407
+ "sl-SI",
408
+ "xog",
409
+ "xog-UG",
410
+ "so",
411
+ "so-DJ",
412
+ "so-ET",
413
+ "so-KE",
414
+ "so-SO",
415
+ "es-AR",
416
+ "es-BO",
417
+ "es-CL",
418
+ "es-CO",
419
+ "es-CR",
420
+ "es-DO",
421
+ "es-EC",
422
+ "es-SV",
423
+ "es-GQ",
424
+ "es-GT",
425
+ "es-HN",
426
+ "es-419",
427
+ "es-MX",
428
+ "es-NI",
429
+ "es-PA",
430
+ "es-PY",
431
+ "es-PE",
432
+ "es-PR",
433
+ "es-ES",
434
+ "es-US",
435
+ "es-UY",
436
+ "es-VE",
437
+ "sw",
438
+ "sw-KE",
439
+ "sw-TZ",
440
+ "sv",
441
+ "sv-FI",
442
+ "sv-SE",
443
+ "gsw",
444
+ "gsw-CH",
445
+ "shi",
446
+ "shi-Latn",
447
+ "shi-Latn-MA",
448
+ "shi-Tfng",
449
+ "shi-Tfng-MA",
450
+ "dav",
451
+ "dav-KE",
452
+ "ta",
453
+ "ta-IN",
454
+ "ta-LK",
455
+ "twq",
456
+ "twq-NE",
457
+ "te-IN",
458
+ "teo",
459
+ "teo-KE",
460
+ "teo-UG",
461
+ "th-TH",
462
+ "bo",
463
+ "bo-CN",
464
+ "bo-IN",
465
+ "ti",
466
+ "ti-ER",
467
+ "ti-ET",
468
+ "to",
469
+ "to-TO",
470
+ "tr-TR",
471
+ "uk",
472
+ "uk-UA",
473
+ "ur-IN",
474
+ "ur-PK",
475
+ "uz",
476
+ "uz-Arab",
477
+ "uz-Arab-AF",
478
+ "uz-Cyrl",
479
+ "uz-Cyrl-UZ",
480
+ "uz-Latn",
481
+ "uz-Latn-UZ",
482
+ "vai",
483
+ "vai-Latn",
484
+ "vai-Latn-LR",
485
+ "vai-Vaii",
486
+ "vai-Vaii-LR",
487
+ "vi-VN",
488
+ "vun",
489
+ "vun-TZ",
490
+ "cy",
491
+ "cy-GB",
492
+ "yav",
493
+ "yav-CM",
494
+ "yo",
495
+ "yo-NG",
496
+ "dje",
497
+ "dje-NE",
498
+ "zu",
499
+ "zu-ZA"
500
+ ]
501
+ end
502
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative 'resource/system_properties'
2
+ require 'contentful/constants'
2
3
  require 'date'
3
4
 
4
5
  module Contentful
@@ -21,15 +22,15 @@ module Contentful
21
22
 
22
23
  attr_reader :properties, :request, :client, :default_locale
23
24
 
24
- def initialize(object = nil, request = nil, client = nil, nested_locale_fields = false, default_locale = Contentful::Client::DEFAULT_CONFIGURATION[:default_locale])
25
+ def initialize(object = nil, request = nil, client = nil, default_locale = Contentful::Client::DEFAULT_CONFIGURATION[:default_locale])
25
26
  self.class.update_coercions!
26
- @nested_locale_fields = nested_locale_fields
27
27
  @default_locale = default_locale
28
28
 
29
29
  @properties = extract_from_object(object, :property,
30
30
  self.class.property_coercions.keys)
31
31
  @request = request
32
32
  @client = client
33
+ @api_object = object
33
34
  end
34
35
 
35
36
  def inspect(info = nil)
@@ -42,9 +43,9 @@ module Contentful
42
43
  false
43
44
  end
44
45
 
45
- # By default, fields come flattened in the current locale. This is different for syncs
46
- def nested_locale_fields?
47
- !! @nested_locale_fields
46
+ def localized?(value)
47
+ return false unless value.is_a? ::Hash
48
+ value.keys.any? { |possible_locale| Contentful::Constants::KNOWN_LOCALES.include?(possible_locale) }
48
49
  end
49
50
 
50
51
  # Resources that don't include SystemProperties return nil for #sys
@@ -72,17 +73,18 @@ module Contentful
72
73
  def initialize_fields_for_localized_resource(object)
73
74
  @fields = {}
74
75
 
75
- if nested_locale_fields?
76
- object['fields'].each do |field_name, nested_child_object|
76
+ object['fields'].each do |field_name, nested_child_object|
77
+ if localized?(nested_child_object)
77
78
  nested_child_object.each do |object_locale, real_child_object|
78
79
  @fields[object_locale] ||= {}
79
80
  @fields[object_locale].merge! extract_from_object(
80
81
  { field_name => real_child_object }, :fields
81
82
  )
82
83
  end
84
+ else
85
+ @fields[locale] ||= {}
86
+ @fields[locale].merge! extract_from_object({ field_name => nested_child_object }, :fields)
83
87
  end
84
- else
85
- @fields[locale] = extract_from_object object['fields'], :fields
86
88
  end
87
89
  end
88
90
 
@@ -150,10 +152,6 @@ module Contentful
150
152
  # Register the resources properties on class level by using the #property method
151
153
  module ClassMethods
152
154
  # By default, fields come flattened in the current locale. This is different for sync
153
- def nested_locale_fields?
154
- false
155
- end
156
-
157
155
  def property_coercions
158
156
  @property_coercions ||= {}
159
157
  end
@@ -1,3 +1,5 @@
1
+ require 'contentful/constants'
2
+
1
3
  module Contentful
2
4
  module Resource
3
5
  # Include this module into your Resource class to enable it
@@ -7,9 +9,23 @@ module Contentful
7
9
  module Fields
8
10
  # Returns all fields of the asset
9
11
  def fields(wanted_locale = default_locale)
12
+ wanted_locale = wanted_locale.to_s
10
13
  @fields.has_key?(wanted_locale) ? @fields[wanted_locale] : @fields[locale]
11
14
  end
12
15
 
16
+ # Returns all fields of the asset with locales nested by field
17
+ def fields_with_locales
18
+ remapped_fields = {}
19
+ locales.each do |locale|
20
+ fields(locale).each do |name, value|
21
+ remapped_fields[name] ||= {}
22
+ remapped_fields[name][locale.to_sym] = value
23
+ end
24
+ end
25
+
26
+ remapped_fields
27
+ end
28
+
13
29
  def initialize(object = nil, *)
14
30
  super
15
31
  extract_fields_from_object! object if object
@@ -25,6 +41,10 @@ module Contentful
25
41
 
26
42
  private
27
43
 
44
+ def locales
45
+ @fields.keys
46
+ end
47
+
28
48
  def extract_fields_from_object!(object)
29
49
  initialize_fields_for_localized_resource(object)
30
50
  end
@@ -33,7 +33,6 @@ module Contentful
33
33
  @client = client
34
34
  @included_resources = {}
35
35
  @known_resources = Hash.new { |h, k| h[k] = {} }
36
- @nested_locales = false
37
36
  @default_locale = default_locale
38
37
  @resource_mapping = default_resource_mapping.merge(resource_mapping)
39
38
  @entry_mapping = default_entry_mapping.merge(entry_mapping)
@@ -73,8 +72,7 @@ module Contentful
73
72
  # Creates a single resource from the response object
74
73
  def create_resource(object)
75
74
  res_class = detect_resource_class(object)
76
- @nested_locales ||= res_class.nested_locale_fields?
77
- res = res_class.new(object, response.request, client, @nested_locales, @default_locale)
75
+ res = res_class.new(object, response.request, client, @default_locale)
78
76
 
79
77
  add_to_known_resources res
80
78
  replace_children res, object
@@ -13,10 +13,6 @@ module Contentful
13
13
  property :nextSyncUrl
14
14
  property :nextPageUrl
15
15
 
16
- def self.nested_locale_fields?
17
- true
18
- end
19
-
20
16
  def next_page
21
17
  sync.get(next_page_url) if next_page?
22
18
  end
@@ -1,3 +1,3 @@
1
1
  module Contentful
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.0'
3
3
  end
data/spec/entry_spec.rb CHANGED
@@ -54,10 +54,32 @@ describe Contentful::Entry do
54
54
  it 'can handle multiple locales' do
55
55
  vcr('entry_locales') {
56
56
  cat = create_client.entries(locale: "*").items.first
57
- expect(cat.fields[:name][:'en-US']).to eq "Nyan Cat"
58
- expect(cat.fields[:name][:'es']).to eq "Gato Nyan"
57
+ expect(cat.fields('en-US')[:name]).to eq "Nyan Cat"
58
+ expect(cat.fields('es')[:name]).to eq "Gato Nyan"
59
+
60
+
61
+ expect(cat.fields(:'en-US')[:name]).to eq "Nyan Cat"
62
+ expect(cat.fields(:es)[:name]).to eq "Gato Nyan"
59
63
  }
60
64
  end
61
- end
62
65
 
66
+ describe '#fields_with_locales' do
67
+ it 'can handle entries with just 1 locale' do
68
+ vcr('entry') {
69
+ nyancat = create_client.entry('nyancat')
70
+ expect(nyancat.fields_with_locales[:name].size).to eq(1)
71
+ expect(nyancat.fields_with_locales[:name][:'en-US']).to eq("Nyan Cat")
72
+ }
73
+ end
74
+
75
+ it 'can handle entries with multiple locales' do
76
+ vcr('entry_locales') {
77
+ nyancat = create_client.entries(locale: "*").items.first
78
+ expect(nyancat.fields_with_locales[:name].size).to eq(2)
79
+ expect(nyancat.fields_with_locales[:name][:'en-US']).to eq("Nyan Cat")
80
+ expect(nyancat.fields_with_locales[:name][:es]).to eq("Gato Nyan")
81
+ }
82
+ end
83
+ end
84
+ end
63
85
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contentful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Contentful GmbH (Jan Lelis)
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-09 00:00:00.000000000 Z
12
+ date: 2015-12-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: http
@@ -81,6 +81,34 @@ dependencies:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0.2'
84
+ - !ruby/object:Gem::Dependency
85
+ name: guard
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: guard-rspec
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
84
112
  - !ruby/object:Gem::Dependency
85
113
  name: rspec
86
114
  requirement: !ruby/object:Gem::Requirement
@@ -155,6 +183,7 @@ files:
155
183
  - CHANGELOG.md
156
184
  - Gemfile
157
185
  - Gemfile.lock
186
+ - Guardfile
158
187
  - LICENSE.txt
159
188
  - README.md
160
189
  - RELEASE.md
@@ -170,6 +199,7 @@ files:
170
199
  - lib/contentful/array.rb
171
200
  - lib/contentful/asset.rb
172
201
  - lib/contentful/client.rb
202
+ - lib/contentful/constants.rb
173
203
  - lib/contentful/content_type.rb
174
204
  - lib/contentful/deleted_asset.rb
175
205
  - lib/contentful/deleted_entry.rb
@@ -279,7 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
309
  version: '0'
280
310
  requirements: []
281
311
  rubyforge_project:
282
- rubygems_version: 2.2.2
312
+ rubygems_version: 2.4.5.1
283
313
  signing_key:
284
314
  specification_version: 4
285
315
  summary: contentful