openfoodfacts 0.6.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openfoodfacts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Leger
8
- autorequire:
8
+ - Pierre Slamich
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-30 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3.4'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.0'
22
+ version: '6.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,21 +29,21 @@ dependencies:
29
29
  version: '3.4'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5.0'
32
+ version: '6.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: nokogiri
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.7'
39
+ version: '1.16'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.7'
46
+ version: '1.16'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -59,47 +59,47 @@ dependencies:
59
59
  - !ruby/object:Gem::Version
60
60
  version: '2.1'
61
61
  - !ruby/object:Gem::Dependency
62
- name: rake
62
+ name: minitest
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '12.0'
67
+ version: '5.25'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '12.0'
74
+ version: '5.25'
75
75
  - !ruby/object:Gem::Dependency
76
- name: minitest
76
+ name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '5.10'
81
+ version: '13.0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '5.10'
88
+ version: '13.0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: vcr
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '5.1'
95
+ version: '6.0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '5.1'
102
+ version: '6.0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: webmock
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -116,7 +116,7 @@ dependencies:
116
116
  version: '3.11'
117
117
  description: Open Food Facts API Wrapper, the open database about food.
118
118
  email:
119
- - opensource@nleger.com
119
+ - contact@openfoodfacts.org
120
120
  executables: []
121
121
  extensions: []
122
122
  extra_rdoc_files: []
@@ -154,13 +154,11 @@ files:
154
154
  - lib/openfoodfacts/trace.rb
155
155
  - lib/openfoodfacts/user.rb
156
156
  - lib/openfoodfacts/version.rb
157
- - test/minitest_helper.rb
158
- - test/test_openfoodfacts.rb
159
157
  homepage: https://github.com/openfoodfacts/openfoodfacts-ruby
160
158
  licenses:
161
159
  - MIT
162
- metadata: {}
163
- post_install_message:
160
+ metadata:
161
+ rubygems_mfa_required: 'true'
164
162
  rdoc_options: []
165
163
  require_paths:
166
164
  - lib
@@ -175,8 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
173
  - !ruby/object:Gem::Version
176
174
  version: '0'
177
175
  requirements: []
178
- rubygems_version: 3.2.3
179
- signing_key:
176
+ rubygems_version: 3.6.9
180
177
  specification_version: 4
181
178
  summary: Open Food Facts API Wrapper
182
179
  test_files: []
