Skip to content

Commit

Permalink
refactor!: 658 - api version is now required for barcode and search q…
Browse files Browse the repository at this point in the history
…ueries (#667)

Impacted files:
* `api_get_to_be_completed_products_test.dart`: minor refactoring
* `api_matched_product_v2_test.dart`: minor refactoring
* `api_search_products_test.dart`: added version
* `open_food_api_client.dart`: api version is now required for `getProductFreshness`
* `product_query_configurations.dart`: api version is now required for `ProductQueryConfiguration`; deprecated version 0, (1) and 2
* `product_search_query_configuration.dart`: api version is now required for `ProductSearchQueryConfiguration`

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
  • Loading branch information
monsieurtanuki and teolemon committed Jan 1, 2023
1 parent 11f678a commit c7f3b1d
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 20 deletions.
3 changes: 3 additions & 0 deletions lib/src/open_food_api_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ class OpenFoodAPIClient {
language: language,
country: null,
fields: null,
version: ProductQueryVersion.v3,
),
user: user,
queryType: queryType,
Expand Down Expand Up @@ -357,6 +358,7 @@ class OpenFoodAPIClient {
/// Returns the [ProductFreshness] for all the [barcodes].
static Future<Map<String, ProductFreshness>> getProductFreshness({
required final List<String> barcodes,
required final ProductQueryVersion version,
final User? user,
final OpenFoodFactsLanguage? language,
final OpenFoodFactsCountry? country,
Expand All @@ -376,6 +378,7 @@ class OpenFoodAPIClient {
ProductField.LAST_MODIFIED,
ProductField.STATES_TAGS,
],
version: version,
),
queryType: queryType,
);
Expand Down
8 changes: 7 additions & 1 deletion lib/src/utils/product_query_configurations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,14 @@ class ProductQueryVersion {

final int version;

// TODO: deprecated from 2022-12-29; remove when old enough
@Deprecated('Use v3 instead')
static const ProductQueryVersion v0 = ProductQueryVersion(0);

// TODO: deprecated from 2022-12-29; remove when old enough
@Deprecated('Use v3 instead')
static const ProductQueryVersion v2 = ProductQueryVersion(2);

static const ProductQueryVersion v3 = ProductQueryVersion(3);

String getPath(final String barcode) {
Expand All @@ -37,7 +43,7 @@ class ProductQueryConfiguration extends AbstractQueryConfiguration {
/// parameter's description.
ProductQueryConfiguration(
this.barcode, {
this.version = ProductQueryVersion.v0,
required this.version,
final OpenFoodFactsLanguage? language,
final List<OpenFoodFactsLanguage> languages = const [],
final OpenFoodFactsCountry? country,
Expand Down
2 changes: 1 addition & 1 deletion lib/src/utils/product_search_query_configuration.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class ProductSearchQueryConfiguration extends AbstractQueryConfiguration {
final OpenFoodFactsCountry? country,
final List<ProductField>? fields,
required List<Parameter> parametersList,
this.version = ProductQueryVersion.v3,
required final this.version,
}) : super(
language: language,
languages: languages,
Expand Down
1 change: 1 addition & 0 deletions test/api_get_to_be_completed_products_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ void main() {
parametersList: [
StatesTagsParameter(map: {ProductState.COMPLETED: false}),
],
version: ProductQueryVersion.v3,
);

final SearchResult result;
Expand Down
1 change: 1 addition & 0 deletions test/api_matched_product_v2_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ void main() {
parametersList: [BarcodeParameter.list(inputBarcodes)],
language: language,
fields: [ProductField.BARCODE, ProductField.ATTRIBUTE_GROUPS],
version: ProductQueryVersion.v3,
),
);
expect(result.count, expectedScores.keys.length);
Expand Down
63 changes: 45 additions & 18 deletions test/api_search_products_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'test_constants.dart';
void main() {
OpenFoodAPIConfiguration.globalQueryType = QueryType.PROD;
OpenFoodAPIConfiguration.globalUser = TestConstants.PROD_USER;
const ProductQueryVersion version = ProductQueryVersion.v3;

group('$OpenFoodAPIClient search products', () {
const String UNKNOWN_BARCODE = '1111111111111111111111111111111';
Expand Down Expand Up @@ -58,6 +59,7 @@ void main() {
fields: [ProductField.BARCODE],
language: OpenFoodFactsLanguage.FRENCH,
country: OpenFoodFactsCountry.FRANCE,
version: version,
),
);

Expand Down Expand Up @@ -125,9 +127,11 @@ void main() {

final ProductSearchQueryConfiguration configuration =
ProductSearchQueryConfiguration(
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.GERMAN);
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.GERMAN,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
TestConstants.PROD_USER,
Expand All @@ -151,9 +155,11 @@ void main() {

final ProductSearchQueryConfiguration configuration =
ProductSearchQueryConfiguration(
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.ENGLISH);
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.ENGLISH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
TestConstants.PROD_USER,
Expand Down Expand Up @@ -199,6 +205,7 @@ void main() {
],
language: OpenFoodFactsLanguage.FRENCH,
country: OpenFoodFactsCountry.FRANCE,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -320,9 +327,11 @@ void main() {

final ProductSearchQueryConfiguration configuration =
ProductSearchQueryConfiguration(
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.GERMAN);
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.GERMAN,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
TestConstants.PROD_USER,
Expand All @@ -346,9 +355,11 @@ void main() {

final ProductSearchQueryConfiguration configuration =
ProductSearchQueryConfiguration(
parametersList: parameters,
fields: [ProductField.BARCODE],
language: OpenFoodFactsLanguage.FRENCH);
parametersList: parameters,
fields: [ProductField.BARCODE],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
TestConstants.PROD_USER,
Expand Down Expand Up @@ -378,6 +389,7 @@ void main() {
parametersList: parameters,
language: OpenFoodFactsLanguage.GERMAN,
fields: <ProductField>[ProductField.IMAGES],
version: version,
);

SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -407,6 +419,7 @@ void main() {
parametersList: parameters,
fields: [ProductField.BARCODE],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -439,9 +452,11 @@ void main() {

final ProductSearchQueryConfiguration configuration =
ProductSearchQueryConfiguration(
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.FRENCH);
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
TestConstants.PROD_USER,
Expand Down Expand Up @@ -525,6 +540,7 @@ void main() {
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -572,6 +588,7 @@ void main() {
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -601,6 +618,7 @@ void main() {
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.GERMAN,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -638,9 +656,11 @@ void main() {

final ProductSearchQueryConfiguration configuration =
ProductSearchQueryConfiguration(
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.GERMAN);
parametersList: parameters,
fields: [ProductField.ALL],
language: OpenFoodFactsLanguage.GERMAN,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
TestConstants.TEST_USER,
Expand All @@ -663,6 +683,7 @@ void main() {
parametersList: [BarcodeParameter.list(BARCODES)],
fields: [ProductField.BARCODE, ProductField.NAME],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand All @@ -688,6 +709,7 @@ void main() {
user: TestConstants.PROD_USER,
language: OpenFoodFactsLanguage.FRENCH,
country: OpenFoodFactsCountry.FRANCE,
version: version,
);

int count = 0;
Expand All @@ -713,6 +735,7 @@ void main() {
],
fields: [ProductField.BARCODE, ProductField.NAME],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -741,6 +764,7 @@ void main() {
PnnsGroup2Filter(pnnsGroup2: PnnsGroup2.POTATOES),
PageNumber(page: 3),
],
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -769,6 +793,7 @@ void main() {
parametersList: [BarcodeParameter.list(manyBarcodes)],
fields: [ProductField.BARCODE, ProductField.NAME],
language: OpenFoodFactsLanguage.FRENCH,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -869,6 +894,7 @@ void main() {
fields: [ProductField.BARCODE, ProductField.ALLERGENS],
language: OpenFoodFactsLanguage.FRENCH,
country: OpenFoodFactsCountry.FRANCE,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down Expand Up @@ -977,6 +1003,7 @@ void main() {
fields: [ProductField.BARCODE, ProductField.STATES_TAGS],
language: OpenFoodFactsLanguage.FRENCH,
country: OpenFoodFactsCountry.FRANCE,
version: version,
);

final SearchResult result = await OpenFoodAPIClient.searchProducts(
Expand Down

0 comments on commit c7f3b1d

Please sign in to comment.