@@ -1,18 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
- require 'openfoodfacts'
3
-
4
- require 'minitest/autorun'
5
-
6
- require 'webmock/minitest'
7
- require 'vcr'
8
-
9
- # Avoid OpenSSL certificate verify failed error
10
- if ENV.has_key?('APPVEYOR') && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.4')
11
- require 'openssl'
12
- OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
13
- end
14
-
15
- VCR.configure do |c|
16
- c.cassette_library_dir = "test/fixtures"
17
- c.hook_into :webmock
18
- end
@@ -1,329 +0,0 @@
1
- require_relative 'minitest_helper'
2
-
3
- class TestOpenfoodfacts < Minitest::Test
4
-
5
- # Gem
6
-
7
- def test_that_it_has_a_version_number
8
- refute_nil ::Openfoodfacts::VERSION
9
- end
10
-
11
- # Locale
12
-
13
- def test_it_fetches_locales
14
- VCR.use_cassette("index") do
15
- locales = ::Openfoodfacts::Locale.all
16
- assert_includes locales.map { |locale| locale['code'] }, "gd"
17
- end
18
- end
19
-
20
- # User
21
-
22
- def test_it_login_user
23
- VCR.use_cassette("login_user", record: :once, match_requests_on: [:host, :path]) do
24
- user = ::Openfoodfacts::User.login("wrong", "absolutely")
25
- assert_nil user
26
- end
27
- end
28
-
29
- # Product
30
-
31
- def test_it_returns_product_url
32
- product = ::Openfoodfacts::Product.new(code: "3029330003533")
33
- assert_equal ::Openfoodfacts::Product.url(product.code, locale: 'ca'), product.url(locale: 'ca')
34
- end
35
-
36
- def test_it_returns_product_weburl
37
- product = ::Openfoodfacts::Product.new(code: "3029330003533")
38
- assert_equal "https://world.openfoodfacts.org/product/#{product.code}", product.weburl(locale: 'world')
39
- end
40
-
41
- def test_it_fetches_product
42
- product_code = "3029330003533"
43
-
44
- VCR.use_cassette("fetch_product_#{product_code}", record: :once, match_requests_on: [:host, :path]) do
45
- product = ::Openfoodfacts::Product.new(code: product_code)
46
- product.fetch
47
- refute_empty product.brands_tags
48
- end
49
- end
50
-
51
- def test_it_get_product
52
- product_code = "3029330003533"
53
-
54
- VCR.use_cassette("product_#{product_code}", record: :once, match_requests_on: [:host, :path]) do
55
- assert_equal ::Openfoodfacts::Product.get(product_code).code, product_code
56
- end
57
- end
58
-
59
- def test_that_it_search
60
- term = "coca"
61
- first_product = nil
62
-
63
- VCR.use_cassette("search_#{term}") do
64
- products = ::Openfoodfacts::Product.search(term, page_size: 42)
65
- first_product = products.first
66
-
67
- assert_match(/#{term}/i, products.last["product_name"])
68
- assert_match(/#{term}/i, ::Openfoodfacts::Product.search(term).last["product_name"])
69
- assert_equal products.size, 42
70
- end
71
-
72
- VCR.use_cassette("search_#{term}_1_000_000") do
73
- refute_equal ::Openfoodfacts::Product.search(term, page: 2).first.code, first_product.code
74
- end
75
- end
76
-
77
- =begin
78
- # Test disable in order to wait for a dedicated test account to not alter real data
79
- def test_it_updates_product
80
- product_code = "3029330003533"
81
- product = ::Openfoodfacts::Product.new(code: product_code)
82
- product_last_modified_t = nil
83
-
84
- VCR.use_cassette("fetch_product_#{product_code}", record: :all, match_requests_on: [:host, :path]) do
85
- product.fetch
86
- product_last_modified_t = product.last_modified_t
87
- end
88
-
89
- VCR.use_cassette("update_product_#{product_code}", record: :all, match_requests_on: [:host, :path]) do
90
- product.update # Empty update are accepted, allow testing without altering data.
91
- end
92
-
93
- VCR.use_cassette("refetch_product_#{product_code}", record: :all, match_requests_on: [:host, :path]) do
94
- product.fetch
95
- end
96
-
97
- refute_equal product_last_modified_t, product.last_modified_t
98
- end
99
- =end
100
-
101
-
102
- # Additives
103
-
104
- def test_it_fetches_additives
105
- VCR.use_cassette("additives") do
106
- additives = ::Openfoodfacts::Additive.all # World to have riskiness
107
- assert_includes additives.map { |additive| additive['url'] }, "https://world.openfoodfacts.org/additive/e330-citric-acid"
108
- refute_nil additives.detect { |additive| !additive['riskiness'].nil? }
109
- end
110
- end
111
-
112
- def test_it_fetches_additives_for_locale
113
- VCR.use_cassette("additives_locale") do
114
- additives = ::Openfoodfacts::Additive.all(locale: 'fr')
115
- assert_includes additives.map { |additive| additive['url'] }, "https://fr.openfoodfacts.org/additif/e330-acide-citrique"
116
- end
117
- end
118
-
119
- def test_it_fetches_products_with_additive
120
- additive = ::Openfoodfacts::Additive.new("url" => "https://world.openfoodfacts.org/additive/e452i-sodium-polyphosphate")
121
- VCR.use_cassette("products_with_additive") do
122
- products_with_additive = additive.products(page: 1)
123
- refute_empty products_with_additive
124
- end
125
- end
126
-
127
- # Brands
128
-
129
- def test_it_fetches_brands
130
- VCR.use_cassette("brands") do
131
- brands = ::Openfoodfacts::Brand.all
132
- assert_includes brands.map { |brand| brand['name'] }, "Carrefour"
133
- end
134
- end
135
-
136
- def test_it_fetches_brands_for_locale
137
- VCR.use_cassette("brands_locale") do
138
- brands = ::Openfoodfacts::Brand.all(locale: 'fr')
139
- assert_includes brands.map { |brand| brand['name'] }, "Loue"
140
- end
141
- end
142
-
143
- def test_it_fetches_products_for_brand
144
- brand = ::Openfoodfacts::Brand.new("url" => "https://world.openfoodfacts.org/brand/bel")
145
- VCR.use_cassette("products_for_brand") do
146
- products_for_brand = brand.products(page: 1)
147
- refute_empty products_for_brand
148
- end
149
- end
150
-
151
- # Nutrition Grades
152
-
153
- def test_it_fetches_nutrition_grades
154
- VCR.use_cassette("nutrition_grades") do
155
- nutrition_grades = ::Openfoodfacts::NutritionGrade.all
156
- assert_includes nutrition_grades.map { |nutrition_grade| nutrition_grade['name'] }, "Unknown"
157
- end
158
- end
159
-
160
- def test_it_fetches_nutrition_grades_for_locale
161
- VCR.use_cassette("nutrition_grades_locale") do
162
- nutrition_grades = ::Openfoodfacts::NutritionGrade.all(locale: 'fr')
163
- assert_includes nutrition_grades.map { |nutrition_grade| nutrition_grade['name'] }, "Inconnu"
164
- end
165
- end
166
-
167
- def test_it_fetches_products_for_nutrition_grade
168
- nutrition_grade = ::Openfoodfacts::NutritionGrade.new("url" => "https://world.openfoodfacts.org/nutrition-grade/c")
169
- VCR.use_cassette("products_for_nutrition_grade") do
170
- products_for_nutrition_grade = nutrition_grade.products(page: 1)
171
- refute_empty products_for_nutrition_grade
172
- end
173
- end
174
-
175
- # Languages
176
-
177
- def test_it_fetches_languages
178
- VCR.use_cassette("languages") do
179
- languages = ::Openfoodfacts::Language.all
180
- assert_includes languages.map { |language| language['name'] }, "French"
181
- end
182
- end
183
-
184
- def test_it_fetches_languages_for_locale
185
- VCR.use_cassette("languages_locale") do
186
- languages = ::Openfoodfacts::Language.all(locale: 'fr')
187
- assert_includes languages.map { |language| language['name'] }, "Anglais"
188
- end
189
- end
190
-
191
- def test_it_fetches_products_for_language
192
- language = ::Openfoodfacts::Language.new("url" => "https://world.openfoodfacts.org/language/french")
193
- VCR.use_cassette("products_for_language") do
194
- products_for_language = language.products(page: 1)
195
- refute_empty products_for_language
196
- end
197
- end
198
-
199
- # Product states
200
-
201
- def test_it_fetches_product_states
202
- VCR.use_cassette("product_states") do
203
- product_states = ::Openfoodfacts::ProductState.all
204
- assert_equal "https://world.openfoodfacts.org/state/front-photo-not-selected", product_states.last.url
205
- end
206
- end
207
-
208
- def test_it_fetches_product_states_for_locale
209
- VCR.use_cassette("product_states_locale") do
210
- product_states = ::Openfoodfacts::ProductState.all(locale: 'fr')
211
- assert_equal "https://fr.openfoodfacts.org/etat/en:front-photo-not-selected", product_states.last.url
212
- end
213
- end
214
-
215
- def test_it_fetches_products_for_state
216
- product_state = ::Openfoodfacts::ProductState.new("url" => "https://world.openfoodfacts.org/state/photos-uploaded", "products_count" => 22)
217
- VCR.use_cassette("products_for_state") do
218
- products_for_state = product_state.products(page: 1)
219
- refute_empty products_for_state
220
- end
221
- end
222
-
223
- # Entry date
224
-
225
- def test_it_fetches_entry_dates
226
- VCR.use_cassette("entry_dates") do
227
- entry_dates = ::Openfoodfacts::EntryDate.all
228
- assert_includes entry_dates.map { |entry_date| entry_date['name'] }, "2017-03-09"
229
- end
230
- end
231
-
232
- def test_it_fetches_entry_dates_for_locale
233
- VCR.use_cassette("entry_dates_locale") do
234
- entry_dates = ::Openfoodfacts::EntryDate.all(locale: 'fr')
235
- assert_includes entry_dates.map { |entry_date| entry_date['name'] }, "2017-03-09"
236
- end
237
- end
238
-
239
- def test_it_fetches_products_for_entry_date
240
- entry_date = ::Openfoodfacts::EntryDate.new("url" => "https://world.openfoodfacts.org/entry-date/2014-04-17")
241
- VCR.use_cassette("products_for_entry_date") do
242
- products_for_entry_date = entry_date.products(page: 1)
243
- refute_empty products_for_entry_date
244
- end
245
- end
246
-
247
- # Last edit date
248
-
249
- def test_it_fetches_last_edit_dates
250
- VCR.use_cassette("last_edit_dates") do
251
- last_edit_dates = ::Openfoodfacts::LastEditDate.all
252
- assert_includes last_edit_dates.map { |last_edit_date| last_edit_date['name'] }, "2017-03-23"
253
- end
254
- end
255
-
256
- def test_it_fetches_last_edit_dates_for_locale
257
- VCR.use_cassette("last_edit_dates_locale") do
258
- last_edit_dates = ::Openfoodfacts::LastEditDate.all(locale: 'fr')
259
- assert_includes last_edit_dates.map { |last_edit_date| last_edit_date['name'] }, "2017-03-23"
260
- end
261
- end
262
-
263
- def test_it_fetches_products_for_last_edit_date
264
- last_edit_date = ::Openfoodfacts::LastEditDate.new("url" => "https://world.openfoodfacts.org/last-edit-date/2020-04")
265
- VCR.use_cassette("products_for_last_edit_date") do
266
- products_for_last_edit_date = last_edit_date.products(page: 1)
267
- refute_empty products_for_last_edit_date
268
- end
269
- end
270
-
271
- # Number of Ingredients
272
-
273
- def test_it_fetches_numbers_of_ingredients
274
- VCR.use_cassette("numbers_of_ingredients") do
275
- numbers_of_ingredients = ::Openfoodfacts::NumberOfIngredients.all
276
- assert_includes numbers_of_ingredients.map { |number_of_ingredients| number_of_ingredients['name'] }, "38"
277
- end
278
- end
279
-
280
- def test_it_fetches_numbers_of_ingredients_for_locale
281
- VCR.use_cassette("number_of_ingredients_locale") do
282
- numbers_of_ingredients = ::Openfoodfacts::NumberOfIngredients.all(locale: 'fr')
283
- assert_includes numbers_of_ingredients.map { |number_of_ingredients| number_of_ingredients['name'] }, "38"
284
- end
285
- end
286
-
287
- def test_it_fetches_products_for_number_of_ingredients
288
- number_of_ingredients = ::Openfoodfacts::NumberOfIngredients.new("url" => "https://world.openfoodfacts.org/number-of-ingredients/38")
289
- VCR.use_cassette("products_for_number_of_ingredients") do
290
- products_for_number_of_ingredients = number_of_ingredients.products(page: 1)
291
- refute_empty products_for_number_of_ingredients
292
- end
293
- end
294
-
295
- # FAQ
296
-
297
- def test_it_fetches_faq
298
- VCR.use_cassette("faq") do
299
- refute_empty ::Openfoodfacts::Faq.items(locale: 'fr')
300
- end
301
- end
302
-
303
- # Mission
304
-
305
- def test_it_fetches_missions
306
- VCR.use_cassette("missions") do
307
- skip("Website have a bug with Missions page on https://fr.openfoodfacts.org/missions")
308
- refute_empty ::Openfoodfacts::Mission.all(locale: 'fr')
309
- end
310
- end
311
-
312
- def test_it_fetches_mission
313
- VCR.use_cassette("mission", record: :once, match_requests_on: [:host, :path]) do
314
- skip("Website have a bug with Mission page on https://fr.openfoodfacts.org/mission/informateur-100-produits")
315
- mission = ::Openfoodfacts::Mission.new(url: "https://fr.openfoodfacts.org/mission/informateur-100-produits")
316
- mission.fetch
317
- refute_empty mission.users
318
- end
319
- end
320
-
321
- # Press
322
-
323
- def test_it_fetches_press
324
- VCR.use_cassette("press") do
325
- refute_empty ::Openfoodfacts::Press.items(locale: 'fr')
326
- end
327
- end
328
-
329
- end