From efa9faefc2bacf37377b458fec9837dff34d6b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Thu, 12 Dec 2024 17:22:51 +0100 Subject: [PATCH 01/15] refactor: rename ecoscore/eco-score fields to environmental-score --- cgi/product_jqm_multilingual.pl | 8 +- cgi/product_multilingual.pl | 2 +- cgi/search.pl | 4 +- ...AGRIBALYSE3.1.1_produits alimentaires.xlsx | Bin 8631720 -> 0 bytes .../agribalyse/AGRIBALYSE_summary.csv | 2518 --- .../agribalyse/AGRIBALYSE_version.txt | 1 - .../ecoscore/agribalyse/AGRIBALYSE_vf.csv.0 | 18 - .../ecoscore/agribalyse/AGRIBALYSE_vf.csv.1 | 2523 --- .../ecoscore/agribalyse/AGRIBALYSE_vf.csv.2 | 2526 --- .../ecoscore/agribalyse/AGRIBALYSE_vf.csv.3 | 6807 -------- .../ecoscore/agribalyse/AGRIBALYSE_vf.csv.4 | 12924 ---------------- .../ecoscore/agribalyse/AGRIBALYSE_vf.csv.5 | 41 - .../ecoscore/agribalyse/AGRIBALYSE_vf.csv.6 | 22 - .../ecoscore/agribalyse/ssconvert.sh | 8 - .../data/Eco_score_Calculateur.csv.11 | 31 - .../data/Eco_score_Calculateur.csv.12 | 26 - .../ecoscore/data/Eco_score_Calculateur.csv.9 | 258 - external-data/ecoscore/data/distances.csv | 255 - external-data/ecoscore/data/fr_countries.csv | 256 - .../ecoscore/data/fr_packaging_materials.csv | 34 - .../ecoscore/data/fr_packaging_shapes.csv | 49 - external-data/ecoscore/data/ssconvert.sh | 2 - lib/ProductOpener/API.pm | 20 +- lib/ProductOpener/Attributes.pm | 86 +- lib/ProductOpener/Config_obf.pm | 8 +- lib/ProductOpener/Config_off.pm | 30 +- lib/ProductOpener/Config_opf.pm | 6 +- lib/ProductOpener/Config_opff.pm | 8 +- lib/ProductOpener/DataQualityFood.pm | 35 +- lib/ProductOpener/Display.pm | 137 +- .../{Ecoscore.pm => EnvironmentalScore.pm} | 770 +- lib/ProductOpener/Export.pm | 28 +- lib/ProductOpener/FoodProducts.pm | 4 +- lib/ProductOpener/ForestFootprint.pm | 6 +- lib/ProductOpener/Import.pm | 2 +- lib/ProductOpener/Ingredients.pm | 2 +- lib/ProductOpener/KnowledgePanels.pm | 169 +- lib/ProductOpener/KnowledgePanelsTags.pm | 2 +- lib/ProductOpener/LoadData.pm | 4 +- lib/ProductOpener/PackagingStats.pm | 2 +- lib/ProductOpener/Products.pm | 4 +- lib/ProductOpener/ProductsFeatures.pm | 2 +- lib/ProductOpener/Tags.pm | 2 +- lib/startup_apache2.pl | 2 +- po/common/aa.po | 198 +- po/common/ach.po | 198 +- po/common/af.po | 198 +- po/common/ak.po | 198 +- po/common/am.po | 198 +- po/common/ar.po | 198 +- po/common/as.po | 198 +- po/common/ast.po | 198 +- po/common/az.po | 198 +- po/common/be.po | 198 +- po/common/ber.po | 198 +- po/common/bg.po | 200 +- po/common/bm.po | 198 +- po/common/bn.po | 198 +- po/common/bo.po | 198 +- po/common/br.po | 198 +- po/common/bs.po | 198 +- po/common/ca.po | 202 +- po/common/ce.po | 198 +- po/common/chr.po | 198 +- po/common/co.po | 198 +- po/common/common.pot | 200 +- po/common/crs.po | 198 +- po/common/cs.po | 200 +- po/common/cv.po | 198 +- po/common/cy.po | 198 +- po/common/da.po | 200 +- po/common/de.po | 202 +- po/common/el.po | 198 +- po/common/en.po | 202 +- po/common/en_AU.po | 202 +- po/common/en_GB.po | 202 +- po/common/eo.po | 198 +- po/common/es.po | 202 +- po/common/et.po | 198 +- po/common/eu.po | 198 +- po/common/fa.po | 198 +- po/common/fi.po | 200 +- po/common/fil.po | 198 +- po/common/fo.po | 198 +- po/common/fr.po | 200 +- po/common/ga.po | 198 +- po/common/gd.po | 198 +- po/common/gl.po | 198 +- po/common/gu.po | 198 +- po/common/ha.po | 198 +- po/common/he.po | 200 +- po/common/hi.po | 198 +- po/common/hr.po | 200 +- po/common/ht.po | 198 +- po/common/hu.po | 200 +- po/common/hy.po | 198 +- po/common/id.po | 202 +- po/common/ii.po | 198 +- po/common/is.po | 198 +- po/common/it.po | 202 +- po/common/iu.po | 198 +- po/common/ja.po | 200 +- po/common/jv.po | 198 +- po/common/ka.po | 198 +- po/common/kab.po | 198 +- po/common/kk.po | 198 +- po/common/km.po | 198 +- po/common/kmr_TR.po | 198 +- po/common/kn.po | 198 +- po/common/ko.po | 200 +- po/common/kw.po | 198 +- po/common/ky.po | 198 +- po/common/la.po | 198 +- po/common/lb.po | 198 +- po/common/lo.po | 198 +- po/common/lol.po | 194 +- po/common/lt.po | 202 +- po/common/lv.po | 198 +- po/common/mg.po | 198 +- po/common/mi.po | 198 +- po/common/ml.po | 198 +- po/common/mn.po | 198 +- po/common/mr.po | 198 +- po/common/ms.po | 200 +- po/common/mt.po | 198 +- po/common/my.po | 198 +- po/common/nb.po | 202 +- po/common/ne.po | 198 +- po/common/nl_BE.po | 202 +- po/common/nl_NL.po | 202 +- po/common/nn.po | 198 +- po/common/no.po | 198 +- po/common/nr.po | 198 +- po/common/oc.po | 198 +- po/common/or.po | 198 +- po/common/pa.po | 198 +- po/common/pl.po | 202 +- po/common/pt_BR.po | 202 +- po/common/pt_PT.po | 202 +- po/common/qu.po | 198 +- po/common/rm.po | 198 +- po/common/ro.po | 202 +- po/common/ru.po | 200 +- po/common/sa.po | 198 +- po/common/sat.po | 198 +- po/common/sc.po | 198 +- po/common/sco.po | 198 +- po/common/sd.po | 198 +- po/common/sg.po | 198 +- po/common/si.po | 198 +- po/common/sk.po | 198 +- po/common/sl.po | 200 +- po/common/sma.po | 198 +- po/common/sn.po | 198 +- po/common/so.po | 198 +- po/common/son.po | 198 +- po/common/sq.po | 198 +- po/common/sr.po | 198 +- po/common/sr_CS.po | 198 +- po/common/sr_RS.po | 198 +- po/common/ss.po | 198 +- po/common/st.po | 198 +- po/common/sv.po | 198 +- po/common/sw.po | 198 +- po/common/ta.po | 198 +- po/common/te.po | 198 +- po/common/tg.po | 198 +- po/common/th.po | 198 +- po/common/ti.po | 198 +- po/common/tl.po | 198 +- po/common/tn.po | 198 +- po/common/tr.po | 200 +- po/common/ts.po | 198 +- po/common/tt.po | 198 +- po/common/tw.po | 198 +- po/common/ty.po | 198 +- po/common/tzl.po | 198 +- po/common/ug.po | 198 +- po/common/uk.po | 200 +- po/common/ur.po | 198 +- po/common/uz.po | 198 +- po/common/val.po | 198 +- po/common/ve.po | 198 +- po/common/vec.po | 198 +- po/common/vi.po | 200 +- po/common/vls.po | 198 +- po/common/wa.po | 198 +- po/common/wo.po | 198 +- po/common/xh.po | 198 +- po/common/yi.po | 198 +- po/common/yo.po | 198 +- po/common/zea.po | 198 +- po/common/zh_CN.po | 200 +- po/common/zh_HK.po | 198 +- po/common/zh_TW.po | 198 +- po/common/zu.po | 198 +- po/openbeautyfacts/aa.po | 2 +- po/openbeautyfacts/ach.po | 2 +- po/openbeautyfacts/af.po | 2 +- po/openbeautyfacts/ak.po | 2 +- po/openbeautyfacts/am.po | 2 +- po/openbeautyfacts/ar.po | 2 +- po/openbeautyfacts/as.po | 2 +- po/openbeautyfacts/ast.po | 2 +- po/openbeautyfacts/az.po | 2 +- po/openbeautyfacts/be.po | 2 +- po/openbeautyfacts/ber.po | 2 +- po/openbeautyfacts/bg.po | 2 +- po/openbeautyfacts/bm.po | 2 +- po/openbeautyfacts/bn.po | 2 +- po/openbeautyfacts/bo.po | 2 +- po/openbeautyfacts/br.po | 2 +- po/openbeautyfacts/bs.po | 2 +- po/openbeautyfacts/ca.po | 4 +- po/openbeautyfacts/ce.po | 2 +- po/openbeautyfacts/chr.po | 2 +- po/openbeautyfacts/co.po | 2 +- po/openbeautyfacts/crs.po | 2 +- po/openbeautyfacts/cs.po | 4 +- po/openbeautyfacts/cv.po | 2 +- po/openbeautyfacts/cy.po | 2 +- po/openbeautyfacts/da.po | 4 +- po/openbeautyfacts/de.po | 4 +- po/openbeautyfacts/el.po | 2 +- po/openbeautyfacts/en_AU.po | 4 +- po/openbeautyfacts/en_GB.po | 4 +- po/openbeautyfacts/eo.po | 2 +- po/openbeautyfacts/es.po | 4 +- po/openbeautyfacts/et.po | 2 +- po/openbeautyfacts/eu.po | 2 +- po/openbeautyfacts/fa.po | 2 +- po/openbeautyfacts/fi.po | 4 +- po/openbeautyfacts/fil.po | 2 +- po/openbeautyfacts/fo.po | 2 +- po/openbeautyfacts/fr.po | 4 +- po/openbeautyfacts/ga.po | 2 +- po/openbeautyfacts/gd.po | 2 +- po/openbeautyfacts/gl.po | 2 +- po/openbeautyfacts/gu.po | 2 +- po/openbeautyfacts/ha.po | 2 +- po/openbeautyfacts/he.po | 2 +- po/openbeautyfacts/hi.po | 2 +- po/openbeautyfacts/hr.po | 2 +- po/openbeautyfacts/ht.po | 2 +- po/openbeautyfacts/hu.po | 4 +- po/openbeautyfacts/hy.po | 2 +- po/openbeautyfacts/id.po | 4 +- po/openbeautyfacts/ii.po | 2 +- po/openbeautyfacts/is.po | 2 +- po/openbeautyfacts/it.po | 4 +- po/openbeautyfacts/iu.po | 2 +- po/openbeautyfacts/ja.po | 4 +- po/openbeautyfacts/jv.po | 2 +- po/openbeautyfacts/ka.po | 2 +- po/openbeautyfacts/kab.po | 2 +- po/openbeautyfacts/kk.po | 2 +- po/openbeautyfacts/km.po | 2 +- po/openbeautyfacts/kmr.po | 2 +- po/openbeautyfacts/kmr_TR.po | 2 +- po/openbeautyfacts/kn.po | 2 +- po/openbeautyfacts/ko.po | 2 +- po/openbeautyfacts/ku.po | 2 +- po/openbeautyfacts/kw.po | 2 +- po/openbeautyfacts/ky.po | 2 +- po/openbeautyfacts/la.po | 2 +- po/openbeautyfacts/lb.po | 2 +- po/openbeautyfacts/lo.po | 2 +- po/openbeautyfacts/lol.po | 2 +- po/openbeautyfacts/lt.po | 4 +- po/openbeautyfacts/lv.po | 2 +- po/openbeautyfacts/me.po | 2 +- po/openbeautyfacts/mg.po | 2 +- po/openbeautyfacts/mi.po | 2 +- po/openbeautyfacts/ml.po | 2 +- po/openbeautyfacts/mn.po | 2 +- po/openbeautyfacts/mr.po | 2 +- po/openbeautyfacts/ms.po | 2 +- po/openbeautyfacts/mt.po | 2 +- po/openbeautyfacts/my.po | 2 +- po/openbeautyfacts/nb.po | 4 +- po/openbeautyfacts/ne.po | 4 +- po/openbeautyfacts/nl_BE.po | 4 +- po/openbeautyfacts/nl_NL.po | 4 +- po/openbeautyfacts/nn.po | 2 +- po/openbeautyfacts/no.po | 2 +- po/openbeautyfacts/nr.po | 2 +- po/openbeautyfacts/oc.po | 2 +- po/openbeautyfacts/or.po | 2 +- po/openbeautyfacts/pa.po | 2 +- po/openbeautyfacts/pl.po | 4 +- po/openbeautyfacts/pt_BR.po | 4 +- po/openbeautyfacts/pt_PT.po | 4 +- po/openbeautyfacts/qu.po | 2 +- po/openbeautyfacts/rm.po | 2 +- po/openbeautyfacts/ro.po | 4 +- po/openbeautyfacts/ru.po | 4 +- po/openbeautyfacts/ry.po | 2 +- po/openbeautyfacts/sa.po | 2 +- po/openbeautyfacts/sat.po | 2 +- po/openbeautyfacts/sc.po | 2 +- po/openbeautyfacts/sco.po | 2 +- po/openbeautyfacts/sd.po | 2 +- po/openbeautyfacts/sg.po | 2 +- po/openbeautyfacts/sh.po | 2 +- po/openbeautyfacts/si.po | 2 +- po/openbeautyfacts/sk.po | 4 +- po/openbeautyfacts/sl.po | 2 +- po/openbeautyfacts/sma.po | 2 +- po/openbeautyfacts/sn.po | 2 +- po/openbeautyfacts/so.po | 2 +- po/openbeautyfacts/son.po | 2 +- po/openbeautyfacts/sq.po | 2 +- po/openbeautyfacts/sr.po | 2 +- po/openbeautyfacts/sr_CS.po | 2 +- po/openbeautyfacts/sr_RS.po | 2 +- po/openbeautyfacts/ss.po | 2 +- po/openbeautyfacts/st.po | 2 +- po/openbeautyfacts/sv.po | 2 +- po/openbeautyfacts/sw.po | 2 +- po/openbeautyfacts/ta.po | 2 +- po/openbeautyfacts/te.po | 2 +- po/openbeautyfacts/tg.po | 2 +- po/openbeautyfacts/th.po | 2 +- po/openbeautyfacts/ti.po | 2 +- po/openbeautyfacts/tl.po | 2 +- po/openbeautyfacts/tn.po | 2 +- po/openbeautyfacts/tr.po | 4 +- po/openbeautyfacts/ts.po | 2 +- po/openbeautyfacts/tt.po | 2 +- po/openbeautyfacts/tw.po | 2 +- po/openbeautyfacts/ty.po | 2 +- po/openbeautyfacts/tzl.po | 2 +- po/openbeautyfacts/ug.po | 2 +- po/openbeautyfacts/uk.po | 4 +- po/openbeautyfacts/ur.po | 2 +- po/openbeautyfacts/uz.po | 2 +- po/openbeautyfacts/val.po | 2 +- po/openbeautyfacts/ve.po | 2 +- po/openbeautyfacts/vec.po | 2 +- po/openbeautyfacts/vi.po | 4 +- po/openbeautyfacts/vls.po | 2 +- po/openbeautyfacts/wa.po | 2 +- po/openbeautyfacts/wo.po | 2 +- po/openbeautyfacts/xh.po | 2 +- po/openbeautyfacts/yi.po | 2 +- po/openbeautyfacts/yo.po | 2 +- po/openbeautyfacts/zea.po | 2 +- po/openbeautyfacts/zh_CN.po | 4 +- po/openbeautyfacts/zh_HK.po | 2 +- po/openbeautyfacts/zh_TW.po | 2 +- po/openbeautyfacts/zu.po | 2 +- po/openpetfoodfacts/aa.po | 2 +- po/openpetfoodfacts/ach.po | 2 +- po/openpetfoodfacts/af.po | 2 +- po/openpetfoodfacts/ak.po | 2 +- po/openpetfoodfacts/am.po | 2 +- po/openpetfoodfacts/ar.po | 2 +- po/openpetfoodfacts/as.po | 2 +- po/openpetfoodfacts/ast.po | 2 +- po/openpetfoodfacts/az.po | 2 +- po/openpetfoodfacts/be.po | 2 +- po/openpetfoodfacts/ber.po | 2 +- po/openpetfoodfacts/bg.po | 2 +- po/openpetfoodfacts/bm.po | 2 +- po/openpetfoodfacts/bn.po | 2 +- po/openpetfoodfacts/bo.po | 2 +- po/openpetfoodfacts/br.po | 2 +- po/openpetfoodfacts/bs.po | 2 +- po/openpetfoodfacts/ca.po | 4 +- po/openpetfoodfacts/ce.po | 2 +- po/openpetfoodfacts/chr.po | 2 +- po/openpetfoodfacts/co.po | 2 +- po/openpetfoodfacts/crs.po | 2 +- po/openpetfoodfacts/cs.po | 4 +- po/openpetfoodfacts/cv.po | 2 +- po/openpetfoodfacts/cy.po | 2 +- po/openpetfoodfacts/da.po | 4 +- po/openpetfoodfacts/de.po | 4 +- po/openpetfoodfacts/el.po | 2 +- po/openpetfoodfacts/en_AU.po | 4 +- po/openpetfoodfacts/en_GB.po | 4 +- po/openpetfoodfacts/eo.po | 2 +- po/openpetfoodfacts/es.po | 4 +- po/openpetfoodfacts/et.po | 2 +- po/openpetfoodfacts/eu.po | 2 +- po/openpetfoodfacts/fa.po | 2 +- po/openpetfoodfacts/fi.po | 4 +- po/openpetfoodfacts/fil.po | 2 +- po/openpetfoodfacts/fo.po | 2 +- po/openpetfoodfacts/fr.po | 4 +- po/openpetfoodfacts/ga.po | 2 +- po/openpetfoodfacts/gd.po | 2 +- po/openpetfoodfacts/gl.po | 2 +- po/openpetfoodfacts/gu.po | 2 +- po/openpetfoodfacts/ha.po | 2 +- po/openpetfoodfacts/he.po | 2 +- po/openpetfoodfacts/hi.po | 2 +- po/openpetfoodfacts/hr.po | 2 +- po/openpetfoodfacts/ht.po | 2 +- po/openpetfoodfacts/hu.po | 4 +- po/openpetfoodfacts/hy.po | 2 +- po/openpetfoodfacts/id.po | 4 +- po/openpetfoodfacts/ii.po | 2 +- po/openpetfoodfacts/is.po | 2 +- po/openpetfoodfacts/it.po | 4 +- po/openpetfoodfacts/iu.po | 2 +- po/openpetfoodfacts/ja.po | 4 +- po/openpetfoodfacts/jv.po | 2 +- po/openpetfoodfacts/ka.po | 2 +- po/openpetfoodfacts/kab.po | 2 +- po/openpetfoodfacts/kk.po | 2 +- po/openpetfoodfacts/km.po | 2 +- po/openpetfoodfacts/kmr_TR.po | 2 +- po/openpetfoodfacts/kn.po | 2 +- po/openpetfoodfacts/ko.po | 2 +- po/openpetfoodfacts/kw.po | 2 +- po/openpetfoodfacts/ky.po | 2 +- po/openpetfoodfacts/la.po | 2 +- po/openpetfoodfacts/lb.po | 2 +- po/openpetfoodfacts/lo.po | 2 +- po/openpetfoodfacts/lol.po | 2 +- po/openpetfoodfacts/lt.po | 4 +- po/openpetfoodfacts/lv.po | 2 +- po/openpetfoodfacts/mg.po | 2 +- po/openpetfoodfacts/mi.po | 2 +- po/openpetfoodfacts/ml.po | 2 +- po/openpetfoodfacts/mn.po | 2 +- po/openpetfoodfacts/mr.po | 2 +- po/openpetfoodfacts/ms.po | 2 +- po/openpetfoodfacts/mt.po | 2 +- po/openpetfoodfacts/my.po | 2 +- po/openpetfoodfacts/nb.po | 4 +- po/openpetfoodfacts/ne.po | 4 +- po/openpetfoodfacts/nl_BE.po | 4 +- po/openpetfoodfacts/nl_NL.po | 4 +- po/openpetfoodfacts/nn.po | 2 +- po/openpetfoodfacts/no.po | 2 +- po/openpetfoodfacts/nr.po | 2 +- po/openpetfoodfacts/oc.po | 2 +- po/openpetfoodfacts/openpetfoodfacts.pot | 4 +- po/openpetfoodfacts/or.po | 2 +- po/openpetfoodfacts/pa.po | 2 +- po/openpetfoodfacts/pl.po | 4 +- po/openpetfoodfacts/pt_BR.po | 4 +- po/openpetfoodfacts/pt_PT.po | 4 +- po/openpetfoodfacts/qu.po | 2 +- po/openpetfoodfacts/rm.po | 2 +- po/openpetfoodfacts/ro.po | 4 +- po/openpetfoodfacts/ru.po | 4 +- po/openpetfoodfacts/sa.po | 2 +- po/openpetfoodfacts/sat.po | 2 +- po/openpetfoodfacts/sc.po | 2 +- po/openpetfoodfacts/sco.po | 2 +- po/openpetfoodfacts/sd.po | 2 +- po/openpetfoodfacts/sg.po | 2 +- po/openpetfoodfacts/si.po | 2 +- po/openpetfoodfacts/sk.po | 4 +- po/openpetfoodfacts/sl.po | 2 +- po/openpetfoodfacts/sma.po | 2 +- po/openpetfoodfacts/sn.po | 2 +- po/openpetfoodfacts/so.po | 2 +- po/openpetfoodfacts/son.po | 2 +- po/openpetfoodfacts/sq.po | 2 +- po/openpetfoodfacts/sr.po | 2 +- po/openpetfoodfacts/sr_CS.po | 2 +- po/openpetfoodfacts/sr_RS.po | 2 +- po/openpetfoodfacts/ss.po | 2 +- po/openpetfoodfacts/st.po | 2 +- po/openpetfoodfacts/sv.po | 2 +- po/openpetfoodfacts/sw.po | 2 +- po/openpetfoodfacts/ta.po | 2 +- po/openpetfoodfacts/te.po | 2 +- po/openpetfoodfacts/tg.po | 2 +- po/openpetfoodfacts/th.po | 2 +- po/openpetfoodfacts/ti.po | 2 +- po/openpetfoodfacts/tl.po | 2 +- po/openpetfoodfacts/tn.po | 2 +- po/openpetfoodfacts/tr.po | 4 +- po/openpetfoodfacts/ts.po | 2 +- po/openpetfoodfacts/tt.po | 2 +- po/openpetfoodfacts/tw.po | 2 +- po/openpetfoodfacts/ty.po | 2 +- po/openpetfoodfacts/tzl.po | 2 +- po/openpetfoodfacts/ug.po | 2 +- po/openpetfoodfacts/uk.po | 4 +- po/openpetfoodfacts/ur.po | 2 +- po/openpetfoodfacts/uz.po | 2 +- po/openpetfoodfacts/val.po | 2 +- po/openpetfoodfacts/ve.po | 2 +- po/openpetfoodfacts/vec.po | 2 +- po/openpetfoodfacts/vi.po | 4 +- po/openpetfoodfacts/vls.po | 2 +- po/openpetfoodfacts/wa.po | 2 +- po/openpetfoodfacts/wo.po | 2 +- po/openpetfoodfacts/xh.po | 2 +- po/openpetfoodfacts/yi.po | 2 +- po/openpetfoodfacts/yo.po | 2 +- po/openpetfoodfacts/zea.po | 2 +- po/openpetfoodfacts/zh_CN.po | 4 +- po/openpetfoodfacts/zh_HK.po | 2 +- po/openpetfoodfacts/zh_TW.po | 2 +- po/openpetfoodfacts/zu.po | 2 +- po/openproductsfacts/aa.po | 2 +- po/openproductsfacts/ach.po | 2 +- po/openproductsfacts/af.po | 2 +- po/openproductsfacts/ak.po | 2 +- po/openproductsfacts/am.po | 2 +- po/openproductsfacts/ar.po | 2 +- po/openproductsfacts/as.po | 2 +- po/openproductsfacts/ast.po | 2 +- po/openproductsfacts/az.po | 2 +- po/openproductsfacts/be.po | 2 +- po/openproductsfacts/ber.po | 2 +- po/openproductsfacts/bg.po | 2 +- po/openproductsfacts/bm.po | 2 +- po/openproductsfacts/bn.po | 2 +- po/openproductsfacts/bo.po | 2 +- po/openproductsfacts/br.po | 2 +- po/openproductsfacts/bs.po | 2 +- po/openproductsfacts/ca.po | 4 +- po/openproductsfacts/ce.po | 2 +- po/openproductsfacts/chr.po | 2 +- po/openproductsfacts/co.po | 2 +- po/openproductsfacts/crs.po | 2 +- po/openproductsfacts/cs.po | 4 +- po/openproductsfacts/cv.po | 2 +- po/openproductsfacts/cy.po | 2 +- po/openproductsfacts/da.po | 4 +- po/openproductsfacts/de.po | 4 +- po/openproductsfacts/el.po | 2 +- po/openproductsfacts/en_AU.po | 4 +- po/openproductsfacts/en_GB.po | 4 +- po/openproductsfacts/eo.po | 2 +- po/openproductsfacts/es.po | 4 +- po/openproductsfacts/et.po | 2 +- po/openproductsfacts/eu.po | 2 +- po/openproductsfacts/fa.po | 2 +- po/openproductsfacts/fi.po | 4 +- po/openproductsfacts/fil.po | 2 +- po/openproductsfacts/fo.po | 2 +- po/openproductsfacts/fr.po | 4 +- po/openproductsfacts/ga.po | 2 +- po/openproductsfacts/gd.po | 2 +- po/openproductsfacts/gl.po | 2 +- po/openproductsfacts/gu.po | 2 +- po/openproductsfacts/ha.po | 2 +- po/openproductsfacts/he.po | 2 +- po/openproductsfacts/hi.po | 2 +- po/openproductsfacts/hr.po | 2 +- po/openproductsfacts/ht.po | 2 +- po/openproductsfacts/hu.po | 4 +- po/openproductsfacts/hy.po | 2 +- po/openproductsfacts/id.po | 4 +- po/openproductsfacts/ii.po | 2 +- po/openproductsfacts/is.po | 2 +- po/openproductsfacts/it.po | 4 +- po/openproductsfacts/iu.po | 2 +- po/openproductsfacts/ja.po | 4 +- po/openproductsfacts/jv.po | 2 +- po/openproductsfacts/ka.po | 2 +- po/openproductsfacts/kab.po | 2 +- po/openproductsfacts/kk.po | 2 +- po/openproductsfacts/km.po | 2 +- po/openproductsfacts/kmr.po | 2 +- po/openproductsfacts/kmr_TR.po | 2 +- po/openproductsfacts/kn.po | 2 +- po/openproductsfacts/ko.po | 2 +- po/openproductsfacts/kw.po | 2 +- po/openproductsfacts/ky.po | 2 +- po/openproductsfacts/la.po | 2 +- po/openproductsfacts/lb.po | 2 +- po/openproductsfacts/lo.po | 2 +- po/openproductsfacts/lol.po | 2 +- po/openproductsfacts/lt.po | 4 +- po/openproductsfacts/lv.po | 2 +- po/openproductsfacts/me.po | 2 +- po/openproductsfacts/mg.po | 2 +- po/openproductsfacts/mi.po | 2 +- po/openproductsfacts/ml.po | 2 +- po/openproductsfacts/mn.po | 2 +- po/openproductsfacts/mr.po | 2 +- po/openproductsfacts/ms.po | 2 +- po/openproductsfacts/mt.po | 2 +- po/openproductsfacts/my.po | 2 +- po/openproductsfacts/nb.po | 4 +- po/openproductsfacts/ne.po | 4 +- po/openproductsfacts/nl_BE.po | 4 +- po/openproductsfacts/nl_NL.po | 4 +- po/openproductsfacts/nn.po | 2 +- po/openproductsfacts/no.po | 2 +- po/openproductsfacts/nr.po | 2 +- po/openproductsfacts/oc.po | 2 +- po/openproductsfacts/openproductsfacts.pot | 2 +- po/openproductsfacts/or.po | 2 +- po/openproductsfacts/pa.po | 2 +- po/openproductsfacts/pl.po | 4 +- po/openproductsfacts/pt_BR.po | 4 +- po/openproductsfacts/pt_PT.po | 4 +- po/openproductsfacts/qu.po | 2 +- po/openproductsfacts/rm.po | 2 +- po/openproductsfacts/ro.po | 4 +- po/openproductsfacts/ru.po | 4 +- po/openproductsfacts/ry.po | 2 +- po/openproductsfacts/sa.po | 2 +- po/openproductsfacts/sat.po | 2 +- po/openproductsfacts/sc.po | 2 +- po/openproductsfacts/sco.po | 2 +- po/openproductsfacts/sd.po | 2 +- po/openproductsfacts/sg.po | 2 +- po/openproductsfacts/sh.po | 2 +- po/openproductsfacts/si.po | 2 +- po/openproductsfacts/sk.po | 4 +- po/openproductsfacts/sl.po | 2 +- po/openproductsfacts/sma.po | 2 +- po/openproductsfacts/sn.po | 2 +- po/openproductsfacts/so.po | 2 +- po/openproductsfacts/son.po | 2 +- po/openproductsfacts/sq.po | 2 +- po/openproductsfacts/sr.po | 2 +- po/openproductsfacts/sr_CS.po | 2 +- po/openproductsfacts/sr_RS.po | 2 +- po/openproductsfacts/ss.po | 2 +- po/openproductsfacts/st.po | 2 +- po/openproductsfacts/sv.po | 2 +- po/openproductsfacts/sw.po | 2 +- po/openproductsfacts/ta.po | 2 +- po/openproductsfacts/te.po | 2 +- po/openproductsfacts/tg.po | 2 +- po/openproductsfacts/th.po | 2 +- po/openproductsfacts/ti.po | 2 +- po/openproductsfacts/tl.po | 2 +- po/openproductsfacts/tn.po | 2 +- po/openproductsfacts/tr.po | 4 +- po/openproductsfacts/ts.po | 2 +- po/openproductsfacts/tt.po | 2 +- po/openproductsfacts/tw.po | 2 +- po/openproductsfacts/ty.po | 2 +- po/openproductsfacts/tzl.po | 2 +- po/openproductsfacts/ug.po | 2 +- po/openproductsfacts/uk.po | 4 +- po/openproductsfacts/ur.po | 2 +- po/openproductsfacts/uz.po | 2 +- po/openproductsfacts/val.po | 2 +- po/openproductsfacts/ve.po | 2 +- po/openproductsfacts/vec.po | 2 +- po/openproductsfacts/vi.po | 4 +- po/openproductsfacts/vls.po | 2 +- po/openproductsfacts/wa.po | 2 +- po/openproductsfacts/wo.po | 2 +- po/openproductsfacts/xh.po | 2 +- po/openproductsfacts/yi.po | 2 +- po/openproductsfacts/yo.po | 2 +- po/openproductsfacts/zea.po | 2 +- po/openproductsfacts/zh_CN.po | 4 +- po/openproductsfacts/zh_HK.po | 2 +- po/openproductsfacts/zh_TW.po | 2 +- po/openproductsfacts/zu.po | 2 +- po/tags/en.po | 4 +- po/tags/hu.po | 12 +- po/tags/tags.pot | 12 +- scripts/add_nutriscore_to_scanbot_csv.pl | 36 +- scripts/create_mongodb_indexes.pl | 4 +- scripts/export_database.pl | 10 +- scripts/export_ecoscore_data.sh | 4 +- scripts/extract_historical_product_data.pl | 2 +- scripts/gen_top_tags_per_country.pl | 12 +- scripts/generate_dump_for_offline_apps.py | 4 +- scripts/import_csv_file.pl | 2 +- scripts/minion_producers.pl | 2 +- scripts/snippets/agribalyse_categories_csv.py | 2 +- scripts/update_all_products.pl | 12 +- .../environment/carbon_footprint_food.tt.json | 18 +- .../ecoscore/production_system.tt.json | 40 - .../environment/environment_card.tt.json | 16 +- .../agribalyse.tt.json | 24 +- .../environmental_score.tt.json} | 20 +- .../environmental_score_extended.tt.json} | 14 +- ...nvironmental_score_not_applicable.tt.json} | 6 +- .../environmental_score_unknown.tt.json} | 8 +- .../origins_of_ingredients.tt.json | 40 +- .../packaging.tt.json | 38 +- .../production_system.tt.json | 40 + .../threatened_species.tt.json | 16 +- .../total.tt.json | 8 +- .../origins_of_ingredients.tt.json | 32 +- .../environment/packaging_recycling.tt.json | 18 +- .../product/includes/ecoscore_details.tt.html | 118 +- .../ecoscore_details_simple_html.tt.html | 92 +- 688 files changed, 16669 insertions(+), 44923 deletions(-) delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE3.1.1_produits alimentaires.xlsx delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_summary.csv delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_version.txt delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_vf.csv.0 delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_vf.csv.1 delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_vf.csv.2 delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_vf.csv.3 delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_vf.csv.4 delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_vf.csv.5 delete mode 100644 external-data/ecoscore/agribalyse/AGRIBALYSE_vf.csv.6 delete mode 100755 external-data/ecoscore/agribalyse/ssconvert.sh delete mode 100644 external-data/ecoscore/data/Eco_score_Calculateur.csv.11 delete mode 100644 external-data/ecoscore/data/Eco_score_Calculateur.csv.12 delete mode 100644 external-data/ecoscore/data/Eco_score_Calculateur.csv.9 delete mode 100644 external-data/ecoscore/data/distances.csv delete mode 100644 external-data/ecoscore/data/fr_countries.csv delete mode 100644 external-data/ecoscore/data/fr_packaging_materials.csv delete mode 100644 external-data/ecoscore/data/fr_packaging_shapes.csv delete mode 100755 external-data/ecoscore/data/ssconvert.sh rename lib/ProductOpener/{Ecoscore.pm => EnvironmentalScore.pm} (55%) delete mode 100644 templates/api/knowledge-panels/environment/ecoscore/production_system.tt.json rename templates/api/knowledge-panels/environment/{ecoscore => environmental_score}/agribalyse.tt.json (60%) rename templates/api/knowledge-panels/environment/{ecoscore/ecoscore.tt.json => environmental_score/environmental_score.tt.json} (71%) rename templates/api/knowledge-panels/environment/{ecoscore/ecoscore_extended.tt.json => environmental_score/environmental_score_extended.tt.json} (84%) rename templates/api/knowledge-panels/environment/{ecoscore/ecoscore_not_applicable.tt.json => environmental_score/environmental_score_not_applicable.tt.json} (65%) rename templates/api/knowledge-panels/environment/{ecoscore/ecoscore_unknown.tt.json => environmental_score/environmental_score_unknown.tt.json} (60%) rename templates/api/knowledge-panels/environment/{ecoscore => environmental_score}/origins_of_ingredients.tt.json (59%) rename templates/api/knowledge-panels/environment/{ecoscore => environmental_score}/packaging.tt.json (71%) create mode 100644 templates/api/knowledge-panels/environment/environmental_score/production_system.tt.json rename templates/api/knowledge-panels/environment/{ecoscore => environmental_score}/threatened_species.tt.json (66%) rename templates/api/knowledge-panels/environment/{ecoscore => environmental_score}/total.tt.json (61%) diff --git a/cgi/product_jqm_multilingual.pl b/cgi/product_jqm_multilingual.pl index 059648b30289d..f2383e669db21 100755 --- a/cgi/product_jqm_multilingual.pl +++ b/cgi/product_jqm_multilingual.pl @@ -52,7 +52,7 @@ =head1 DESCRIPTION use ProductOpener::Ingredients qw/:all/; use ProductOpener::Images qw/:all/; use ProductOpener::DataQuality qw/:all/; -use ProductOpener::Ecoscore qw/:all/; +use ProductOpener::EnvironmentalScore qw/:all/; use ProductOpener::Packaging qw/:all/; use ProductOpener::ForestFootprint qw/:all/; use ProductOpener::Text qw/remove_tags_and_quote/; @@ -266,8 +266,8 @@ =head1 DESCRIPTION push @app_fields, "creator"; } - if ($request_ref->{admin} or ($User_id eq "ecoscore-impact-estimator")) { - push @app_fields, ("ecoscore_extended_data", "ecoscore_extended_data_version"); + if ($request_ref->{admin} or ($User_id eq "environmental-score-impact-estimator")) { + push @app_fields, ("environmental_score_extended_data", "environmental_score_extended_data_version"); } # generate a list of potential languages for language specific fields @@ -385,7 +385,7 @@ =head1 DESCRIPTION } } - elsif ($field eq "ecoscore_extended_data") { + elsif ($field eq "environmental_score_extended_data") { # we expect a JSON value if (defined single_param($field)) { $product_ref->{$field} = decode_json(single_param($field)); diff --git a/cgi/product_multilingual.pl b/cgi/product_multilingual.pl index e86c5cdecef17..d6d2c415c14da 100755 --- a/cgi/product_multilingual.pl +++ b/cgi/product_multilingual.pl @@ -45,7 +45,7 @@ use ProductOpener::KnowledgePanelsContribution qw/create_contribution_card_panel/; use ProductOpener::URL qw/:all/; use ProductOpener::DataQuality qw/:all/; -use ProductOpener::Ecoscore qw/:all/; +use ProductOpener::EnvironmentalScore qw/:all/; use ProductOpener::Packaging qw/apply_rules_to_augment_packaging_component_data get_checked_and_taxonomized_packaging_component_data/; use ProductOpener::ForestFootprint qw/:all/; diff --git a/cgi/search.pl b/cgi/search.pl index fd8279399bf8b..0e78ce4f6de98 100755 --- a/cgi/search.pl +++ b/cgi/search.pl @@ -110,7 +110,7 @@ my @search_fields = qw(brands categories packaging labels origins manufacturing_places emb_codes purchase_places stores countries - ingredients additives allergens traces nutrition_grades nova_groups ecoscore languages creator editors states); + ingredients additives allergens traces nutrition_grades nova_groups environmental_score languages creator editors states); $request_ref->{admin} and push @search_fields, "lang"; @@ -352,7 +352,7 @@ my @other_search_fields = ( "additives_n", "ingredients_n", "known_ingredients_n", "unknown_ingredients_n", "fruits-vegetables-nuts-estimate-from-ingredients", - "forest_footprint", "product_quantity", "nova_group", 'ecoscore_score', + "forest_footprint", "product_quantity", "nova_group", 'environmental_score_score', ); # Add the fields related to packaging diff --git a/external-data/ecoscore/agribalyse/AGRIBALYSE3.1.1_produits alimentaires.xlsx b/external-data/ecoscore/agribalyse/AGRIBALYSE3.1.1_produits alimentaires.xlsx deleted file mode 100644 index 2505bb5f3ecbed8b947a6782734776f89c6e46aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8631720 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

- + - + - - + - + - - + @@ -2828,9 +2828,9 @@

Eco-Score pour ce produit

- + -
- + @@ -2926,7 +2926,7 @@

Eco-Score pour ce produit

- +
@@ -4044,9 +4044,9 @@

Découvrez le projet

diff --git a/tests/integration/expected_test_results/web_html/fr-search-form.html b/tests/integration/expected_test_results/web_html/fr-search-form.html index 31231ffe3186e..05f0818a7aed2 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-form.html +++ b/tests/integration/expected_test_results/web_html/fr-search-form.html @@ -417,7 +417,7 @@

Critères

- + @@ -489,7 +489,7 @@

Critères

- + @@ -854,7 +854,7 @@

Nutriments

- + @@ -1174,7 +1174,7 @@

Nutriments

- + @@ -1573,7 +1573,7 @@

Résultats sur un graphique

- + @@ -1872,7 +1872,7 @@

Résultats sur un graphique

- + diff --git a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html index 9c65b2483b7dc..50f7d36e3ebe8 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html @@ -421,7 +421,7 @@

Résultats de la recherche - France

  • - Produits avec le meilleur Eco-Score + Produits avec le meilleur Eco-Score
  • @@ -672,7 +672,7 @@

    Découvrez le projet

    diff --git a/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html b/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html index 3647f88d7bbcd..2cb48bb5da74e 100644 --- a/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html +++ b/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html @@ -554,7 +554,7 @@

    Discover the project

    diff --git a/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html b/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html index f13d2b042963a..b551b6052ab92 100644 --- a/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html +++ b/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html @@ -1030,7 +1030,7 @@

    Discover the project

    "description":"", "description_short":"High environmental impact", "grade":"d", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-d.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg", "id":"environmental_score", "match":31, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html b/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html index 46af711503465..774b6c25b3493 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-access-category-facet-page.html @@ -1007,7 +1007,7 @@

    Discover the project

    "description":"", "description_short":"High environmental impact", "grade":"d", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-d.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg", "id":"environmental_score", "match":31, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html b/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html index bd9c0e7f82c90..b68610ac70b8c 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-access-nested-facet-page.html @@ -1002,7 +1002,7 @@

    Discover the project

    "description":"", "description_short":"High environmental impact", "grade":"d", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-d.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg", "id":"environmental_score", "match":31, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html b/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html index 28e87c69b61d5..99e154eb54219 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-access-product-page.html @@ -2135,7 +2135,7 @@

    Environment

    > - iconEco-Score for this product > - iconDiscover the project var page_type = "product"; var default_preferences = {"environmental_score":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classify products according to your preferences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Missing data to compute the Nutri-Score","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg","id":"nutriscore","match":0,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"unknown","title":"Nutri-Score unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/gluten-content-unknown.svg","id":"allergens_no_gluten","name":"Gluten","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Gluten"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/milk-content-unknown.svg","id":"allergens_no_milk","name":"Milk","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Milk"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/eggs-content-unknown.svg","id":"allergens_no_eggs","name":"Eggs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Eggs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nuts-content-unknown.svg","id":"allergens_no_nuts","name":"Nuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Nuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/peanuts-content-unknown.svg","id":"allergens_no_peanuts","name":"Peanuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Peanuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sesame-seeds-content-unknown.svg","id":"allergens_no_sesame_seeds","name":"Sesame seeds","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sesame seeds"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/soybeans-content-unknown.svg","id":"allergens_no_soybeans","name":"Soybeans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Soybeans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/celery-content-unknown.svg","id":"allergens_no_celery","name":"Celery","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Celery"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/mustard-content-unknown.svg","id":"allergens_no_mustard","name":"Mustard","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Mustard"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/lupin-content-unknown.svg","id":"allergens_no_lupin","name":"Lupin","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Lupin"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fish-content-unknown.svg","id":"allergens_no_fish","name":"Fish","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Fish"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/crustaceans-content-unknown.svg","id":"allergens_no_crustaceans","name":"Crustaceans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Crustaceans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/molluscs-content-unknown.svg","id":"allergens_no_molluscs","name":"Molluscs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Molluscs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sulphur-dioxide-and-sulphites-content-unknown.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","name":"Sulphur dioxide and sulphites","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegan-status-unknown.svg","id":"vegan","name":"Vegan","panel_id":"ingredients_analysis_en:vegan-status-unknown","status":"unknown","title":"Vegan status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian-status-unknown.svg","id":"vegetarian","name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian-status-unknown","status":"unknown","title":"Vegetarian status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/palm-oil-content-unknown.svg","id":"palm_oil_free","name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil-content-unknown","status":"unknown","title":"Palm oil content unknown"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"High environmental impact","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-d.svg","id":"environmental_score","match":31,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score D"},{"description":"","description_short":"Currently only for products with chicken or eggs","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-not-computed.svg","id":"forest_footprint","match":0,"name":"Forest footprint","status":"known","title":"Forest footprint not computed"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic-unknown.svg","id":"labels_organic","name":"Organic farming","status":"unknown","title":"Missing information: organic product?"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade-unknown.svg","id":"labels_fair_trade","name":"Fair trade","status":"unknown","title":"Missing information: fair trade product?"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Missing data to compute the Nutri-Score","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg","id":"nutriscore","match":0,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"unknown","title":"Nutri-Score unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/gluten-content-unknown.svg","id":"allergens_no_gluten","name":"Gluten","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Gluten"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/milk-content-unknown.svg","id":"allergens_no_milk","name":"Milk","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Milk"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/eggs-content-unknown.svg","id":"allergens_no_eggs","name":"Eggs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Eggs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nuts-content-unknown.svg","id":"allergens_no_nuts","name":"Nuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Nuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/peanuts-content-unknown.svg","id":"allergens_no_peanuts","name":"Peanuts","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Peanuts"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sesame-seeds-content-unknown.svg","id":"allergens_no_sesame_seeds","name":"Sesame seeds","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sesame seeds"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/soybeans-content-unknown.svg","id":"allergens_no_soybeans","name":"Soybeans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Soybeans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/celery-content-unknown.svg","id":"allergens_no_celery","name":"Celery","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Celery"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/mustard-content-unknown.svg","id":"allergens_no_mustard","name":"Mustard","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Mustard"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/lupin-content-unknown.svg","id":"allergens_no_lupin","name":"Lupin","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Lupin"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fish-content-unknown.svg","id":"allergens_no_fish","name":"Fish","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Fish"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/crustaceans-content-unknown.svg","id":"allergens_no_crustaceans","name":"Crustaceans","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Crustaceans"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/molluscs-content-unknown.svg","id":"allergens_no_molluscs","name":"Molluscs","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Molluscs"},{"debug":"too many unknown ingredients: 2 ingredients (1 unknown)","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/sulphur-dioxide-and-sulphites-content-unknown.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","name":"Sulphur dioxide and sulphites","panel_id":"ingredients_analysis_details","status":"unknown","title":"Presence unknown: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegan-status-unknown.svg","id":"vegan","name":"Vegan","panel_id":"ingredients_analysis_en:vegan-status-unknown","status":"unknown","title":"Vegan status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian-status-unknown.svg","id":"vegetarian","name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian-status-unknown","status":"unknown","title":"Vegetarian status unknown"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/palm-oil-content-unknown.svg","id":"palm_oil_free","name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil-content-unknown","status":"unknown","title":"Palm oil content unknown"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"High environmental impact","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg","id":"environmental_score","match":31,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score D"},{"description":"","description_short":"Currently only for products with chicken or eggs","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-not-computed.svg","id":"forest_footprint","match":0,"name":"Forest footprint","status":"known","title":"Forest footprint not computed"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic-unknown.svg","id":"labels_organic","name":"Organic farming","status":"unknown","title":"Missing information: organic product?"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade-unknown.svg","id":"labels_fair_trade","name":"Fair trade","status":"unknown","title":"Missing information: fair trade product?"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html b/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html index 2d7975a448544..07e37761564fe 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html @@ -1071,7 +1071,7 @@

    Discover the project

    "description":"", "description_short":"High environmental impact", "grade":"d", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-d.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg", "id":"environmental_score", "match":31, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/product_read/get-existing-product.html b/tests/integration/expected_test_results/product_read/get-existing-product.html index 2e52286d13352..303ba44b35609 100644 --- a/tests/integration/expected_test_results/product_read/get-existing-product.html +++ b/tests/integration/expected_test_results/product_read/get-existing-product.html @@ -2559,7 +2559,7 @@

    Environment

    > - iconEco-Score for this product > - iconDiscover the project var page_type = "product"; var default_preferences = {"environmental_score":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classify products according to your preferences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Average nutritional quality","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg","id":"nutriscore","match":53.6666666666667,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score C"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg","id":"allergens_no_gluten","match":100,"name":"Gluten","status":"known","title":"Does not contain: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Moderate environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg","id":"environmental_score","match":47,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score C"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9416666666667,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Promotes ecological sustainability and biodiversity.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Organic farming","status":"known","title":"Organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-fair-trade.svg","id":"labels_fair_trade","match":0,"name":"Fair trade","status":"known","title":"Not a fair trade product"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Average nutritional quality","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-c-new-en.svg","id":"nutriscore","match":53.6666666666667,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score C"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg","id":"allergens_no_gluten","match":100,"name":"Gluten","status":"known","title":"Does not contain: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"4 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/0-additives.svg","id":"additives","match":100,"name":"Additives","panel_id":"additives","status":"known","title":"Without additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Moderate environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg","id":"environmental_score","match":47,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score C"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9416666666667,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Promotes ecological sustainability and biodiversity.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Organic farming","status":"known","title":"Organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Fair trade products help producers in developing countries.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-fair-trade.svg","id":"labels_fair_trade","match":0,"name":"Fair trade","status":"known","title":"Not a fair trade product"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form-moderator.html b/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form-moderator.html index 98c54fa55cd8c..d01dc99a69798 100644 --- a/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form-moderator.html +++ b/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form-moderator.html @@ -515,7 +515,7 @@

    Contribution

    -
    • en:EcoScore origins of ingredients origins are 100 percent unknown
      Origins of ingredients are one of the Eco-Score components. They are currently extracted from the ingredient list and the Origins field.
    +
    • en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown
    @@ -523,23 +523,6 @@

    Contribution

  • - - @@ -632,7 +615,7 @@

    Contribution

    -
    • EcoScore - Données étendues - Non calculées
    • en:Food groups 1 unknown
    • en:Food groups 2 unknown
    • en:Food groups 3 unknown
    • Analyse des pourcentages d'ingrédients OK
    +
    • en:environmental-score-extended-data-not-computed
    • en:Food groups 1 unknown
    • en:Food groups 2 unknown
    • en:Food groups 3 unknown
    • Analyse des pourcentages d'ingrédients OK
    diff --git a/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form.html b/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form.html index edb2d104d0607..241e6a7a2adcf 100644 --- a/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form.html +++ b/tests/integration/expected_test_results/protected_product/edit-protected-product-web-form.html @@ -515,7 +515,7 @@

    Contribution

    -
    • en:EcoScore origins of ingredients origins are 100 percent unknown
      Origins of ingredients are one of the Eco-Score components. They are currently extracted from the ingredient list and the Origins field.
    +
    • en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown
    @@ -523,23 +523,6 @@

    Contribution

    - - @@ -632,7 +615,7 @@

    Contribution

    -
    • EcoScore - Données étendues - Non calculées
    • en:Food groups 1 unknown
    • en:Food groups 2 unknown
    • en:Food groups 3 unknown
    • Analyse des pourcentages d'ingrédients OK
    +
    • en:environmental-score-extended-data-not-computed
    • en:Food groups 1 unknown
    • en:Food groups 2 unknown
    • en:Food groups 3 unknown
    • Analyse des pourcentages d'ingrédients OK
    diff --git a/tests/integration/expected_test_results/protected_product/edit-unprotected-product-web-form.html b/tests/integration/expected_test_results/protected_product/edit-unprotected-product-web-form.html index a84accbdb6d9d..7ebffb4c5f049 100644 --- a/tests/integration/expected_test_results/protected_product/edit-unprotected-product-web-form.html +++ b/tests/integration/expected_test_results/protected_product/edit-unprotected-product-web-form.html @@ -515,7 +515,7 @@

    Contribution

    -
    • en:EcoScore origins of ingredients origins are 100 percent unknown
      Origins of ingredients are one of the Eco-Score components. They are currently extracted from the ingredient list and the Origins field.
    +
    • en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown
    @@ -523,23 +523,6 @@

    Contribution

    - - @@ -632,7 +615,7 @@

    Contribution

    -
    • EcoScore - Données étendues - Non calculées
    • en:Food groups 1 unknown
    • en:Food groups 2 unknown
    • en:Food groups 3 unknown
    • Analyse des pourcentages d'ingrédients OK
    +
    • en:environmental-score-extended-data-not-computed
    • en:Food groups 1 unknown
    • en:Food groups 2 unknown
    • en:Food groups 3 unknown
    • Analyse des pourcentages d'ingrédients OK
    diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json index 577b6f44f4a4b..fdec1259a7377 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json @@ -81,7 +81,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -89,17 +89,22 @@ "data_quality_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "data_quality_warnings_tags" : [ "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], + "editors_tags" : [ + "moderator", + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -388,11 +393,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "moderator", - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, @@ -592,8 +592,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-missing-nutrition-data", diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json index 823391f5cb906..3473798570aed 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json @@ -82,7 +82,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -90,17 +90,22 @@ "data_quality_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "data_quality_warnings_tags" : [ "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], + "editors_tags" : [ + "organization-owner", + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -389,11 +394,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "organization-owner", - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, @@ -592,8 +592,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-missing-nutrition-data", diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json index 6ed863aaacc31..7bfb152353974 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json @@ -81,7 +81,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -89,21 +89,26 @@ "data_quality_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "data_quality_warnings_tags" : [ "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "debug_param_sorted_langs" : [ "en", "fr" ], + "editors_tags" : [ + "moderator", + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -392,11 +397,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "moderator", - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, @@ -596,8 +596,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-missing-nutrition-data", diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json index f39f2681ecc57..4f17d82d9d5d2 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json @@ -82,7 +82,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -90,21 +90,26 @@ "data_quality_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "data_quality_warnings_tags" : [ "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "debug_param_sorted_langs" : [ "en", "fr" ], + "editors_tags" : [ + "organization-owner", + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -393,11 +398,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "organization-owner", - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, @@ -596,8 +596,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-missing-nutrition-data", diff --git a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json index a231ab4bf3550..e93c96d6da239 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json @@ -81,7 +81,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -89,17 +89,21 @@ "data_quality_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "data_quality_warnings_tags" : [ "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -388,10 +392,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, @@ -590,8 +590,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-missing-nutrition-data", diff --git a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json index 543ce4d9f0b87..498140380e3b0 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json @@ -81,7 +81,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -89,21 +89,25 @@ "data_quality_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "data_quality_warnings_tags" : [ "en:nutrition-value-under-0-001-g-salt", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], "debug_param_sorted_langs" : [ "en", "fr" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -392,10 +396,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, @@ -594,8 +594,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-missing-nutrition-data", diff --git a/tests/integration/expected_test_results/search_v1/search-no-filter.json b/tests/integration/expected_test_results/search_v1/search-no-filter.json index 0de4ec5143572..fb0c0ca90025f 100644 --- a/tests/integration/expected_test_results/search_v1/search-no-filter.json +++ b/tests/integration/expected_test_results/search_v1/search-no-filter.json @@ -71,7 +71,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -79,17 +79,21 @@ "data_quality_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-production-system-no-label" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -368,10 +372,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.0074375, @@ -548,8 +548,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-2021-c-2023-c", @@ -993,7 +993,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -1001,19 +1001,23 @@ "data_quality_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" + ], + "editors_tags" : [ + "tests" ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -1262,10 +1266,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "generic_name" : "Tester", "generic_name_en" : "Tester", @@ -1369,8 +1369,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", @@ -1622,7 +1622,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -1630,19 +1630,23 @@ "data_quality_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" + ], + "editors_tags" : [ + "tests" ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -1891,10 +1895,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.0132222222222222, @@ -2045,8 +2045,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-2021-a-2023-a", @@ -2450,7 +2450,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -2458,19 +2458,23 @@ "data_quality_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -2722,10 +2726,6 @@ "environmental_score_tags" : [ "unknown" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "generic_name_en" : "Tester", "id" : "0200000000039", @@ -2857,8 +2857,8 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:nutriscore-2021-c-2023-c", "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", @@ -3267,7 +3267,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown" @@ -3275,19 +3275,23 @@ "data_quality_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" + ], + "editors_tags" : [ + "tests" ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -3688,10 +3692,6 @@ "environmental_score_tags" : [ "e" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups" : "en:breakfast-cereals", "food_groups_tags" : [ "en:cereals-and-potatoes", @@ -3800,15 +3800,15 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:nutriscore-2021-a-2023-a", "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", @@ -4242,7 +4242,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown" @@ -4250,19 +4250,23 @@ "data_quality_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" + ], + "editors_tags" : [ + "tests" ], + "entry_dates_tags" : "--ignore--", "environmental_score_data" : { "adjustments" : { "origins_of_ingredients" : { @@ -4663,10 +4667,6 @@ "environmental_score_tags" : [ "e" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", "food_groups" : "en:breakfast-cereals", "food_groups_tags" : [ "en:cereals-and-potatoes", @@ -4776,15 +4776,15 @@ "main_countries_tags" : [], "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:nutriscore-2021-a-2023-a", "en:nutriscore-2021-same-as-2023", "en:nutriscore-computed", diff --git a/tests/integration/expected_test_results/unknown_tags/country-france-exists.html b/tests/integration/expected_test_results/unknown_tags/country-france-exists.html index 58dc55e0b30b8..d5a7b50206882 100644 --- a/tests/integration/expected_test_results/unknown_tags/country-france-exists.html +++ b/tests/integration/expected_test_results/unknown_tags/country-france-exists.html @@ -998,7 +998,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html b/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html index 326b3e3f2cb54..491fef64d3f4a 100644 --- a/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html +++ b/tests/integration/expected_test_results/unknown_tags/ingredient-apple-exists.html @@ -1059,7 +1059,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html b/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html index b52b5e27ebf3a..81f40792fc9d6 100644 --- a/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html +++ b/tests/integration/expected_test_results/unknown_tags/ingredient-someunknowningredient-does-not-exist-but-not-empty.html @@ -998,7 +998,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/fr-categories.html b/tests/integration/expected_test_results/web_html/fr-categories.html index 5f9c8da5bac70..b04ce79b9e9ad 100644 --- a/tests/integration/expected_test_results/web_html/fr-categories.html +++ b/tests/integration/expected_test_results/web_html/fr-categories.html @@ -1094,7 +1094,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", @@ -1422,7 +1422,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1749,7 +1749,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/fr-index.html b/tests/integration/expected_test_results/web_html/fr-index.html index 826420532a0a8..e068fdddfec39 100644 --- a/tests/integration/expected_test_results/web_html/fr-index.html +++ b/tests/integration/expected_test_results/web_html/fr-index.html @@ -1084,7 +1084,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", @@ -1411,7 +1411,7 @@

    Découvrez le projet

    "description":"", "description_short":"Impact environnemental inconnu", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -1738,7 +1738,7 @@

    Découvrez le projet

    "description":"", "description_short":"Impact modéré sur l'environnement", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -2065,7 +2065,7 @@

    Découvrez le projet

    "description":"", "description_short":"Impact modéré sur l'environnement", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -2392,7 +2392,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", @@ -2719,7 +2719,7 @@

    Découvrez le projet

    "description":"", "description_short":"Impact environnemental inconnu", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -3046,7 +3046,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/fr-product-2.html b/tests/integration/expected_test_results/web_html/fr-product-2.html index a346871fa404f..943134b752ae5 100644 --- a/tests/integration/expected_test_results/web_html/fr-product-2.html +++ b/tests/integration/expected_test_results/web_html/fr-product-2.html @@ -2180,7 +2180,7 @@

    Environnement

    > - iconEco-Score pour ce produit > - iconDécouvrez le projet var page_type = "product"; var default_preferences = {"environmental_score":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classer les produits suivant vos préférences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":35.7777777777778,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"Aliments transformés"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg","id":"environmental_score","match":60,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9766666666667,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Encourage la durabilité écologique et la biodiversité.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Agriculture biologique","status":"known","title":"Produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":35.7777777777778,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"12 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"Aliments transformés"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"environmental_score","match":60,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9766666666667,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Encourage la durabilité écologique et la biodiversité.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/organic.svg","id":"labels_organic","match":100,"name":"Agriculture biologique","status":"known","title":"Produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/web_html/fr-product.html b/tests/integration/expected_test_results/web_html/fr-product.html index 873bdd40faefb..1f05c50833b7e 100644 --- a/tests/integration/expected_test_results/web_html/fr-product.html +++ b/tests/integration/expected_test_results/web_html/fr-product.html @@ -2194,7 +2194,7 @@

    Environnement

    > - iconEco-Score pour ce produit > - iconDécouvrez le projet var page_type = "product"; var default_preferences = {"environmental_score":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classer les produits suivant vos préférences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":37.8888888888889,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"Aliments transformés"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg","id":"environmental_score","match":60,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Les produits bios encouragent la durabilité écologique et la biodiversité.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Agriculture biologique","status":"known","title":"Pas un produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Mauvaise qualité nutritionnelle","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d.svg","id":"nutriscore","match":37.8888888888889,"name":"Nutri-Score","panel_id":"nutriscore","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Données nutritionnelles manquantes","name":"Sel","status":"unknown","title":"Sel en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Données nutritionnelles manquantes","name":"Matières grasses","status":"unknown","title":"Matières grasses en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Données nutritionnelles manquantes","name":"Sucres","status":"unknown","title":"Sucres en quantité inconnue"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Données nutritionnelles manquantes","name":"Acides gras saturés","status":"unknown","title":"Acides gras saturés en quantité inconnue"}],"id":"nutritional_quality","name":"Qualité nutritionnelle"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contient : Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Lait","status":"known","title":"Contient : Lait"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Œufs","status":"known","title":"Contient : Œufs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Fruits à coque","status":"known","title":"Ne contient pas : Fruits à coque"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Arachides","status":"known","title":"Ne contient pas : Arachides"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Graines de sésame","status":"known","title":"Ne contient pas : Graines de sésame"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soja","status":"known","title":"Ne contient pas : Soja"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Céleri","status":"known","title":"Ne contient pas : Céleri"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Moutarde","status":"known","title":"Ne contient pas : Moutarde"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Ne contient pas : Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Poisson","status":"known","title":"Ne contient pas : Poisson"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustacés","status":"known","title":"Ne contient pas : Crustacés"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Mollusques","status":"known","title":"Ne contient pas : Mollusques"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Anhydride sulfureux et sulfites","status":"known","title":"Ne contient pas : Anhydride sulfureux et sulfites"}],"id":"allergens","name":"Allergènes","warning":"Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Végétalien","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non végétalien"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Végétarien","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Végétarien"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Sans huile de palme","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Huile de palme"}],"id":"ingredients_analysis","name":"Ingrédients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"Groupe NOVA","panel_id":"nova","status":"known","title":"Aliments transformés"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additifs","panel_id":"additives","status":"known","title":"2 additifs"}],"id":"processing","name":"Transformation des aliments"},{"attributes":[{"description":"","description_short":"Faible impact environnemental","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"environmental_score","match":60,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Pas de risque de déforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Empreinte forêt","status":"known","title":"Très petite empreinte forêt"}],"id":"environment","name":"Environnement"},{"attributes":[{"description":"L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.","description_short":"Les produits bios encouragent la durabilité écologique et la biodiversité.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Agriculture biologique","status":"known","title":"Pas un produit bio"},{"description":"Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.","description_short":"Aide les producteurs des pays en développement.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Commerce équitable","status":"known","title":"Produit du commerce équitable"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/web_html/fr-search-form.html b/tests/integration/expected_test_results/web_html/fr-search-form.html index 05f0818a7aed2..91e7bd39b429e 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-form.html +++ b/tests/integration/expected_test_results/web_html/fr-search-form.html @@ -2014,7 +2014,7 @@

    Résultats sur un graphique

    -

    +

    file error - web/pages/product/includes/environmental_score_details.tt.html: not found

    diff --git a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html index 50f7d36e3ebe8..1db72f60129be 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html @@ -947,7 +947,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1273,7 +1273,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html b/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html index e3b7668a1c4f2..588c39d199432 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results-no-cache.html @@ -947,7 +947,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1274,7 +1274,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/fr-search-results.html b/tests/integration/expected_test_results/web_html/fr-search-results.html index 50f7d36e3ebe8..1db72f60129be 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results.html @@ -947,7 +947,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1273,7 +1273,7 @@

    Découvrez le projet

    "description":"", "description_short":"Faible impact environnemental", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/world-categories.html b/tests/integration/expected_test_results/web_html/world-categories.html index eb377523061ef..c221e1adf6569 100644 --- a/tests/integration/expected_test_results/web_html/world-categories.html +++ b/tests/integration/expected_test_results/web_html/world-categories.html @@ -1220,7 +1220,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", @@ -1548,7 +1548,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1875,7 +1875,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -2202,7 +2202,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", @@ -2529,7 +2529,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", @@ -2856,7 +2856,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/world-index-signedin.html b/tests/integration/expected_test_results/web_html/world-index-signedin.html index d58f825f2bb94..4af09fa83dc73 100644 --- a/tests/integration/expected_test_results/web_html/world-index-signedin.html +++ b/tests/integration/expected_test_results/web_html/world-index-signedin.html @@ -1121,7 +1121,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", @@ -1449,7 +1449,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -1775,7 +1775,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -2102,7 +2102,7 @@

    Discover the project

    "description":"Not yet applicable for the category: Sodas", "description_short":"Not yet applicable for the category", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-not-applicable.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-not-applicable.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -2429,7 +2429,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -2756,7 +2756,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -3083,7 +3083,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -3410,7 +3410,7 @@

    Discover the project

    "description":"", "description_short":"High environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-d.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg", "id":"environmental_score", "match":41, "name":"Eco-Score", @@ -3737,7 +3737,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", @@ -4064,7 +4064,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", @@ -4391,7 +4391,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -4718,7 +4718,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -5045,7 +5045,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/world-index.html b/tests/integration/expected_test_results/web_html/world-index.html index 4284707fa2577..63e3e139d2ef8 100644 --- a/tests/integration/expected_test_results/web_html/world-index.html +++ b/tests/integration/expected_test_results/web_html/world-index.html @@ -1098,7 +1098,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", @@ -1426,7 +1426,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -1752,7 +1752,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -2079,7 +2079,7 @@

    Discover the project

    "description":"Not yet applicable for the category: Sodas", "description_short":"Not yet applicable for the category", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-not-applicable.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-not-applicable.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -2406,7 +2406,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -2733,7 +2733,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -3060,7 +3060,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -3387,7 +3387,7 @@

    Discover the project

    "description":"", "description_short":"High environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-d.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-d.svg", "id":"environmental_score", "match":41, "name":"Eco-Score", @@ -3714,7 +3714,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", @@ -4041,7 +4041,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":67, "name":"Eco-Score", @@ -4368,7 +4368,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", @@ -4695,7 +4695,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -5022,7 +5022,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/world-label-organic.html b/tests/integration/expected_test_results/web_html/world-label-organic.html index ac5542394a18d..670d42d60747d 100644 --- a/tests/integration/expected_test_results/web_html/world-label-organic.html +++ b/tests/integration/expected_test_results/web_html/world-label-organic.html @@ -1210,7 +1210,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", @@ -1538,7 +1538,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1865,7 +1865,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -2192,7 +2192,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -2519,7 +2519,7 @@

    Discover the project

    "description":"", "description_short":"Unknown environmental impact", "grade":"unknown", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-unknown.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", "id":"environmental_score", "match":0, "name":"Eco-Score", diff --git a/tests/integration/expected_test_results/web_html/world-product.html b/tests/integration/expected_test_results/web_html/world-product.html index c2b1fe690c083..5071c95f9264e 100644 --- a/tests/integration/expected_test_results/web_html/world-product.html +++ b/tests/integration/expected_test_results/web_html/world-product.html @@ -2752,7 +2752,7 @@

    Environment

    > - iconEco-Score for this product > - iconDiscover the project var page_type = "product"; var default_preferences = {"environmental_score":"important","nova":"important","nutriscore":"very_important"}; var preferences_text = "Classify products according to your preferences"; -var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Poor nutritional quality","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d-new-en.svg","id":"nutriscore","match":27.3333333333333,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contains: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additives","panel_id":"additives","status":"known","title":"2 additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Low environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg","id":"environmental_score","match":60,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Organic farming","status":"known","title":"Not an organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Helps producers in developing countries.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Fair trade","status":"known","title":"Fair trade product"}],"id":"labels","name":"Labels"}]}; +var product = {"attribute_groups":[{"attributes":[{"description":"","description_short":"Poor nutritional quality","grade":"d","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutriscore-d-new-en.svg","id":"nutriscore","match":27.3333333333333,"name":"Nutri-Score","panel_id":"nutriscore_2023","status":"known","title":"Nutri-Score D"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg","id":"low_salt","missing":"Missing nutrition facts","name":"Salt","status":"unknown","title":"Salt in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg","id":"low_fat","missing":"Missing nutrition facts","name":"Fat","status":"unknown","title":"Fat in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg","id":"low_sugars","missing":"Missing nutrition facts","name":"Sugars","status":"unknown","title":"Sugars in unknown quantity"},{"grade":"unknown","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg","id":"low_saturated_fat","missing":"Missing nutrition facts","name":"Saturated fat","status":"unknown","title":"Saturated fat in unknown quantity"}],"id":"nutritional_quality","name":"Nutritional quality"},{"attributes":[{"debug":"en:gluten in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-gluten.svg","id":"allergens_no_gluten","match":0,"name":"Gluten","status":"known","title":"Contains: Gluten"},{"debug":"en:milk in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg","id":"allergens_no_milk","match":0,"name":"Milk","status":"known","title":"Contains: Milk"},{"debug":"en:eggs in allergens","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg","id":"allergens_no_eggs","match":0,"name":"Eggs","status":"known","title":"Contains: Eggs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg","id":"allergens_no_nuts","match":100,"name":"Nuts","status":"known","title":"Does not contain: Nuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg","id":"allergens_no_peanuts","match":100,"name":"Peanuts","status":"known","title":"Does not contain: Peanuts"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg","id":"allergens_no_sesame_seeds","match":100,"name":"Sesame seeds","status":"known","title":"Does not contain: Sesame seeds"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-soybeans.svg","id":"allergens_no_soybeans","match":100,"name":"Soybeans","status":"known","title":"Does not contain: Soybeans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg","id":"allergens_no_celery","match":100,"name":"Celery","status":"known","title":"Does not contain: Celery"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg","id":"allergens_no_mustard","match":100,"name":"Mustard","status":"known","title":"Does not contain: Mustard"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg","id":"allergens_no_lupin","match":100,"name":"Lupin","status":"known","title":"Does not contain: Lupin"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg","id":"allergens_no_fish","match":100,"name":"Fish","status":"known","title":"Does not contain: Fish"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg","id":"allergens_no_crustaceans","match":100,"name":"Crustaceans","status":"known","title":"Does not contain: Crustaceans"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg","id":"allergens_no_molluscs","match":100,"name":"Molluscs","status":"known","title":"Does not contain: Molluscs"},{"debug":"11 ingredients (0 unknown)","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg","id":"allergens_no_sulphur_dioxide_and_sulphites","match":100,"name":"Sulphur dioxide and sulphites","status":"known","title":"Does not contain: Sulphur dioxide and sulphites"}],"id":"allergens","name":"Allergens","warning":"There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging."},{"attributes":[{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg","id":"vegan","match":0,"name":"Vegan","panel_id":"ingredients_analysis_en:non-vegan","status":"known","title":"Non-vegan"},{"grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg","id":"vegetarian","match":100,"name":"Vegetarian","panel_id":"ingredients_analysis_en:vegetarian","status":"known","title":"Vegetarian"},{"grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg","id":"palm_oil_free","match":0,"name":"Palm oil free","panel_id":"ingredients_analysis_en:palm-oil","status":"known","title":"Palm oil"}],"id":"ingredients_analysis","name":"Ingredients"},{"attributes":[{"grade":"b","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/nova-group-3.svg","id":"nova","match":75,"name":"NOVA group","panel_id":"nova","status":"known","title":"Processed foods"},{"grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg","id":"additives","match":60,"name":"Additives","panel_id":"additives","status":"known","title":"2 additives"}],"id":"processing","name":"Food processing"},{"attributes":[{"description":"","description_short":"Low environmental impact","grade":"c","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg","id":"environmental_score","match":60,"name":"Eco-Score","panel_id":"environmental_score","status":"known","title":"Eco-Score B"},{"description":"","description_short":"Almost no risk of deforestation","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg","id":"forest_footprint","match":99.9118518518518,"name":"Forest footprint","status":"known","title":"Very small forest footprint"}],"id":"environment","name":"Environment"},{"attributes":[{"description":"Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.","description_short":"Organic products promote ecological sustainability and biodiversity.","grade":"e","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/not-organic.svg","id":"labels_organic","match":0,"name":"Organic farming","status":"known","title":"Not an organic product"},{"description":"When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.","description_short":"Helps producers in developing countries.","grade":"a","icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/fair-trade.svg","id":"labels_fair_trade","match":100,"name":"Fair trade","status":"known","title":"Fair trade product"}],"id":"labels","name":"Labels"}]}; diff --git a/tests/integration/expected_test_results/web_html/world-search-results.html b/tests/integration/expected_test_results/web_html/world-search-results.html index 36c1d593482bf..113a57e98e170 100644 --- a/tests/integration/expected_test_results/web_html/world-search-results.html +++ b/tests/integration/expected_test_results/web_html/world-search-results.html @@ -951,7 +951,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1278,7 +1278,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":60, "name":"Eco-Score", @@ -1605,7 +1605,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -1932,7 +1932,7 @@

    Discover the project

    "description":"", "description_short":"Moderate environmental impact", "grade":"c", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-c.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", "id":"environmental_score", "match":50, "name":"Eco-Score", @@ -2258,7 +2258,7 @@

    Discover the project

    "description":"", "description_short":"Low environmental impact", "grade":"b", - "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/environmental_score-b.svg", + "icon_url":"//static.openfoodfacts.localhost/images/attributes/dist/ecoscore-b.svg", "id":"environmental_score", "match":70, "name":"Eco-Score", diff --git a/tests/unit/expected_test_results/attributes/en-attributes.json b/tests/unit/expected_test_results/attributes/en-attributes.json index 9be993f35fe48..651587efc7185 100644 --- a/tests/unit/expected_test_results/attributes/en-attributes.json +++ b/tests/unit/expected_test_results/attributes/en-attributes.json @@ -299,7 +299,7 @@ "description" : "", "description_short" : "Low environmental impact", "grade" : "b", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-b.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-b.svg", "id" : "environmental_score", "match" : 68, "name" : "Eco-Score", @@ -381,7 +381,7 @@ "data_quality_info_tags" : [ "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -392,16 +392,16 @@ "en:created-missing", "en:packaging-data-incomplete", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-packaging-unspecified-material", - "en:environmental_score-production-system-no-label" + "en:environmental-score-packaging-unspecified-material", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-packaging-unspecified-material", - "en:environmental_score-production-system-no-label" + "en:environmental-score-packaging-unspecified-material", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -1110,13 +1110,13 @@ "lc" : "en", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:forest-footprint-a", "en:forest-footprint-computed", "en:nutriscore-2021-better-than-2023", diff --git a/tests/unit/expected_test_results/attributes/en-maybe-vegan.json b/tests/unit/expected_test_results/attributes/en-maybe-vegan.json index 6453f6178d323..0c6691132418b 100644 --- a/tests/unit/expected_test_results/attributes/en-maybe-vegan.json +++ b/tests/unit/expected_test_results/attributes/en-maybe-vegan.json @@ -278,7 +278,7 @@ "description" : "", "description_short" : "Unknown environmental impact", "grade" : "unknown", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-unknown.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-unknown.svg", "id" : "environmental_score", "match" : 0, "name" : "Eco-Score", @@ -350,7 +350,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -361,18 +361,18 @@ "en:created-missing", "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -728,8 +728,8 @@ "lc" : "en", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", diff --git a/tests/unit/expected_test_results/attributes/en-no-ingredients.json b/tests/unit/expected_test_results/attributes/en-no-ingredients.json index e8095de936b7c..5d08da0f20225 100644 --- a/tests/unit/expected_test_results/attributes/en-no-ingredients.json +++ b/tests/unit/expected_test_results/attributes/en-no-ingredients.json @@ -276,7 +276,7 @@ "description" : "", "description_short" : "High environmental impact", "grade" : "d", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-d.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-d.svg", "id" : "environmental_score", "match" : 35, "name" : "Eco-Score", @@ -353,7 +353,7 @@ "data_quality_errors_tags" : [], "data_quality_info_tags" : [ "en:no-packaging-data", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown" @@ -363,20 +363,20 @@ "en:code-missing", "en:created-missing", "en:no-packaging-data", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label", - "en:environmental_score-threatened-species-ingredients-missing" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label", + "en:environmental-score-threatened-species-ingredients-missing" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label", - "en:environmental_score-threatened-species-ingredients-missing" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label", + "en:environmental-score-threatened-species-ingredients-missing" ], "environmental_score_data" : { "adjustments" : { @@ -789,15 +789,15 @@ ], "lc" : "en", "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", diff --git a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json index 8e3529a29724d..673199d710fd2 100644 --- a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json +++ b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json @@ -287,7 +287,7 @@ "description" : "", "description_short" : "High environmental impact", "grade" : "d", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-d.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-d.svg", "id" : "environmental_score", "match" : 35, "name" : "Eco-Score", @@ -365,7 +365,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown" @@ -376,18 +376,18 @@ "en:created-missing", "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -968,15 +968,15 @@ "lc" : "en", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", diff --git a/tests/unit/expected_test_results/attributes/en-nutriscore.json b/tests/unit/expected_test_results/attributes/en-nutriscore.json index 8fadbc746976b..926c68db4e023 100644 --- a/tests/unit/expected_test_results/attributes/en-nutriscore.json +++ b/tests/unit/expected_test_results/attributes/en-nutriscore.json @@ -282,7 +282,7 @@ "description" : "", "description_short" : "Moderate environmental impact", "grade" : "c", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-c.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-c.svg", "id" : "environmental_score", "match" : 50, "name" : "Eco-Score", @@ -360,7 +360,7 @@ "en:ingredients-percent-analysis-ok", "en:all-ingredients-with-specified-percent", "en:sum-of-ingredients-with-unspecified-percent-lesser-than-10", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -373,18 +373,18 @@ "en:ingredients-percent-analysis-ok", "en:all-ingredients-with-specified-percent", "en:sum-of-ingredients-with-unspecified-percent-lesser-than-10", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -843,15 +843,15 @@ "minerals_tags" : [], "misc_tags" : [ "en:all-ingredients-with-specified-percent", - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:nutriscore-2021-b-2023-c", "en:nutriscore-2021-better-than-2023", "en:nutriscore-2021-different-from-2023", diff --git a/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json b/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json index f9125776f9127..f2728ae720ee3 100644 --- a/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json +++ b/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json @@ -277,7 +277,7 @@ "description" : "", "description_short" : "High environmental impact", "grade" : "d", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-d.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-d.svg", "id" : "environmental_score", "match" : 35, "name" : "Eco-Score", @@ -356,7 +356,7 @@ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", "en:all-but-one-ingredient-with-specified-percent", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown" @@ -368,22 +368,22 @@ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", "en:all-but-one-ingredient-with-specified-percent", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-known", "en:food-groups-2-known", "en:food-groups-3-unknown", "en:ingredients-unknown-score-above-0", "en:ingredients-100-percent-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ "en:ingredients-unknown-score-above-0", "en:ingredients-100-percent-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -852,15 +852,15 @@ "lc" : "en", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", diff --git a/tests/unit/expected_test_results/attributes/fr-palm-kernel-fat.json b/tests/unit/expected_test_results/attributes/fr-palm-kernel-fat.json index eec2a9e22328e..78908e51bf8b6 100644 --- a/tests/unit/expected_test_results/attributes/fr-palm-kernel-fat.json +++ b/tests/unit/expected_test_results/attributes/fr-palm-kernel-fat.json @@ -280,7 +280,7 @@ "description" : "", "description_short" : "Impact environnemental inconnu", "grade" : "unknown", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-unknown.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-unknown.svg", "id" : "environmental_score", "match" : 0, "name" : "Eco-Score", @@ -349,7 +349,7 @@ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", "en:all-but-one-ingredient-with-specified-percent", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -361,18 +361,18 @@ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", "en:all-but-one-ingredient-with-specified-percent", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -690,8 +690,8 @@ "lc" : "fr", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:nutriscore-missing-category", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", diff --git a/tests/unit/expected_test_results/attributes/fr-palm-oil-free.json b/tests/unit/expected_test_results/attributes/fr-palm-oil-free.json index 771ad842a9e7c..e096f30db383c 100644 --- a/tests/unit/expected_test_results/attributes/fr-palm-oil-free.json +++ b/tests/unit/expected_test_results/attributes/fr-palm-oil-free.json @@ -280,7 +280,7 @@ "description" : "", "description_short" : "Impact environnemental inconnu", "grade" : "unknown", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-unknown.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-unknown.svg", "id" : "environmental_score", "match" : 0, "name" : "Eco-Score", @@ -348,7 +348,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -359,18 +359,18 @@ "en:created-missing", "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -727,8 +727,8 @@ "lc" : "fr", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:nutriscore-missing-category", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", diff --git a/tests/unit/expected_test_results/attributes/fr-palm-oil.json b/tests/unit/expected_test_results/attributes/fr-palm-oil.json index d648329a40497..7cd2f7b37d2c0 100644 --- a/tests/unit/expected_test_results/attributes/fr-palm-oil.json +++ b/tests/unit/expected_test_results/attributes/fr-palm-oil.json @@ -280,7 +280,7 @@ "description" : "", "description_short" : "Impact environnemental inconnu", "grade" : "unknown", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-unknown.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-unknown.svg", "id" : "environmental_score", "match" : 0, "name" : "Eco-Score", @@ -348,7 +348,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -359,18 +359,18 @@ "en:created-missing", "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -707,8 +707,8 @@ "lc" : "fr", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:nutriscore-missing-category", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", diff --git a/tests/unit/expected_test_results/attributes/fr-vegetable-oils.json b/tests/unit/expected_test_results/attributes/fr-vegetable-oils.json index 266acc10b76bc..414bba01c815c 100644 --- a/tests/unit/expected_test_results/attributes/fr-vegetable-oils.json +++ b/tests/unit/expected_test_results/attributes/fr-vegetable-oils.json @@ -280,7 +280,7 @@ "description" : "", "description_short" : "Impact environnemental inconnu", "grade" : "unknown", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-unknown.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-unknown.svg", "id" : "environmental_score", "match" : 0, "name" : "Eco-Score", @@ -348,7 +348,7 @@ "data_quality_info_tags" : [ "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -359,18 +359,18 @@ "en:created-missing", "en:no-packaging-data", "en:ingredients-percent-analysis-ok", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label" ], "environmental_score_data" : { "adjustments" : { @@ -719,8 +719,8 @@ "lc" : "fr", "minerals_tags" : [], "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed", "en:nutriscore-missing-category", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", diff --git a/tests/unit/expected_test_results/ecoscore/agribalyse-updated-category.json b/tests/unit/expected_test_results/ecoscore/agribalyse-updated-category.json index 9c163daf17286..940373af5576c 100644 --- a/tests/unit/expected_test_results/ecoscore/agribalyse-updated-category.json +++ b/tests/unit/expected_test_results/ecoscore/agribalyse-updated-category.json @@ -405,15 +405,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/calvados-ingredients-no-origins.json b/tests/unit/expected_test_results/ecoscore/calvados-ingredients-no-origins.json index 479f09a1aee6d..1f9a50af3f44c 100644 --- a/tests/unit/expected_test_results/ecoscore/calvados-ingredients-no-origins.json +++ b/tests/unit/expected_test_results/ecoscore/calvados-ingredients-no-origins.json @@ -300,8 +300,8 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/calvados-no-ingredients-no-origins.json b/tests/unit/expected_test_results/ecoscore/calvados-no-ingredients-no-origins.json index a785864fe8136..a3c8dd9e44e4b 100644 --- a/tests/unit/expected_test_results/ecoscore/calvados-no-ingredients-no-origins.json +++ b/tests/unit/expected_test_results/ecoscore/calvados-no-ingredients-no-origins.json @@ -250,8 +250,8 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/carrots-plastic.json b/tests/unit/expected_test_results/ecoscore/carrots-plastic.json index 1d845f3e3ffab..14eca5259c4a0 100644 --- a/tests/unit/expected_test_results/ecoscore/carrots-plastic.json +++ b/tests/unit/expected_test_results/ecoscore/carrots-plastic.json @@ -462,11 +462,11 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-score-above-100", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-score-above-100", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 100, diff --git a/tests/unit/expected_test_results/ecoscore/carrots.json b/tests/unit/expected_test_results/ecoscore/carrots.json index 8fe1f10d4ee39..c547a064ded51 100644 --- a/tests/unit/expected_test_results/ecoscore/carrots.json +++ b/tests/unit/expected_test_results/ecoscore/carrots.json @@ -466,13 +466,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-score-above-100", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-score-above-100", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 100, diff --git a/tests/unit/expected_test_results/ecoscore/empty-product.json b/tests/unit/expected_test_results/ecoscore/empty-product.json index 94fc70a39a84c..c805b514be11a 100644 --- a/tests/unit/expected_test_results/ecoscore/empty-product.json +++ b/tests/unit/expected_test_results/ecoscore/empty-product.json @@ -249,8 +249,8 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/energy-drink.json b/tests/unit/expected_test_results/ecoscore/energy-drink.json index 29a64eb739cd6..0a6fea9ec2895 100644 --- a/tests/unit/expected_test_results/ecoscore/energy-drink.json +++ b/tests/unit/expected_test_results/ecoscore/energy-drink.json @@ -328,9 +328,9 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-applicable", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-applicable", + "en:environmental-score-not-computed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/exempted-category-sodas.json b/tests/unit/expected_test_results/ecoscore/exempted-category-sodas.json index a82a701975585..ca109bd479214 100644 --- a/tests/unit/expected_test_results/ecoscore/exempted-category-sodas.json +++ b/tests/unit/expected_test_results/ecoscore/exempted-category-sodas.json @@ -248,9 +248,9 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-applicable", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-applicable", + "en:environmental-score-not-computed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/foie-gras.json b/tests/unit/expected_test_results/ecoscore/foie-gras.json index c6847250bd06b..3ddf37258222f 100644 --- a/tests/unit/expected_test_results/ecoscore/foie-gras.json +++ b/tests/unit/expected_test_results/ecoscore/foie-gras.json @@ -478,13 +478,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/fr-oeufs-de-france.json b/tests/unit/expected_test_results/ecoscore/fr-oeufs-de-france.json index f5ee2cd47e3f2..b7d7c859db0aa 100644 --- a/tests/unit/expected_test_results/ecoscore/fr-oeufs-de-france.json +++ b/tests/unit/expected_test_results/ecoscore/fr-oeufs-de-france.json @@ -418,14 +418,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/fr-verseur-en-plastique.json b/tests/unit/expected_test_results/ecoscore/fr-verseur-en-plastique.json index 7027f63b6c21f..c385839954ce6 100644 --- a/tests/unit/expected_test_results/ecoscore/fr-verseur-en-plastique.json +++ b/tests/unit/expected_test_results/ecoscore/fr-verseur-en-plastique.json @@ -493,14 +493,14 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/fr-viande-porcine-francaise.json b/tests/unit/expected_test_results/ecoscore/fr-viande-porcine-francaise.json index f88d5090ada37..9e3e76ab038ac 100644 --- a/tests/unit/expected_test_results/ecoscore/fr-viande-porcine-francaise.json +++ b/tests/unit/expected_test_results/ecoscore/fr-viande-porcine-francaise.json @@ -543,14 +543,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 40, diff --git a/tests/unit/expected_test_results/ecoscore/fresh-vegetable.json b/tests/unit/expected_test_results/ecoscore/fresh-vegetable.json index 93003c07687dd..b19ce4b2586b8 100644 --- a/tests/unit/expected_test_results/ecoscore/fresh-vegetable.json +++ b/tests/unit/expected_test_results/ecoscore/fresh-vegetable.json @@ -307,9 +307,9 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-applicable", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-applicable", + "en:environmental-score-not-computed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 100, diff --git a/tests/unit/expected_test_results/ecoscore/frozen-vegetable.json b/tests/unit/expected_test_results/ecoscore/frozen-vegetable.json index e94f37a39ef85..e8a18e6b1d946 100644 --- a/tests/unit/expected_test_results/ecoscore/frozen-vegetable.json +++ b/tests/unit/expected_test_results/ecoscore/frozen-vegetable.json @@ -466,13 +466,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 100, diff --git a/tests/unit/expected_test_results/ecoscore/grade-a-with-non-recyclable-label.json b/tests/unit/expected_test_results/ecoscore/grade-a-with-non-recyclable-label.json index c9318cc9ba9bb..410b02def55d3 100644 --- a/tests/unit/expected_test_results/ecoscore/grade-a-with-non-recyclable-label.json +++ b/tests/unit/expected_test_results/ecoscore/grade-a-with-non-recyclable-label.json @@ -523,11 +523,11 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-score-above-100", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-score-above-100", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 60, diff --git a/tests/unit/expected_test_results/ecoscore/grade-a-with-recyclable-label.json b/tests/unit/expected_test_results/ecoscore/grade-a-with-recyclable-label.json index bde2c6bb39597..9deb882f62c42 100644 --- a/tests/unit/expected_test_results/ecoscore/grade-a-with-recyclable-label.json +++ b/tests/unit/expected_test_results/ecoscore/grade-a-with-recyclable-label.json @@ -523,11 +523,11 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-score-above-100", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-score-above-100", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 60, diff --git a/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil-rspo.json b/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil-rspo.json index d6793d785b58e..947ec79194902 100644 --- a/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil-rspo.json +++ b/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil-rspo.json @@ -408,15 +408,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil.json b/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil.json index f0269bf7d608c..6384d6595d9ac 100644 --- a/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil.json +++ b/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil.json @@ -405,15 +405,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/known-category-butters.json b/tests/unit/expected_test_results/ecoscore/known-category-butters.json index b67a606e4ce31..8a7f20d7e725e 100644 --- a/tests/unit/expected_test_results/ecoscore/known-category-butters.json +++ b/tests/unit/expected_test_results/ecoscore/known-category-butters.json @@ -405,15 +405,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/known-category-margarines.json b/tests/unit/expected_test_results/ecoscore/known-category-margarines.json index f0269bf7d608c..6384d6595d9ac 100644 --- a/tests/unit/expected_test_results/ecoscore/known-category-margarines.json +++ b/tests/unit/expected_test_results/ecoscore/known-category-margarines.json @@ -405,15 +405,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/label-ab-hve-msc-asc.json b/tests/unit/expected_test_results/ecoscore/label-ab-hve-msc-asc.json index f932748298652..cdc27757077d1 100644 --- a/tests/unit/expected_test_results/ecoscore/label-ab-hve-msc-asc.json +++ b/tests/unit/expected_test_results/ecoscore/label-ab-hve-msc-asc.json @@ -414,14 +414,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/label-ab-hve.json b/tests/unit/expected_test_results/ecoscore/label-ab-hve.json index b424f301a7db7..24182d87d3965 100644 --- a/tests/unit/expected_test_results/ecoscore/label-ab-hve.json +++ b/tests/unit/expected_test_results/ecoscore/label-ab-hve.json @@ -410,14 +410,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/label-msc-asc.json b/tests/unit/expected_test_results/ecoscore/label-msc-asc.json index 34f24488a5032..a357bb4689b86 100644 --- a/tests/unit/expected_test_results/ecoscore/label-msc-asc.json +++ b/tests/unit/expected_test_results/ecoscore/label-msc-asc.json @@ -410,14 +410,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/label-organic.json b/tests/unit/expected_test_results/ecoscore/label-organic.json index 23b3c89f1d84b..cfd353dc8eb1d 100644 --- a/tests/unit/expected_test_results/ecoscore/label-organic.json +++ b/tests/unit/expected_test_results/ecoscore/label-organic.json @@ -408,14 +408,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/lamb-leg.json b/tests/unit/expected_test_results/ecoscore/lamb-leg.json index 4731f0d75d969..91dc948b400de 100644 --- a/tests/unit/expected_test_results/ecoscore/lamb-leg.json +++ b/tests/unit/expected_test_results/ecoscore/lamb-leg.json @@ -460,14 +460,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/milk.json b/tests/unit/expected_test_results/ecoscore/milk.json index fef7fea8849e4..1af4182a87cf0 100644 --- a/tests/unit/expected_test_results/ecoscore/milk.json +++ b/tests/unit/expected_test_results/ecoscore/milk.json @@ -473,10 +473,10 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field-multiple.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field-multiple.json index 9136ef97c39e1..bd815ee6521f5 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field-multiple.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field-multiple.json @@ -504,14 +504,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 70, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field.json index c5c697df6e913..7ae4a43238f98 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field.json @@ -499,14 +499,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 70, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested-2.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested-2.json index 7dfc327f027dc..18686a4f28318 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested-2.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested-2.json @@ -550,15 +550,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested.json index da4df9365d681..eafc1e53e292f 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested.json @@ -501,15 +501,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-not-specified.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-not-specified.json index b32e2886c8581..a5b643bee3087 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-not-specified.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-not-specified.json @@ -496,15 +496,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 70, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-partly-specified.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-partly-specified.json index bc195af585777..675c856d628cb 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-partly-specified.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-partly-specified.json @@ -499,14 +499,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 70, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified-multiple.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified-multiple.json index 197cddb7ccb23..d8b59fe175fa0 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified-multiple.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified-multiple.json @@ -516,14 +516,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 70, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified.json index 856dfc5181ef6..34fa2c118d823 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified.json @@ -505,14 +505,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 70, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unknown-origin.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unknown-origin.json index 0c48991ad9575..fa2565a0b19e7 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unknown-origin.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unknown-origin.json @@ -455,15 +455,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unspecified-origin.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unspecified-origin.json index 57e78fb9389c7..7115b26a905d3 100644 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unspecified-origin.json +++ b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unspecified-origin.json @@ -452,14 +452,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-bulk.json b/tests/unit/expected_test_results/ecoscore/packaging-en-bulk.json index e2e16a83362db..66d47c814d118 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-bulk.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-bulk.json @@ -416,14 +416,14 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-multiple-over-maximum-malus.json b/tests/unit/expected_test_results/ecoscore/packaging-en-multiple-over-maximum-malus.json index 760a01080ffaf..1590a68b2041d 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-multiple-over-maximum-malus.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-multiple-over-maximum-malus.json @@ -431,13 +431,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [ "en:plastic" diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-multiple.json b/tests/unit/expected_test_results/ecoscore/packaging-en-multiple.json index a3fc62f4db521..b190ff6e74dc7 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-multiple.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-multiple.json @@ -433,13 +433,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [ "en:cardboard", diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-pet-bottle.json b/tests/unit/expected_test_results/ecoscore/packaging-en-pet-bottle.json index bb1942e958948..86a6711cc4a17 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-pet-bottle.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-pet-bottle.json @@ -416,13 +416,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [ "en:pet-1-polyethylene-terephthalate" diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-plastic-bottle.json b/tests/unit/expected_test_results/ecoscore/packaging-en-plastic-bottle.json index 0b2a4c9ef66a2..d5fb6190037e6 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-plastic-bottle.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-plastic-bottle.json @@ -415,13 +415,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [ "en:plastic" diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak-brick.json b/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak-brick.json index 046681b96fc3a..c74c056ba555f 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak-brick.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak-brick.json @@ -414,13 +414,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [ "en:tetra-pak" diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak.json b/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak.json index 9ffa4b87b01f0..fb65376b59551 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak.json @@ -414,13 +414,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [ "en:tetra-pak" diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-bottle.json b/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-bottle.json index eba2521d12c69..66514875f45b1 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-bottle.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-bottle.json @@ -416,14 +416,14 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-can.json b/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-can.json index 7b87594d34407..d3118c726f240 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-can.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-can.json @@ -416,14 +416,14 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [ "en:metal" diff --git a/tests/unit/expected_test_results/ecoscore/packaging-fr-new-shapes.json b/tests/unit/expected_test_results/ecoscore/packaging-fr-new-shapes.json index 429f083c50a56..16e41e4a74741 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-fr-new-shapes.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-fr-new-shapes.json @@ -490,14 +490,14 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-score-above-100", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-score-above-100", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/packaging-unspecified-no-a-eco-score.json b/tests/unit/expected_test_results/ecoscore/packaging-unspecified-no-a-eco-score.json index cf911094dff10..c0e116c57eed7 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-unspecified-no-a-eco-score.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-unspecified-no-a-eco-score.json @@ -453,14 +453,14 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-score-above-100", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-score-above-100", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/packaging-unspecified.json b/tests/unit/expected_test_results/ecoscore/packaging-unspecified.json index 75a9299a7217f..ee5d01fe5f512 100644 --- a/tests/unit/expected_test_results/ecoscore/packaging-unspecified.json +++ b/tests/unit/expected_test_results/ecoscore/packaging-unspecified.json @@ -405,15 +405,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/skyr.json b/tests/unit/expected_test_results/ecoscore/skyr.json index 4ecd4628e49f7..950a52e39e74d 100644 --- a/tests/unit/expected_test_results/ecoscore/skyr.json +++ b/tests/unit/expected_test_results/ecoscore/skyr.json @@ -405,15 +405,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/sum-of-bonuses-greater-than-25.json b/tests/unit/expected_test_results/ecoscore/sum-of-bonuses-greater-than-25.json index b3bb744525797..b71431d73203f 100644 --- a/tests/unit/expected_test_results/ecoscore/sum-of-bonuses-greater-than-25.json +++ b/tests/unit/expected_test_results/ecoscore/sum-of-bonuses-greater-than-25.json @@ -470,12 +470,12 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/uk-milk.json b/tests/unit/expected_test_results/ecoscore/uk-milk.json index c0b68b6d01d31..e41e52931bb5d 100644 --- a/tests/unit/expected_test_results/ecoscore/uk-milk.json +++ b/tests/unit/expected_test_results/ecoscore/uk-milk.json @@ -473,12 +473,12 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/unknown-category.json b/tests/unit/expected_test_results/ecoscore/unknown-category.json index e09d0b2377c01..9a737c2143eb5 100644 --- a/tests/unit/expected_test_results/ecoscore/unknown-category.json +++ b/tests/unit/expected_test_results/ecoscore/unknown-category.json @@ -252,8 +252,8 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-computed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], diff --git a/tests/unit/expected_test_results/ecoscore/yogurt.json b/tests/unit/expected_test_results/ecoscore/yogurt.json index c6cfa6db68a85..101658b8fd9b8 100644 --- a/tests/unit/expected_test_results/ecoscore/yogurt.json +++ b/tests/unit/expected_test_results/ecoscore/yogurt.json @@ -405,15 +405,15 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "packaging_materials_tags" : [], "packaging_recycling_tags" : [], From 76bbde5de01aa1c52e9113c475c3985eafbdaa62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Mon, 16 Dec 2024 10:56:26 +0100 Subject: [PATCH 05/15] lint --- lib/ProductOpener/API.pm | 46 +++++++ lib/ProductOpener/EnvironmentalScore.pm | 174 ++++++++++++++++-------- 2 files changed, 166 insertions(+), 54 deletions(-) diff --git a/lib/ProductOpener/API.pm b/lib/ProductOpener/API.pm index 33d8fdbea4275..4a6b3def78d89 100644 --- a/lib/ProductOpener/API.pm +++ b/lib/ProductOpener/API.pm @@ -625,6 +625,52 @@ sub customize_packagings ($request_ref, $product_ref) { return $customized_packagings_ref; } + +=head2 api_compatibility_for_field ($field, $api_version) + +To support older API versions that can request fields that have been renamed or changed, +we rename older requested fields to the new field names to construct the response. + +Resulting fields will then be renamed back to older names by the api_compatibility_for_product function. + +=cut + +sub api_compatibility_for_field ($field, $api_version) { + + # API 3.1 - 2024/12/18 - ecoscore* fields have been renamed to environmental_score* + if ($api_version < 3.1) { + if ($field =~ /^ecoscore/) { + $field = "environmental_score" . $'; + } + } + + return $field; +} + +=head2 api_compatibility_for_product ($product_ref, $api_version) + +The response schema can change between API versions. This function transforms the product object to match the requested API version. + +=cut + +sub api_compatibility_for_product ($product_ref, $api_version) { + + # API 3.1 - 2024/12/18 - ecoscore* fields have been renamed to environmental_score* + if ($api_version < 3.1) { + foreach my $subfield (qw/data grade score tags/) { + if (defined $product_ref->{"environmental_score_" . $subfield}) { + $product_ref->{"ecoscore_" . $subfield} = $product_ref->{"environmental_score_" . $subfield}; + delete $product_ref->{"environmental_score_" . $subfield}; + } + } + } + + return $product_ref; +} + + + + =head2 customize_response_for_product ( $request_ref, $product_ref, $fields_comma_separated_list, $fields_ref ) Using the fields parameter, API product or search queries can request diff --git a/lib/ProductOpener/EnvironmentalScore.pm b/lib/ProductOpener/EnvironmentalScore.pm index e6ddfd12298d4..33bed1bf16b0a 100644 --- a/lib/ProductOpener/EnvironmentalScore.pm +++ b/lib/ProductOpener/EnvironmentalScore.pm @@ -111,7 +111,8 @@ Loads the AgriBalyse database. sub load_agribalyse_data() { - my $agribalyse_details_by_step_csv_file = $data_root . "/external-data/environmental_score/agribalyse/AGRIBALYSE_vf.csv.2"; + my $agribalyse_details_by_step_csv_file + = $data_root . "/external-data/environmental_score/agribalyse/AGRIBALYSE_vf.csv.2"; my $rows_ref = []; @@ -222,7 +223,8 @@ sub load_environmental_score_data_origins_of_ingredients_distances() { @environmental_score_countries_enabled_sorted = @environmental_score_countries_sorted; $environmental_score_data{origins}{"en:world"} = $environmental_score_data{origins}{"en:unknown"}; - $environmental_score_data{origins}{"en:european-union-and-non-european-union"} = $environmental_score_data{origins}{"en:unknown"}; + $environmental_score_data{origins}{"en:european-union-and-non-european-union"} + = $environmental_score_data{origins}{"en:unknown"}; $log->debug( "environmental_score origins distances CSV file - countries header row", @@ -242,8 +244,10 @@ sub load_environmental_score_data_origins_of_ingredients_distances() { if (not $origin_id_exists_in_taxonomy) { - $log->error("environmental_score origin does not exist in taxonomy", {origin => $origin, origin_id => $origin_id}) - if $log->is_error(); + $log->error( + "environmental_score origin does not exist in taxonomy", + {origin => $origin, origin_id => $origin_id} + ) if $log->is_error(); $errors++; } @@ -262,9 +266,14 @@ sub load_environmental_score_data_origins_of_ingredients_distances() { # Score 0 for unspecified request country (world) $environmental_score_data{origins}{$origin_id}{"transportation_score_world"} = 0; - $log->debug("environmental_score origins CSV file - row", - {origin => $origin, origin_id => $origin_id, environmental_score_data => $environmental_score_data{origins}{$origin_id}}) - if $log->is_debug(); + $log->debug( + "environmental_score origins CSV file - row", + { + origin => $origin, + origin_id => $origin_id, + environmental_score_data => $environmental_score_data{origins}{$origin_id} + } + ) if $log->is_debug(); } if ($errors) { @@ -315,7 +324,8 @@ sub load_environmental_score_data_origins_of_ingredients() { $environmental_score_data{origins}{"en:unknown"}{epi_score} = 0; $environmental_score_data{origins}{"en:world"} = $environmental_score_data{origins}{"en:unknown"}; - $environmental_score_data{origins}{"en:european-union-and-non-european-union"} = $environmental_score_data{origins}{"en:unknown"}; + $environmental_score_data{origins}{"en:european-union-and-non-european-union"} + = $environmental_score_data{origins}{"en:unknown"}; my $row_ref; @@ -350,8 +360,10 @@ sub load_environmental_score_data_origins_of_ingredients() { if (not $origin_id_exists_in_taxonomy) { - $log->error("environmental_score origin does not exist in taxonomy", {origin => $origin, origin_id => $origin_id}) - if $log->is_error(); + $log->error( + "environmental_score origin does not exist in taxonomy", + {origin => $origin, origin_id => $origin_id} + ) if $log->is_error(); $errors++; } @@ -360,9 +372,14 @@ sub load_environmental_score_data_origins_of_ingredients() { # Override data for France from distances.csv with the original French Environmental-Score data for France $environmental_score_data{origins}{$origin_id}{"transportation_score_fr"} = $row_ref->[2]; - $log->debug("environmental_score origins CSV file - row", - {origin => $origin, origin_id => $origin_id, environmental_score_data => $environmental_score_data{origins}{$origin_id}}) - if $log->is_debug(); + $log->debug( + "environmental_score origins CSV file - row", + { + origin => $origin, + origin_id => $origin_id, + environmental_score_data => $environmental_score_data{origins}{$origin_id} + } + ) if $log->is_debug(); } if ($errors) { @@ -543,7 +560,8 @@ sub load_environmental_score_data_packaging() { } if (defined $environmental_score_data{packaging_materials}{$source}) { - $environmental_score_data{packaging_materials}{$target} = $environmental_score_data{packaging_materials}{$source}; + $environmental_score_data{packaging_materials}{$target} + = $environmental_score_data{packaging_materials}{$source}; $properties{packaging_materials}{$target}{"environmental_score_score:en"} = $environmental_score_data{packaging_materials}{$source}{"score"}; } @@ -556,7 +574,8 @@ sub load_environmental_score_data_packaging() { die("Could not open environmental_score materials CSV $csv_file: $!"); } - $log->debug("environmental_score packaging_materials data", {packaging_materials => $environmental_score_data{packaging_materials}}) + $log->debug("environmental_score packaging_materials data", + {packaging_materials => $environmental_score_data{packaging_materials}}) if $log->is_debug(); # Packaging shapes / formats @@ -604,7 +623,8 @@ sub load_environmental_score_data_packaging() { } if (not $shape_id_exists_in_taxonomy) { - $log->error("environmental_score shape does not exist in taxonomy", {shape => $shape, shape_id => $shape_id}) + $log->error("environmental_score shape does not exist in taxonomy", + {shape => $shape, shape_id => $shape_id}) if $log->is_error(); $errors++; } @@ -637,23 +657,28 @@ sub load_environmental_score_data_packaging() { # Extra assignments - $environmental_score_data{packaging_shapes}{"en:can"} = $environmental_score_data{packaging_shapes}{"en:drink-can"}; + $environmental_score_data{packaging_shapes}{"en:can"} + = $environmental_score_data{packaging_shapes}{"en:drink-can"}; $properties{"packaging_shapes"}{"en:can"}{"environmental_score_ratio:en"} = $environmental_score_data{packaging_shapes}{"en:can"}{ratio}; - $environmental_score_data{packaging_shapes}{"en:card"} = $environmental_score_data{packaging_shapes}{"en:backing"}; + $environmental_score_data{packaging_shapes}{"en:card"} + = $environmental_score_data{packaging_shapes}{"en:backing"}; $properties{"packaging_shapes"}{"en:card"}{"environmental_score_ratio:en"} = $environmental_score_data{packaging_shapes}{"en:backing"}{ratio}; - $environmental_score_data{packaging_shapes}{"en:label"} = $environmental_score_data{packaging_shapes}{"en:sheet"}; + $environmental_score_data{packaging_shapes}{"en:label"} + = $environmental_score_data{packaging_shapes}{"en:sheet"}; $properties{"packaging_shapes"}{"en:label"}{"environmental_score_ratio:en"} = $environmental_score_data{packaging_shapes}{"en:sheet"}{ratio}; - $environmental_score_data{packaging_shapes}{"en:spout"} = $environmental_score_data{packaging_shapes}{"en:bottle-cap"}; + $environmental_score_data{packaging_shapes}{"en:spout"} + = $environmental_score_data{packaging_shapes}{"en:bottle-cap"}; $properties{"packaging_shapes"}{"en:spout"}{"environmental_score_ratio:en"} = $environmental_score_data{packaging_shapes}{"en:bottle-cap"}{ratio}; - $environmental_score_data{packaging_shapes}{"xx:elo-pak"} = $environmental_score_data{packaging_shapes}{"en:tetra-pak"}; + $environmental_score_data{packaging_shapes}{"xx:elo-pak"} + = $environmental_score_data{packaging_shapes}{"en:tetra-pak"}; $properties{"packaging_shapes"}{"xx:elo-pak"}{"environmental_score_ratio:en"} = $environmental_score_data{packaging_shapes}{"en:tetra-pak"}{ratio}; } @@ -661,7 +686,8 @@ sub load_environmental_score_data_packaging() { die("Could not open environmental_score shapes CSV $csv_file: $!"); } - $log->debug("environmental_score packaging_shapes data", {packaging_materials => $environmental_score_data{packaging_shapes}}) + $log->debug("environmental_score packaging_shapes data", + {packaging_materials => $environmental_score_data{packaging_shapes}}) if $log->is_debug(); return; } @@ -779,7 +805,8 @@ sub compute_environmental_score ($product_ref) { compute_environmental_score_packaging_adjustment($product_ref); if ($category_without_environmental_score) { - $product_ref->{environmental_score_data}{environmental_score_not_applicable_for_category} = $category_without_environmental_score; + $product_ref->{environmental_score_data}{environmental_score_not_applicable_for_category} + = $category_without_environmental_score; $product_ref->{environmental_score_data}{status} = "unknown"; $product_ref->{environmental_score_tags} = ["not-applicable"]; $product_ref->{environmental_score_grade} = "not-applicable"; @@ -808,7 +835,8 @@ sub compute_environmental_score ($product_ref) { # Compute the Environmental-Score for all countries + world (with 0 for the transportation bonus) foreach my $cc (@environmental_score_countries_enabled_sorted, "world") { - $product_ref->{environmental_score_data}{"scores"}{$cc} = $product_ref->{environmental_score_data}{agribalyse}{score}; + $product_ref->{environmental_score_data}{"scores"}{$cc} + = $product_ref->{environmental_score_data}{agribalyse}{score}; $log->debug("compute_environmental_score - agribalyse score", {cc => $cc, agribalyse_score => $product_ref->{environmental_score_data}{agribalyse}{score}}) @@ -896,8 +924,10 @@ sub compute_environmental_score ($product_ref) { # Unfortunately there is a MongoDB index limit and we cannot create a different set of field # for each country. - $product_ref->{environmental_score_data}{"score"} = $product_ref->{environmental_score_data}{"scores"}{"fr"}; - $product_ref->{environmental_score_data}{"grade"} = $product_ref->{environmental_score_data}{"grades"}{"fr"}; + $product_ref->{environmental_score_data}{"score"} + = $product_ref->{environmental_score_data}{"scores"}{"fr"}; + $product_ref->{environmental_score_data}{"grade"} + = $product_ref->{environmental_score_data}{"grades"}{"fr"}; $product_ref->{"environmental_score_score"} = $product_ref->{environmental_score_data}{"scores"}{"fr"}; $product_ref->{"environmental_score_grade"} = $product_ref->{environmental_score_data}{"grades"}{"fr"}; $product_ref->{"environmental_score_tags"} = [$product_ref->{environmental_score_grade}]; @@ -905,7 +935,13 @@ sub compute_environmental_score ($product_ref) { if ($product_ref->{environmental_score_data}{"downgraded"}) { add_tag($product_ref, "misc", "en:environmental-score-downgraded"); } - if (($product_ref->{environmental_score_data}{scores}{fr_orig} // $product_ref->{environmental_score_data}{scores}{fr}) > 100) { + if ( + ( + $product_ref->{environmental_score_data}{scores}{fr_orig} + // $product_ref->{environmental_score_data}{scores}{fr} + ) > 100 + ) + { add_tag($product_ref, "misc", "en:environmental-score-score-above-100"); } @@ -923,7 +959,8 @@ sub compute_environmental_score ($product_ref) { # environmental-score-missing-data-packagings will also be triggered when we have some packaging data that is not complete # e.g. we have a shape like "bottle" but no associated material # also add a facet when we have no packaging information at all - my $packaging_warning = deep_get($product_ref, qw(environmental_score_data adjustments packaging warning)); + my $packaging_warning + = deep_get($product_ref, qw(environmental_score_data adjustments packaging warning)); if ((defined $packaging_warning) and ($packaging_warning eq "packaging_data_missing")) { add_tag($product_ref, "misc", "en:environmental-score-missing-data-no-packagings"); } @@ -952,7 +989,9 @@ sub compute_environmental_score ($product_ref) { $old_environmental_score_score = $old_previous_data->{score}; } if (defined $old_environmental_score_score || defined $product_ref->{environmental_score_score}) { - if (!defined $old_environmental_score_score || $old_environmental_score_score != $product_ref->{environmental_score_score}) { + if (!defined $old_environmental_score_score + || $old_environmental_score_score != $product_ref->{environmental_score_score}) + { if (!defined $old_previous_data && defined $old_agribalyse) { $product_ref->{environmental_score_data}{previous_data} = { grade => $old_environmental_score_grade, @@ -961,7 +1000,9 @@ sub compute_environmental_score ($product_ref) { }; } add_tag($product_ref, "misc", "en:environmental-score-changed"); - if (!defined $old_environmental_score_grade || $old_environmental_score_grade ne $product_ref->{environmental_score_grade}) { + if (!defined $old_environmental_score_grade + || $old_environmental_score_grade ne $product_ref->{environmental_score_grade}) + { add_tag($product_ref, "misc", "en:environmental-score-grade-changed"); } } @@ -1031,12 +1072,14 @@ sub compute_environmental_score_agribalyse ($product_ref) { $agb = $agb_proxy_match; } else { - defined $product_ref->{environmental_score_data}{missing} or $product_ref->{environmental_score_data}{missing} = {}; + defined $product_ref->{environmental_score_data}{missing} + or $product_ref->{environmental_score_data}{missing} = {}; $product_ref->{environmental_score_data}{missing}{agb_category} = 1; } } else { - defined $product_ref->{environmental_score_data}{missing} or $product_ref->{environmental_score_data}{missing} = {}; + defined $product_ref->{environmental_score_data}{missing} + or $product_ref->{environmental_score_data}{missing} = {}; $product_ref->{environmental_score_data}{missing}{categories} = 1; } @@ -1206,7 +1249,8 @@ sub compute_environmental_score_production_system_adjustment ($product_ref) { # No labels warning if ($product_ref->{environmental_score_data}{adjustments}{production_system}{value} == 0) { $product_ref->{environmental_score_data}{adjustments}{production_system}{warning} = "no_label"; - defined $product_ref->{environmental_score_data}{missing} or $product_ref->{environmental_score_data}{missing} = {}; + defined $product_ref->{environmental_score_data}{missing} + or $product_ref->{environmental_score_data}{missing} = {}; $product_ref->{environmental_score_data}{missing}{labels} = 1; } return; @@ -1250,7 +1294,8 @@ sub compute_environmental_score_threatened_species_adjustment ($product_ref) { # No ingredients warning if ((not defined $product_ref->{ingredients}) or (scalar @{$product_ref->{ingredients}} == 0)) { $product_ref->{environmental_score_data}{adjustments}{threatened_species}{warning} = "ingredients_missing"; - defined $product_ref->{environmental_score_data}{missing} or $product_ref->{environmental_score_data}{missing} = {}; + defined $product_ref->{environmental_score_data}{missing} + or $product_ref->{environmental_score_data}{missing} = {}; $product_ref->{environmental_score_data}{missing}{ingredients} = 1; } return; @@ -1325,8 +1370,10 @@ sub aggregate_origins_of_ingredients ($default_origins_ref, $aggregated_origins_ my $country_code = get_inherited_property("origins", $origin_id, "country_code_2:en"); if ( - (defined $country_code) - and (defined $environmental_score_data{origins}{canonicalize_taxonomy_tag("en", "origins", $country_code)}) + (defined $country_code) + and ( + defined $environmental_score_data{origins} + {canonicalize_taxonomy_tag("en", "origins", $country_code)}) ) { $origin_id = canonicalize_taxonomy_tag("en", "origins", $country_code); @@ -1504,7 +1551,8 @@ sub compute_environmental_score_origins_of_ingredients_adjustment ($product_ref) $epi_score += $environmental_score_data{origins}{$origin_id}{epi_score} * $percent / 100; foreach my $cc (@environmental_score_countries_enabled_sorted) { $transportation_scores{$cc} - += ($environmental_score_data{origins}{$origin_id}{"transportation_score_" . $cc} // 0) * $percent / 100; + += ($environmental_score_data{origins}{$origin_id}{"transportation_score_" . $cc} // 0) + * $percent / 100; } } @@ -1537,14 +1585,18 @@ sub compute_environmental_score_origins_of_ingredients_adjustment ($product_ref) foreach my $cc (@environmental_score_countries_enabled_sorted, "world") { $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"transportation_values"}{$cc} = 0 + round($transportation_scores{$cc} / 6.66); - $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"values"}{$cc} = 0 + round($epi_value) - + $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"transportation_values"}{$cc}; + $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"values"}{$cc} + = 0 + round($epi_value) + + $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"transportation_values"} + {$cc}; } # Add a warning if the only origin is en:unknown if (($#aggregated_origins == 0) and ($aggregated_origins[0]{origin} eq "en:unknown")) { - $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{warning} = "origins_are_100_percent_unknown"; - defined $product_ref->{environmental_score_data}{missing} or $product_ref->{environmental_score_data}{missing} = {}; + $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{warning} + = "origins_are_100_percent_unknown"; + defined $product_ref->{environmental_score_data}{missing} + or $product_ref->{environmental_score_data}{missing} = {}; $product_ref->{environmental_score_data}{missing}{origins} = 1; } return; @@ -1606,7 +1658,8 @@ sub compute_environmental_score_packaging_adjustment ($product_ref) { if (defined $packaging_ref->{shape}) { - my $ratio = get_inherited_property("packaging_shapes", $packaging_ref->{shape}, "environmental_score_ratio:en"); + my $ratio = get_inherited_property("packaging_shapes", $packaging_ref->{shape}, + "environmental_score_ratio:en"); if (defined $ratio) { $packaging_ref->{environmental_score_shape_ratio} = $ratio + 0; } @@ -1654,8 +1707,11 @@ sub compute_environmental_score_packaging_adjustment ($product_ref) { } } - my $score - = get_inherited_property("packaging_materials", $packaging_ref->{material}, "environmental_score_score:en"); + my $score = get_inherited_property( + "packaging_materials", + $packaging_ref->{material}, + "environmental_score_score:en" + ); if (defined $score) { $packaging_ref->{environmental_score_material_score} = $score + 0; } @@ -1667,10 +1723,11 @@ sub compute_environmental_score_packaging_adjustment ($product_ref) { # Check if there is a shape-specific material score (e.g. PEHD bottle) if (defined $packaging_ref->{shape}) { - my $shape_specific_score - = get_inherited_property("packaging_materials", + my $shape_specific_score = get_inherited_property( + "packaging_materials", $packaging_ref->{material} . '.' . $packaging_ref->{shape}, - "environmental_score_score:en"); + "environmental_score_score:en" + ); if (defined $shape_specific_score) { $packaging_ref->{environmental_score_material_score} = $shape_specific_score + 0; $packaging_ref->{material_shape} = $packaging_ref->{material} . '.' . $packaging_ref->{shape}; @@ -1707,7 +1764,8 @@ sub compute_environmental_score_packaging_adjustment ($product_ref) { # Multiply the shape ratio and the material score $packaging_score - += (100 - $packaging_ref->{environmental_score_material_score}) * $packaging_ref->{environmental_score_shape_ratio}; + += (100 - $packaging_ref->{environmental_score_material_score}) + * $packaging_ref->{environmental_score_shape_ratio}; } $packaging_score = 100 - $packaging_score; @@ -1727,7 +1785,8 @@ sub compute_environmental_score_packaging_adjustment ($product_ref) { if (defined $warning) { $product_ref->{environmental_score_data}{adjustments}{packaging}{warning} = $warning; - defined $product_ref->{environmental_score_data}{missing} or $product_ref->{environmental_score_data}{missing} = {}; + defined $product_ref->{environmental_score_data}{missing} + or $product_ref->{environmental_score_data}{missing} = {}; $product_ref->{environmental_score_data}{missing}{packagings} = 1; } return; @@ -1789,18 +1848,24 @@ sub localize_environmental_score ($request_cc, $product_ref) { = $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"values"}{$cc}; $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"transportation_score"} - = $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"transportation_scores"}{$cc}; + = $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients} + {"transportation_scores"}{$cc}; $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"transportation_value"} - = $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{"transportation_values"}{$cc}; + = $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients} + {"transportation_values"}{$cc}; # For each origin, we also add its score (EPI + transporation to country of request) # so that clients can show which ingredients contributes the most to the origins of ingredients bonus / malus - if (defined $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{aggregated_origins}) { + if ( + defined $product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients} + {aggregated_origins}) + { foreach my $origin_ref ( - @{$product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{aggregated_origins}}) + @{$product_ref->{environmental_score_data}{adjustments}{origins_of_ingredients}{aggregated_origins}} + ) { my $origin_id = $origin_ref->{origin}; @@ -1860,7 +1925,8 @@ sub is_environmental_score_extended_data_more_precise_than_agribalyse ($product_ # Check that the product has both Agribalyse and Impact Estimator data my $agribalyse_score = deep_get($product_ref, qw(agribalyse ef_agriculture)); - my $estimated_score = deep_get($product_ref, qw(environmental_score_extended_data impact likeliest_impacts EF_single_score)); + my $estimated_score + = deep_get($product_ref, qw(environmental_score_extended_data impact likeliest_impacts EF_single_score)); if ((defined $agribalyse_score) and (defined $estimated_score)) { From bac5bcfb798c4ea614a43c0ec69a170530d543c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Mon, 16 Dec 2024 12:28:52 +0100 Subject: [PATCH 06/15] lint --- lib/ProductOpener/API.pm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/ProductOpener/API.pm b/lib/ProductOpener/API.pm index 4a6b3def78d89..907a069c2a3d9 100644 --- a/lib/ProductOpener/API.pm +++ b/lib/ProductOpener/API.pm @@ -625,7 +625,6 @@ sub customize_packagings ($request_ref, $product_ref) { return $customized_packagings_ref; } - =head2 api_compatibility_for_field ($field, $api_version) To support older API versions that can request fields that have been renamed or changed, @@ -668,9 +667,6 @@ sub api_compatibility_for_product ($product_ref, $api_version) { return $product_ref; } - - - =head2 customize_response_for_product ( $request_ref, $product_ref, $fields_comma_separated_list, $fields_ref ) Using the fields parameter, API product or search queries can request From cad3fedfd18be070db1430213324bd44c4b17917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Mon, 16 Dec 2024 12:55:23 +0100 Subject: [PATCH 07/15] update tests --- stop_words.txt | 1 + ...quest-fields-environmental_score-data.json | 281 +++++++++++ .../{ecoscore.t => environmental_score.t} | 2 +- .../attributes/en-attributes.json | 3 + ...onmental_score-score-at-20-threshold.json} | 41 +- .../attributes/en-no-ingredients.json | 1 + .../attributes/en-nova-groups-markers.json | 1 + .../attributes/en-nutriscore.json | 5 + .../attributes/en-unknown-ingredients.json | 1 + .../attributes/fr-sesame-seeds.json | 464 ------------------ .../ecoscore/label-fr-peche-a-la-ligne.json | 143 ------ .../label-msc-sustainable-fishing-method.json | 136 ----- .../ecoscore/label-sustainable-fishing.json | 139 ------ ...ts-empty-ingredients-specified-origin.json | 90 ---- .../ecoscore/origins-of-ingredients.json | 91 ---- .../ecoscore/packaging-en-aluminium-can.json | 86 ---- .../ecoscore/packaging-en-aluminium-seal.json | 86 ---- .../ecoscore/packaging-en-no-packaging.json | 83 ---- ...packaging-en-shape-sepcific-materials.json | 167 ------- .../agribalyse-updated-category.json | 0 .../calvados-ingredients-no-origins.json | 0 .../calvados-no-ingredients-no-origins.json | 0 .../carrots-plastic.json | 0 .../carrots.json | 0 ...ry-without-environmental_score-sodas.json} | 6 +- .../empty-product.json | 0 .../energy-drink.json | 0 .../exempted-category-sodas.json | 0 .../foie-gras.json | 0 .../fr-oeufs-de-france.json | 0 .../fr-verseur-en-plastique.json | 0 .../fr-viande-porcine-francaise.json | 0 .../fresh-vegetable.json | 0 .../frozen-vegetable.json | 0 .../grade-a-with-non-recyclable-label.json | 0 .../grade-a-with-recyclable-label.json | 0 .../ingredient-palm-oil-rspo.json | 0 .../ingredient-palm-oil.json | 0 .../known-category-butters.json | 0 .../known-category-margarines.json | 0 .../label-ab-hve-msc-asc.json | 0 .../label-ab-hve.json | 0 .../label-msc-asc.json | 0 .../label-organic.json | 0 .../lamb-leg.json | 0 .../milk.json | 0 ...ingredients-in-origins-field-multiple.json | 0 ...igins-of-ingredients-in-origins-field.json | 0 .../origins-of-ingredients-nested-2.json | 0 .../origins-of-ingredients-nested.json | 0 .../origins-of-ingredients-not-specified.json | 0 ...igins-of-ingredients-partly-specified.json | 0 ...ins-of-ingredients-specified-multiple.json | 0 .../origins-of-ingredients-specified.json | 0 ...origins-of-ingredients-unknown-origin.json | 0 ...ins-of-ingredients-unspecified-origin.json | 0 .../packaging-en-bulk.json | 0 ...kaging-en-multiple-over-maximum-malus.json | 0 .../packaging-en-multiple.json | 0 .../packaging-en-pet-bottle.json | 0 .../packaging-en-plastic-bottle.json | 0 .../packaging-en-tetra-pak-brick.json | 0 .../packaging-en-tetra-pak.json | 0 ...kaging-en-unspecified-material-bottle.json | 0 ...packaging-en-unspecified-material-can.json | 0 .../packaging-fr-new-shapes.json | 0 .../packaging-unspecified-no-a-eco-score.json | 0 .../packaging-unspecified.json | 0 .../skyr.json | 0 .../sum-of-bonuses-greater-than-25.json | 0 .../track-environmental_score-changes.json} | 14 +- .../track-environmental_score-no-change.json} | 10 +- ...track-environmental_score-same-grade.json} | 12 +- ...ck-environmental_score-tags-retained.json} | 16 +- .../uk-milk.json | 0 .../unknown-category.json | 0 .../yogurt.json | 0 77 files changed, 345 insertions(+), 1534 deletions(-) create mode 100644 tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json rename tests/unit/{ecoscore.t => environmental_score.t} (99%) rename tests/unit/expected_test_results/attributes/{en-ecoscore-score-at-20-threshold.json => en-environmental_score-score-at-20-threshold.json} (96%) delete mode 100644 tests/unit/expected_test_results/attributes/fr-sesame-seeds.json delete mode 100644 tests/unit/expected_test_results/ecoscore/label-fr-peche-a-la-ligne.json delete mode 100644 tests/unit/expected_test_results/ecoscore/label-msc-sustainable-fishing-method.json delete mode 100644 tests/unit/expected_test_results/ecoscore/label-sustainable-fishing.json delete mode 100644 tests/unit/expected_test_results/ecoscore/origins-of-ingredients-empty-ingredients-specified-origin.json delete mode 100644 tests/unit/expected_test_results/ecoscore/origins-of-ingredients.json delete mode 100644 tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-can.json delete mode 100644 tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-seal.json delete mode 100644 tests/unit/expected_test_results/ecoscore/packaging-en-no-packaging.json delete mode 100644 tests/unit/expected_test_results/ecoscore/packaging-en-shape-sepcific-materials.json rename tests/unit/expected_test_results/{ecoscore => environmental_score}/agribalyse-updated-category.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/calvados-ingredients-no-origins.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/calvados-no-ingredients-no-origins.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/carrots-plastic.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/carrots.json (100%) rename tests/unit/expected_test_results/{ecoscore/category-without-ecoscore-sodas.json => environmental_score/category-without-environmental_score-sodas.json} (98%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/empty-product.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/energy-drink.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/exempted-category-sodas.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/foie-gras.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/fr-oeufs-de-france.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/fr-verseur-en-plastique.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/fr-viande-porcine-francaise.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/fresh-vegetable.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/frozen-vegetable.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/grade-a-with-non-recyclable-label.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/grade-a-with-recyclable-label.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/ingredient-palm-oil-rspo.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/ingredient-palm-oil.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/known-category-butters.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/known-category-margarines.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/label-ab-hve-msc-asc.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/label-ab-hve.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/label-msc-asc.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/label-organic.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/lamb-leg.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/milk.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-in-origins-field-multiple.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-in-origins-field.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-nested-2.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-nested.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-not-specified.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-partly-specified.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-specified-multiple.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-specified.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-unknown-origin.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/origins-of-ingredients-unspecified-origin.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-bulk.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-multiple-over-maximum-malus.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-multiple.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-pet-bottle.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-plastic-bottle.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-tetra-pak-brick.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-tetra-pak.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-unspecified-material-bottle.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-en-unspecified-material-can.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-fr-new-shapes.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-unspecified-no-a-eco-score.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/packaging-unspecified.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/skyr.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/sum-of-bonuses-greater-than-25.json (100%) rename tests/unit/expected_test_results/{ecoscore/track-ecoscore-changes.json => environmental_score/track-environmental_score-changes.json} (97%) rename tests/unit/expected_test_results/{ecoscore/track-ecoscore-no-change.json => environmental_score/track-environmental_score-no-change.json} (98%) rename tests/unit/expected_test_results/{ecoscore/track-ecoscore-same-grade.json => environmental_score/track-environmental_score-same-grade.json} (97%) rename tests/unit/expected_test_results/{ecoscore/track-ecoscore-tags-retained.json => environmental_score/track-environmental_score-tags-retained.json} (97%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/uk-milk.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/unknown-category.json (100%) rename tests/unit/expected_test_results/{ecoscore => environmental_score}/yogurt.json (100%) diff --git a/stop_words.txt b/stop_words.txt index 49621ffc46e58..fc7025023f597 100644 --- a/stop_words.txt +++ b/stop_words.txt @@ -73,6 +73,7 @@ du ecoscore ecobalyse Ecobalyse +EnvironmentalScore EAN EANs eg diff --git a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json new file mode 100644 index 0000000000000..47930cc9ea6e9 --- /dev/null +++ b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json @@ -0,0 +1,281 @@ +{ + "code" : "1234567890009", + "errors" : [], + "product" : { + "environmental_score_data" : { + "adjustments" : { + "origins_of_ingredients" : { + "aggregated_origins" : [ + { + "epi_score" : 0, + "origin" : "en:unknown", + "percent" : 100, + "transportation_score" : 0 + } + ], + "epi_score" : 0, + "epi_value" : -5, + "origins_from_categories" : [ + "en:unknown" + ], + "origins_from_origins_field" : [ + "en:unknown" + ], + "transportation_score" : 0, + "transportation_scores" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "transportation_value" : 0, + "transportation_values" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "value" : -5, + "values" : { + "ad" : -5, + "al" : -5, + "at" : -5, + "ax" : -5, + "ba" : -5, + "be" : -5, + "bg" : -5, + "ch" : -5, + "cy" : -5, + "cz" : -5, + "de" : -5, + "dk" : -5, + "dz" : -5, + "ee" : -5, + "eg" : -5, + "es" : -5, + "fi" : -5, + "fo" : -5, + "fr" : -5, + "gg" : -5, + "gi" : -5, + "gr" : -5, + "hr" : -5, + "hu" : -5, + "ie" : -5, + "il" : -5, + "im" : -5, + "is" : -5, + "it" : -5, + "je" : -5, + "lb" : -5, + "li" : -5, + "lt" : -5, + "lu" : -5, + "lv" : -5, + "ly" : -5, + "ma" : -5, + "mc" : -5, + "md" : -5, + "me" : -5, + "mk" : -5, + "mt" : -5, + "nl" : -5, + "no" : -5, + "pl" : -5, + "ps" : -5, + "pt" : -5, + "ro" : -5, + "rs" : -5, + "se" : -5, + "si" : -5, + "sj" : -5, + "sk" : -5, + "sm" : -5, + "sy" : -5, + "tn" : -5, + "tr" : -5, + "ua" : -5, + "uk" : -5, + "us" : -5, + "va" : -5, + "world" : -5, + "xk" : -5 + }, + "warning" : "origins_are_100_percent_unknown" + }, + "packaging" : { + "non_recyclable_and_non_biodegradable_materials" : 1, + "packagings" : [ + { + "environmental_score_material_score" : 0, + "environmental_score_shape_ratio" : 1, + "material" : "en:plastic", + "non_recyclable_and_non_biodegradable" : "maybe", + "number_of_units" : 1, + "shape" : "en:bag" + } + ], + "score" : 0, + "value" : -10 + }, + "production_system" : { + "labels" : [], + "value" : 0, + "warning" : "no_label" + }, + "threatened_species" : { + "warning" : "ingredients_missing" + } + }, + "agribalyse" : { + "warning" : "missing_agribalyse_match" + }, + "missing" : { + "categories" : 1, + "ingredients" : 1, + "labels" : 1, + "origins" : 1 + }, + "missing_agribalyse_match_warning" : 1, + "scores" : {}, + "status" : "unknown" + } + }, + "status" : "success_with_warnings", + "warnings" : [ + { + "field" : { + "id" : "recycling", + "value" : null + }, + "impact" : { + "id" : "field_ignored", + "lc_name" : "Field ignored", + "name" : "Field ignored" + }, + "message" : { + "id" : "missing_field", + "lc_name" : "Missing field", + "name" : "Missing field" + } + } + ] +} diff --git a/tests/unit/ecoscore.t b/tests/unit/environmental_score.t similarity index 99% rename from tests/unit/ecoscore.t rename to tests/unit/environmental_score.t index 06a7254e93d16..c645c8ce9acfb 100644 --- a/tests/unit/ecoscore.t +++ b/tests/unit/environmental_score.t @@ -26,7 +26,7 @@ load_environmental_score_data(); init_packaging_taxonomies_regexps(); -# Taxonomy tags used by EcoScore.pm that should not be renamed +# Taxonomy tags used by EnvironmentalScore that should not be renamed # (or that should be renamed in the code and tests as well). my %tags = ( diff --git a/tests/unit/expected_test_results/attributes/en-attributes.json b/tests/unit/expected_test_results/attributes/en-attributes.json index 651587efc7185..54dd809fa21be 100644 --- a/tests/unit/expected_test_results/attributes/en-attributes.json +++ b/tests/unit/expected_test_results/attributes/en-attributes.json @@ -368,6 +368,7 @@ "categories_tags" : [ "en:biscuits" ], + "compared_to_category" : "en:biscuits", "countries_tags" : [ "en:united-kingdom", "en:france" @@ -396,10 +397,12 @@ "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", + "en:nutrition-value-very-low-for-category-energy", "en:environmental-score-packaging-unspecified-material", "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ + "en:nutrition-value-very-low-for-category-energy", "en:environmental-score-packaging-unspecified-material", "en:environmental-score-production-system-no-label" ], diff --git a/tests/unit/expected_test_results/attributes/en-ecoscore-score-at-20-threshold.json b/tests/unit/expected_test_results/attributes/en-environmental_score-score-at-20-threshold.json similarity index 96% rename from tests/unit/expected_test_results/attributes/en-ecoscore-score-at-20-threshold.json rename to tests/unit/expected_test_results/attributes/en-environmental_score-score-at-20-threshold.json index 5c298af1dcf04..6f9f41d1488e2 100644 --- a/tests/unit/expected_test_results/attributes/en-ecoscore-score-at-20-threshold.json +++ b/tests/unit/expected_test_results/attributes/en-environmental_score-score-at-20-threshold.json @@ -276,7 +276,7 @@ "description" : "", "description_short" : "High environmental impact", "grade" : "d", - "icon_url" : "https://server_domain/images/attributes/dist/environmental_score-d.svg", + "icon_url" : "https://server_domain/images/attributes/dist/ecoscore-d.svg", "id" : "environmental_score", "match" : 31, "name" : "Eco-Score", @@ -345,6 +345,7 @@ "categories_tags" : [ "en:cocoa-and-hazelnuts-spreads" ], + "compared_to_category" : "en:cocoa-and-hazelnuts-spreads", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", @@ -353,7 +354,7 @@ "data_quality_errors_tags" : [], "data_quality_info_tags" : [ "en:no-packaging-data", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown" @@ -363,20 +364,20 @@ "en:code-missing", "en:created-missing", "en:no-packaging-data", - "en:environmental_score-extended-data-not-computed", + "en:environmental-score-extended-data-not-computed", "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label", - "en:environmental_score-threatened-species-ingredients-missing" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label", + "en:environmental-score-threatened-species-ingredients-missing" ], "data_quality_warnings_tags" : [ - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", - "en:environmental_score-packaging-packaging-data-missing", - "en:environmental_score-production-system-no-label", - "en:environmental_score-threatened-species-ingredients-missing" + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-packaging-packaging-data-missing", + "en:environmental-score-production-system-no-label", + "en:environmental-score-threatened-species-ingredients-missing" ], "environmental_score_data" : { "adjustments" : { @@ -786,15 +787,15 @@ ], "lc" : "en", "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-computed", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-grade-changed", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-no-packagings", - "en:environmental_score-missing-data-origins", - "en:environmental_score-missing-data-packagings", - "en:environmental_score-missing-data-warning", + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-no-packagings", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-packagings", + "en:environmental-score-missing-data-warning", "en:nutriscore-missing-nutrition-data", "en:nutriscore-missing-nutrition-data-energy", "en:nutriscore-missing-nutrition-data-fat", diff --git a/tests/unit/expected_test_results/attributes/en-no-ingredients.json b/tests/unit/expected_test_results/attributes/en-no-ingredients.json index 5d08da0f20225..cd11178d70b0f 100644 --- a/tests/unit/expected_test_results/attributes/en-no-ingredients.json +++ b/tests/unit/expected_test_results/attributes/en-no-ingredients.json @@ -345,6 +345,7 @@ "categories_tags" : [ "en:cheeses" ], + "compared_to_category" : "en:cheeses", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", diff --git a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json index 673199d710fd2..959260e3f2365 100644 --- a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json +++ b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json @@ -356,6 +356,7 @@ "categories_tags" : [ "en:cheeses" ], + "compared_to_category" : "en:cheeses", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", diff --git a/tests/unit/expected_test_results/attributes/en-nutriscore.json b/tests/unit/expected_test_results/attributes/en-nutriscore.json index 926c68db4e023..e56d5a9348b4b 100644 --- a/tests/unit/expected_test_results/attributes/en-nutriscore.json +++ b/tests/unit/expected_test_results/attributes/en-nutriscore.json @@ -349,6 +349,7 @@ "categories_tags" : [ "en:biscuits" ], + "compared_to_category" : "en:biscuits", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", @@ -377,11 +378,15 @@ "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", + "en:nutrition-value-very-high-for-category-fat", + "en:nutrition-value-very-high-for-category-proteins", "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ + "en:nutrition-value-very-high-for-category-fat", + "en:nutrition-value-very-high-for-category-proteins", "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" diff --git a/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json b/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json index f2728ae720ee3..b75b1fc2f53ed 100644 --- a/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json +++ b/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json @@ -346,6 +346,7 @@ "categories_tags" : [ "en:cheeses" ], + "compared_to_category" : "en:cheeses", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", diff --git a/tests/unit/expected_test_results/attributes/fr-sesame-seeds.json b/tests/unit/expected_test_results/attributes/fr-sesame-seeds.json deleted file mode 100644 index 8b2e1135081da..0000000000000 --- a/tests/unit/expected_test_results/attributes/fr-sesame-seeds.json +++ /dev/null @@ -1,464 +0,0 @@ -{ - "additives_n" : 0, - "additives_old_n" : 0, - "additives_old_tags" : [], - "additives_original_tags" : [], - "additives_tags" : [], - "allergens" : "", - "allergens_from_ingredients" : "", - "allergens_from_user" : "(fr) ", - "allergens_hierarchy" : [], - "allergens_tags" : [], - "amino_acids_tags" : [], - "attribute_groups_fr" : [ - { - "attributes" : [ - { - "description" : "", - "description_short" : "Qualité nutritionnelle inconnue", - "icon_url" : "https://server_domain/images/attributes/nutriscore-unknown.svg", - "id" : "nutriscore", - "match" : 0, - "name" : "Nutri-Score", - "status" : "unknown", - "title" : "Nutri-Score non calculé" - }, - { - "icon_url" : "https://server_domain/images/attributes/nutrient-level-salt-unknown.svg", - "id" : "low_salt", - "missing" : "Données nutritionnelles manquantes", - "name" : "Sel", - "status" : "unknown", - "title" : "Sel en quantité inconnue" - }, - { - "icon_url" : "https://server_domain/images/attributes/nutrient-level-fat-unknown.svg", - "id" : "low_fat", - "missing" : "Données nutritionnelles manquantes", - "name" : "Matières grasses / Lipides", - "status" : "unknown", - "title" : "Matières grasses / Lipides en quantité inconnue" - }, - { - "icon_url" : "https://server_domain/images/attributes/nutrient-level-sugars-unknown.svg", - "id" : "low_sugars", - "missing" : "Données nutritionnelles manquantes", - "name" : "Sucres", - "status" : "unknown", - "title" : "Sucres en quantité inconnue" - }, - { - "icon_url" : "https://server_domain/images/attributes/nutrient-level-saturated-fat-unknown.svg", - "id" : "low_saturated_fat", - "missing" : "Données nutritionnelles manquantes", - "name" : "Acides gras saturés", - "status" : "unknown", - "title" : "Acides gras saturés en quantité inconnue" - } - ], - "id" : "nutritional_quality", - "name" : "Qualité nutritionnelle" - }, - { - "attributes" : [ - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-gluten.svg", - "id" : "allergens_no_gluten", - "match" : 100, - "name" : "Gluten", - "status" : "known", - "title" : "Ne contient pas : Gluten" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-milk.svg", - "id" : "allergens_no_milk", - "match" : 100, - "name" : "Lait", - "status" : "known", - "title" : "Ne contient pas : Lait" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-eggs.svg", - "id" : "allergens_no_eggs", - "match" : 100, - "name" : "Œufs", - "status" : "known", - "title" : "Ne contient pas : Œufs" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-nuts.svg", - "id" : "allergens_no_nuts", - "match" : 100, - "name" : "Fruits à coque", - "status" : "known", - "title" : "Ne contient pas : Fruits à coque" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-peanuts.svg", - "id" : "allergens_no_peanuts", - "match" : 100, - "name" : "Arachides", - "status" : "known", - "title" : "Ne contient pas : Arachides" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-sesame-seeds.svg", - "id" : "allergens_no_sesame_seeds", - "match" : 100, - "name" : "Graines de sésame", - "status" : "known", - "title" : "Ne contient pas : Graines de sésame" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-soybeans.svg", - "id" : "allergens_no_soybeans", - "match" : 100, - "name" : "Soja", - "status" : "known", - "title" : "Ne contient pas : Soja" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-celery.svg", - "id" : "allergens_no_celery", - "match" : 100, - "name" : "Céleri", - "status" : "known", - "title" : "Ne contient pas : Céleri" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-mustard.svg", - "id" : "allergens_no_mustard", - "match" : 100, - "name" : "Moutarde", - "status" : "known", - "title" : "Ne contient pas : Moutarde" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-lupin.svg", - "id" : "allergens_no_lupin", - "match" : 100, - "name" : "Lupin", - "status" : "known", - "title" : "Ne contient pas : Lupin" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-fish.svg", - "id" : "allergens_no_fish", - "match" : 100, - "name" : "Poisson", - "status" : "known", - "title" : "Ne contient pas : Poisson" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-crustaceans.svg", - "id" : "allergens_no_crustaceans", - "match" : 100, - "name" : "Crustacés", - "status" : "known", - "title" : "Ne contient pas : Crustacés" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-molluscs.svg", - "id" : "allergens_no_molluscs", - "match" : 100, - "name" : "Mollusques", - "status" : "known", - "title" : "Ne contient pas : Mollusques" - }, - { - "debug" : "1 ingredients (0 unknown)", - "icon_url" : "https://server_domain/images/attributes/no-sulphur-dioxide-and-sulphites.svg", - "id" : "allergens_no_sulphur_dioxide_and_sulphites", - "match" : 100, - "name" : "Anhydride sulfureux et sulfites", - "status" : "known", - "title" : "Ne contient pas : Anhydride sulfureux et sulfites" - } - ], - "id" : "allergens", - "name" : "Allergènes", - "warning" : "Il est toujours possible que les données sur les allergènes soient manquantes, incomplètes, incorrectes ou que la composition du produit ait changé. Si vous êtes allergique, vérifiez toujours les informations sur l'emballage réel du produit." - }, - { - "attributes" : [ - { - "icon_url" : "https://server_domain/images/attributes/vegan.svg", - "id" : "vegan", - "match" : 100, - "name" : "Végétalien", - "status" : "known", - "title" : "Végétalien" - }, - { - "icon_url" : "https://server_domain/images/attributes/vegetarian.svg", - "id" : "vegetarian", - "match" : 100, - "name" : "Végétarien", - "status" : "known", - "title" : "Végétarien" - }, - { - "icon_url" : "https://server_domain/images/attributes/palm-oil-free.svg", - "id" : "palm_oil_free", - "match" : 100, - "name" : "Sans huile de palme", - "status" : "known", - "title" : "Sans huile de palme" - } - ], - "id" : "ingredients_analysis", - "name" : "Ingrédients" - }, - { - "attributes" : [ - { - "description" : "", - "description_short" : "Degré de transformation des aliments inconnu", - "icon_url" : "https://server_domain/images/attributes/nova-group-unknown.svg", - "id" : "nova", - "match" : 0, - "name" : "Groupe NOVA", - "status" : "unknown", - "title" : "NOVA non calculé" - } - ], - "id" : "processing", - "name" : "Transformation des aliments" - }, - { - "attributes" : [ - { - "icon_url" : "https://server_domain/images/attributes/0-additives.svg", - "id" : "additives", - "match" : 100, - "name" : "Additifs", - "status" : "known", - "title" : "Sans additives" - } - ], - "id" : "ingredients", - "name" : "" - }, - { - "attributes" : [ - { - "description" : "", - "description_short" : "Impact environnemental inconnu", - "icon_url" : "https://server_domain/images/attributes/environmental_score-unknown.svg", - "id" : "environmental_score", - "match" : 0, - "name" : "Eco-Score", - "status" : "unknown", - "title" : "Eco-Score non calculé" - }, - { - "description" : "", - "description_short" : "Pour l'instant seulement pour les produits avec du poulet ou des oeufs", - "icon_url" : "https://server_domain/images/attributes/forest-footprint-not-computed.svg", - "id" : "forest_footprint", - "match" : 0, - "name" : "Empreinte forêt", - "status" : "known", - "title" : "Empreinte forêt non calculée" - } - ], - "id" : "environment", - "name" : "Environnement" - }, - { - "attributes" : [ - { - "description" : "L'agriculture biologique vise à protéger l'environnement et à conserver la biodiversité en prohibant ou limitant l'utilisation d'engrais synthétiques, de pesticides et d'additifs alimentaires.", - "description_short" : "Les produits bios encouragent la durabilité écologique et la biodiversité.", - "icon_url" : "https://server_domain/images/attributes/organic-unknown.svg", - "id" : "labels_organic", - "name" : "Agriculture biologique", - "status" : "unknown", - "title" : "Information manquante : produit bio ?" - }, - { - "description" : "Quand vous achetez des produits du commerce équitable, les producteurs dans les pays en développement sont payés un prix plus haut et plus équitable, ce qui les aide à atteindre des plus hauts standards sociaux et environnementaux et à les conserver.", - "description_short" : "Les produits du commerce équitable aident les producteurs des pays en voie de développement.", - "icon_url" : "https://server_domain/images/attributes/fair-trade-unknown.svg", - "id" : "labels_fair_trade", - "name" : "Commerce équitable", - "status" : "unknown", - "title" : "Information manquante : produit de commerce équitable ?" - } - ], - "id" : "labels", - "name" : "Labels" - } - ], - "categories_properties" : {}, - "categories_properties_tags" : [ - "all-products", - "categories-unknown", - "agribalyse-food-code-unknown", - "agribalyse-proxy-food-code-unknown", - "ciqual-food-code-unknown", - "agribalyse-unknown" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:unknown", - "percent" : 100 - } - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score" : 0, - "transportation_value" : 0, - "value" : -5, - "warning" : "origins_are_100_percent_unknown" - }, - "packaging" : { - "non_recyclable_and_non_biodegradable_materials" : 1, - "packagings" : [ - { - "environmental_score_material_score" : 0, - "environmental_score_shape_ratio" : 1, - "material" : "en:unknown", - "non_recyclable_and_non_biodegradable" : "maybe", - "shape" : "en:unknown" - } - ], - "score" : 0, - "value" : -10, - "warning" : "packaging_data_missing" - }, - "production_system" : { - "warning" : "no_label" - }, - "threatened_species" : {} - }, - "agribalyse" : { - "warning" : "missing_agribalyse_match" - }, - "missing" : { - "categories" : 1, - "labels" : 1, - "origins" : 1, - "packagings" : 1 - }, - "missing_agribalyse_match_warning" : 1, - "status" : "unknown" - }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ - "unknown" - ], - "ingredients" : [ - { - "id" : "en:sesame-seeds", - "percent_estimate" : 100, - "percent_max" : 100, - "percent_min" : 100, - "text" : "graines de sésame", - "vegan" : "yes", - "vegetarian" : "yes" - } - ], - "ingredients_analysis_tags" : [ - "en:palm-oil-free", - "en:vegan", - "en:vegetarian" - ], - "ingredients_from_or_that_may_be_from_palm_oil_n" : 0, - "ingredients_from_palm_oil_n" : 0, - "ingredients_from_palm_oil_tags" : [], - "ingredients_hierarchy" : [ - "en:sesame-seeds", - "en:seed", - "en:sesame" - ], - "ingredients_n" : 1, - "ingredients_n_tags" : [ - "1", - "1-10" - ], - "ingredients_original_tags" : [ - "en:sesame-seeds" - ], - "ingredients_percent_analysis" : 1, - "ingredients_tags" : [ - "en:sesame-seeds", - "en:seed", - "en:sesame" - ], - "ingredients_text" : "graines de sésame", - "ingredients_that_may_be_from_palm_oil_n" : 0, - "ingredients_that_may_be_from_palm_oil_tags" : [], - "known_ingredients_n" : 3, - "languages" : {}, - "languages_codes" : {}, - "languages_hierarchy" : [], - "languages_tags" : [ - "en:0" - ], - "lc" : "fr", - "minerals_tags" : [], - "misc_tags" : [ - "en:nutriscore-not-computed", - "en:nutriscore-missing-category", - "en:environmental_score-not-computed" - ], - "nova_group_debug" : "no nova group when the product does not have a category", - "nova_group_tags" : [ - "not-applicable" - ], - "nucleotides_tags" : [], - "nutrient_levels" : {}, - "nutrient_levels_tags" : [], - "nutriments" : { - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 0 - }, - "nutrition_grades_tags" : [ - "unknown" - ], - "nutrition_score_debug" : "no score when the product does not have a category", - "other_nutritional_substances_tags" : [], - "packagings" : [ - { - "material" : "en:unknown", - "shape" : "en:unknown" - } - ], - "pnns_groups_1" : "unknown", - "pnns_groups_1_tags" : [ - "unknown", - "missing-category" - ], - "pnns_groups_2" : "unknown", - "pnns_groups_2_tags" : [ - "unknown", - "missing-category" - ], - "traces" : "", - "traces_from_ingredients" : "", - "traces_from_user" : "(fr) ", - "traces_hierarchy" : [], - "traces_tags" : [], - "unknown_ingredients_n" : 0, - "unknown_nutrients_tags" : [], - "vitamins_tags" : [] -} diff --git a/tests/unit/expected_test_results/ecoscore/label-fr-peche-a-la-ligne.json b/tests/unit/expected_test_results/ecoscore/label-fr-peche-a-la-ligne.json deleted file mode 100644 index 3193750c6a314..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/label-fr-peche-a-la-ligne.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "categories_tags" : [ - "en:butters" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:unknown", - "percent" : 100 - } - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score_be" : 0, - "transportation_score_ch" : 0, - "transportation_score_de" : 0, - "transportation_score_es" : 0, - "transportation_score_fr" : 0, - "transportation_score_ie" : 0, - "transportation_score_it" : 0, - "transportation_score_lu" : 0, - "transportation_score_nl" : 0, - "transportation_score_uk" : 0, - "transportation_value_be" : 0, - "transportation_value_ch" : 0, - "transportation_value_de" : 0, - "transportation_value_es" : 0, - "transportation_value_fr" : 0, - "transportation_value_ie" : 0, - "transportation_value_it" : 0, - "transportation_value_lu" : 0, - "transportation_value_nl" : 0, - "transportation_value_uk" : 0, - "value_be" : -5, - "value_ch" : -5, - "value_de" : -5, - "value_es" : -5, - "value_fr" : -5, - "value_ie" : -5, - "value_it" : -5, - "value_lu" : -5, - "value_nl" : -5, - "value_uk" : -5, - "warning" : "origins_are_100_percent_unknown" - }, - "packaging" : { - "non_recyclable_and_non_biodegradable_materials" : 1, - "value" : -15, - "warning" : "packaging_data_missing" - }, - "production_system" : { - "labels" : [ - "en:sustainable-fishing-method" - ], - "value" : 15 - }, - "threatened_species" : { - "warning" : "ingredients_missing" - } - }, - "agribalyse" : { - "agribalyse_proxy_food_code" : "16400", - "co2_agriculture" : "14.494556", - "co2_consumption" : "0.0047993021", - "co2_distribution" : "0.031874285", - "co2_packaging" : "0.20585948", - "co2_processing" : "0.57399261", - "co2_total" : "15.49101", - "co2_transportation" : "0.1800882", - "code" : "16400", - "dqr" : "2.69", - "ef_agriculture" : "1.0542554", - "ef_consumption" : "0.0024293397", - "ef_distribution" : "0.0096880018", - "ef_packaging" : "0.015478282000000001", - "ef_processing" : "0.055903738", - "ef_total" : "1.1514725", - "ef_transportation" : "0.013733529", - "is_beverage" : 0, - "name_en" : "Butter, 82% fat, unsalted", - "name_fr" : "Beurre à 82% MG, doux", - "score" : 27 - }, - "grade" : "d", - "grade_be" : "d", - "grade_ch" : "d", - "grade_de" : "d", - "grade_es" : "d", - "grade_fr" : "d", - "grade_ie" : "d", - "grade_it" : "d", - "grade_lu" : "d", - "grade_nl" : "d", - "grade_uk" : "d", - "missing" : { - "ingredients" : 1, - "origins" : 1, - "packagings" : 1 - }, - "missing_data_warning" : 1, - "score" : 27, - "score_be" : 22, - "score_ch" : 22, - "score_de" : 22, - "score_es" : 22, - "score_fr" : 22, - "score_ie" : 22, - "score_it" : 22, - "score_lu" : 22, - "score_nl" : 22, - "score_uk" : 22, - "status" : "known" - }, - "environmental_score_grade" : "d", - "environmental_score_score" : 22, - "environmental_score_tags" : [ - "d" - ], - "labels" : "Pêché à la ligne", - "labels_hierarchy" : [ - "en:sustainable-fishing", - "en:sustainable-fishing-method", - "en:angled-fish" - ], - "labels_lc" : "fr", - "labels_tags" : [ - "en:sustainable-fishing", - "en:sustainable-fishing-method", - "en:angled-fish" - ], - "lc" : "fr", - "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-computed" - ], - "packagings" : [] -} diff --git a/tests/unit/expected_test_results/ecoscore/label-msc-sustainable-fishing-method.json b/tests/unit/expected_test_results/ecoscore/label-msc-sustainable-fishing-method.json deleted file mode 100644 index 44b2076f07fad..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/label-msc-sustainable-fishing-method.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "categories_tags" : [ - "en:butters" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:unknown", - "percent" : 100 - } - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score_be" : 0, - "transportation_score_ch" : 0, - "transportation_score_de" : 0, - "transportation_score_es" : 0, - "transportation_score_fr" : 0, - "transportation_score_ie" : 0, - "transportation_score_it" : 0, - "transportation_score_lu" : 0, - "transportation_score_nl" : 0, - "transportation_score_uk" : 0, - "transportation_value_be" : 0, - "transportation_value_ch" : 0, - "transportation_value_de" : 0, - "transportation_value_es" : 0, - "transportation_value_fr" : 0, - "transportation_value_ie" : 0, - "transportation_value_it" : 0, - "transportation_value_lu" : 0, - "transportation_value_nl" : 0, - "transportation_value_uk" : 0, - "value_be" : -5, - "value_ch" : -5, - "value_de" : -5, - "value_es" : -5, - "value_fr" : -5, - "value_ie" : -5, - "value_it" : -5, - "value_lu" : -5, - "value_nl" : -5, - "value_uk" : -5, - "warning" : "origins_are_100_percent_unknown" - }, - "packaging" : { - "non_recyclable_and_non_biodegradable_materials" : 1, - "value" : -15, - "warning" : "packaging_data_missing" - }, - "production_system" : { - "labels" : [ - "en:sustainable-fishing-method", - "en:sustainable-seafood-msc" - ], - "value" : 15 - }, - "threatened_species" : { - "warning" : "ingredients_missing" - } - }, - "agribalyse" : { - "agribalyse_proxy_food_code" : "16400", - "co2_agriculture" : "14.494556", - "co2_consumption" : "0.0047993021", - "co2_distribution" : "0.031874285", - "co2_packaging" : "0.20585948", - "co2_processing" : "0.57399261", - "co2_total" : "15.49101", - "co2_transportation" : "0.1800882", - "code" : "16400", - "dqr" : "2.69", - "ef_agriculture" : "1.0542554", - "ef_consumption" : "0.0024293397", - "ef_distribution" : "0.0096880018", - "ef_packaging" : "0.015478282000000001", - "ef_processing" : "0.055903738", - "ef_total" : "1.1514725", - "ef_transportation" : "0.013733529", - "is_beverage" : 0, - "name_en" : "Butter, 82% fat, unsalted", - "name_fr" : "Beurre à 82% MG, doux", - "score" : 27 - }, - "grade" : "d", - "grade_be" : "d", - "grade_ch" : "d", - "grade_de" : "d", - "grade_es" : "d", - "grade_fr" : "d", - "grade_ie" : "d", - "grade_it" : "d", - "grade_lu" : "d", - "grade_nl" : "d", - "grade_uk" : "d", - "missing" : { - "ingredients" : 1, - "origins" : 1, - "packagings" : 1 - }, - "missing_data_warning" : 1, - "score" : 27, - "score_be" : 22, - "score_ch" : 22, - "score_de" : 22, - "score_es" : 22, - "score_fr" : 22, - "score_ie" : 22, - "score_it" : 22, - "score_lu" : 22, - "score_nl" : 22, - "score_uk" : 22, - "status" : "known" - }, - "environmental_score_grade" : "d", - "environmental_score_score" : 22, - "environmental_score_tags" : [ - "d" - ], - "labels_tags" : [ - "en:sustainable-seafood-msc", - "en:sustainable-fishing-method" - ], - "lc" : "en", - "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-computed" - ], - "packagings" : [] -} diff --git a/tests/unit/expected_test_results/ecoscore/label-sustainable-fishing.json b/tests/unit/expected_test_results/ecoscore/label-sustainable-fishing.json deleted file mode 100644 index b52205eaa1ad8..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/label-sustainable-fishing.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "categories_tags" : [ - "en:butters" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:unknown", - "percent" : 100 - } - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score_be" : 0, - "transportation_score_ch" : 0, - "transportation_score_de" : 0, - "transportation_score_es" : 0, - "transportation_score_fr" : 0, - "transportation_score_ie" : 0, - "transportation_score_it" : 0, - "transportation_score_lu" : 0, - "transportation_score_nl" : 0, - "transportation_score_uk" : 0, - "transportation_value_be" : 0, - "transportation_value_ch" : 0, - "transportation_value_de" : 0, - "transportation_value_es" : 0, - "transportation_value_fr" : 0, - "transportation_value_ie" : 0, - "transportation_value_it" : 0, - "transportation_value_lu" : 0, - "transportation_value_nl" : 0, - "transportation_value_uk" : 0, - "value_be" : -5, - "value_ch" : -5, - "value_de" : -5, - "value_es" : -5, - "value_fr" : -5, - "value_ie" : -5, - "value_it" : -5, - "value_lu" : -5, - "value_nl" : -5, - "value_uk" : -5, - "warning" : "origins_are_100_percent_unknown" - }, - "packaging" : { - "non_recyclable_and_non_biodegradable_materials" : 1, - "value" : -15, - "warning" : "packaging_data_missing" - }, - "production_system" : { - "labels" : [], - "value" : 0, - "warning" : "no_label" - }, - "threatened_species" : { - "warning" : "ingredients_missing" - } - }, - "agribalyse" : { - "agribalyse_proxy_food_code" : "16400", - "co2_agriculture" : "14.494556", - "co2_consumption" : "0.0047993021", - "co2_distribution" : "0.031874285", - "co2_packaging" : "0.20585948", - "co2_processing" : "0.57399261", - "co2_total" : "15.49101", - "co2_transportation" : "0.1800882", - "code" : "16400", - "dqr" : "2.69", - "ef_agriculture" : "1.0542554", - "ef_consumption" : "0.0024293397", - "ef_distribution" : "0.0096880018", - "ef_packaging" : "0.015478282000000001", - "ef_processing" : "0.055903738", - "ef_total" : "1.1514725", - "ef_transportation" : "0.013733529", - "is_beverage" : 0, - "name_en" : "Butter, 82% fat, unsalted", - "name_fr" : "Beurre à 82% MG, doux", - "score" : 27 - }, - "grade" : "e", - "grade_be" : "e", - "grade_ch" : "e", - "grade_de" : "e", - "grade_es" : "e", - "grade_fr" : "e", - "grade_ie" : "e", - "grade_it" : "e", - "grade_lu" : "e", - "grade_nl" : "e", - "grade_uk" : "e", - "missing" : { - "ingredients" : 1, - "labels" : 1, - "origins" : 1, - "packagings" : 1 - }, - "missing_data_warning" : 1, - "score" : 12, - "score_be" : 7, - "score_ch" : 7, - "score_de" : 7, - "score_es" : 7, - "score_fr" : 7, - "score_ie" : 7, - "score_it" : 7, - "score_lu" : 7, - "score_nl" : 7, - "score_uk" : 7, - "status" : "known" - }, - "environmental_score_grade" : "e", - "environmental_score_score" : 7, - "environmental_score_tags" : [ - "e" - ], - "labels" : "Sustainable fishing", - "labels_hierarchy" : [ - "en:sustainable-fishing" - ], - "labels_lc" : "fr", - "labels_tags" : [ - "en:sustainable-fishing" - ], - "lc" : "en", - "misc_tags" : [ - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-computed" - ], - "packagings" : [] -} diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-empty-ingredients-specified-origin.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-empty-ingredients-specified-origin.json deleted file mode 100644 index 323ba2beb909a..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-empty-ingredients-specified-origin.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "categories_tags" : [ - "en:cheeses" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:france", - "percent" : 100 - } - ], - "epi_score" : 93.0663626138272, - "epi_value" : 4.30663626138272, - "origins_from_origins_field" : [ - "en:france" - ], - "transportation_score" : 99.7567795833333, - "transportation_value" : 14.9784954329329, - "value" : 19.2851316943157 - }, - "packaging" : { - "packagings" : [ - { - "environmental_score_material_score" : 0, - "environmental_score_shape_ratio" : 1, - "material" : "en:unknown", - "shape" : "en:unknown" - } - ], - "score" : 0, - "value" : -10, - "warning" : "packaging_data_missing" - }, - "production_system" : {}, - "threatened_species" : {} - }, - "agribalyse" : { - "agribalyse_proxy_food_code" : "12001", - "co2_agriculture" : "4.7126103", - "co2_consumption" : "0.0047993021", - "co2_distribution" : "0.029050683", - "co2_packaging" : "0.26662691", - "co2_processing" : "0.22452742", - "co2_total" : "5.4920327", - "co2_transportation" : "0.25844052", - "code" : "12001", - "dqr" : "1.81", - "ef_agriculture" : "0.41632178999999997", - "ef_consumption" : "0.0024293397", - "ef_distribution" : "0.0088270864", - "ef_packaging" : "0.019721226", - "ef_processing" : "0.028839787", - "ef_total" : "0.49584621999999995", - "ef_transportation" : "0.020064567000000002", - "name_en" : "Camembert cheese, from cow's milk", - "name_fr" : "Camembert, sans précision", - "score" : 61.604062231297 - }, - "grade" : "b", - "missing" : { - "packagings" : 1 - }, - "missing_data_warning" : 1, - "score" : 70.8891939256127, - "status" : "known" - }, - "environmental_score_grade" : "b", - "environmental_score_score" : 70.8891939256127, - "environmental_score_tags" : [ - "b" - ], - "ingredients" : [], - "ingredients_hierarchy" : [], - "ingredients_original_tags" : [], - "ingredients_percent_analysis" : 1, - "ingredients_tags" : [], - "ingredients_text" : "", - "lc" : "en", - "origins_tags" : [ - "en:france" - ], - "packagings" : [ - { - "material" : "en:unknown", - "shape" : "en:unknown" - } - ] -} diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients.json b/tests/unit/expected_test_results/ecoscore/origins-of-ingredients.json deleted file mode 100644 index 0c2bca2c22f59..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "categories_tags" : [ - "en:fruit-james" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - [ - "en:france", - 60 - ], - [ - "en:martinique", - 40 - ] - ], - "origins_from_origins_field" : [ - "en:world" - ] - }, - "production_system" : {}, - "threatened_species" : {} - }, - "agribalyse" : {}, - "missing" : { - "agb_category" : 1 - }, - "status" : "unknown" - }, - "ingredients" : [ - { - "id" : "en:apricot", - "origins" : "en:france", - "percent" : 60, - "percent_estimate" : 60, - "percent_max" : 60, - "percent_min" : 60, - "rank" : 1, - "text" : "apricots", - "vegan" : "yes", - "vegetarian" : "yes" - }, - { - "id" : "en:cane-sugar", - "origins" : "en:martinique", - "percent" : "40", - "percent_estimate" : 40, - "percent_max" : 40, - "percent_min" : 40, - "rank" : 2, - "text" : "cane sugar", - "vegan" : "yes", - "vegetarian" : "yes" - } - ], - "ingredients_analysis_tags" : [ - "en:palm-oil-free", - "en:vegan", - "en:vegetarian" - ], - "ingredients_hierarchy" : [ - "en:apricot", - "en:fruit", - "en:cane-sugar", - "en:sugar" - ], - "ingredients_n" : 2, - "ingredients_n_tags" : [ - "2", - "1-10" - ], - "ingredients_original_tags" : [ - "en:apricot", - "en:cane-sugar" - ], - "ingredients_percent_analysis" : 1, - "ingredients_tags" : [ - "en:apricot", - "en:fruit", - "en:cane-sugar", - "en:sugar" - ], - "ingredients_text" : "60% apricots (France), 40% cane sugar (Martinique)", - "known_ingredients_n" : 4, - "lc" : "en", - "nutriments" : { - "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 60 - }, - "unknown_ingredients_n" : 0 -} diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-can.json b/tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-can.json deleted file mode 100644 index 59b43eb957b5e..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-can.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "categories_tags" : [ - "en:sodas" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:unknown", - "percent" : 100 - } - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score" : 0, - "transportation_value" : 0, - "value" : -5, - "warning" : "origins_are_100_percent_unknown" - }, - "packaging" : { - "packagings" : [ - { - "environmental_score_material_score" : 72, - "environmental_score_shape_ratio" : 1, - "material" : "en:heavy-aluminium", - "shape" : "en:can" - } - ], - "score" : 72, - "value" : -2.8 - }, - "production_system" : {}, - "threatened_species" : {} - }, - "agribalyse" : { - "agribalyse_proxy_food_code" : "18340", - "co2_agriculture" : "0.0052740241", - "co2_consumption" : "0.0047993021", - "co2_distribution" : "0.028932423", - "co2_packaging" : "0.18274931", - "co2_processing" : "0", - "co2_total" : "0.40246995", - "co2_transportation" : "0.18071489", - "code" : "18340", - "dqr" : "2.97", - "ef_agriculture" : "0.00091374504", - "ef_consumption" : "0.0024293397", - "ef_distribution" : "0.0088128735", - "ef_packaging" : "0.018005260999999998", - "ef_processing" : "0", - "ef_total" : 0.043941445, - "ef_transportation" : "0.013780225", - "name_en" : "Fruit soft drink, carbonated (less than 10% of fruit juice), without sugar and with artificial sweetener(s)", - "name_fr" : "Boisson gazeuse aux fruits (à moins de 10% de jus), non sucrée, avec édulcorants", - "score" : 97.8336969127427 - }, - "grade" : "a", - "missing" : { - "origins" : 1 - }, - "missing_data_warning" : 1, - "score" : 90.0336969127427, - "status" : "known" - }, - "environmental_score_grade" : "a", - "environmental_score_score" : 90.0336969127427, - "environmental_score_tags" : [ - "a" - ], - "lc" : "en", - "misc_tags" : [ - "en:environmental_score-missing-data-warning", - "en:environmental_score-computed" - ], - "packaging_text" : "aluminium can", - "packagings" : [ - { - "material" : "en:aluminium", - "shape" : "en:can" - } - ] -} diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-seal.json b/tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-seal.json deleted file mode 100644 index d24d49cf4b2a4..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-aluminium-seal.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "categories_tags" : [ - "en:sodas" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:unknown", - "percent" : 100 - } - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score" : 0, - "transportation_value" : 0, - "value" : -5, - "warning" : "origins_are_100_percent_unknown" - }, - "packaging" : { - "packagings" : [ - { - "environmental_score_material_score" : 36, - "environmental_score_shape_ratio" : 0.1, - "material" : "en:light-aluminium", - "shape" : "en:seal" - } - ], - "score" : 93.6, - "value" : -0.640000000000001 - }, - "production_system" : {}, - "threatened_species" : {} - }, - "agribalyse" : { - "agribalyse_proxy_food_code" : "18340", - "co2_agriculture" : "0.0052740241", - "co2_consumption" : "0.0047993021", - "co2_distribution" : "0.028932423", - "co2_packaging" : "0.18274931", - "co2_processing" : "0", - "co2_total" : "0.40246995", - "co2_transportation" : "0.18071489", - "code" : "18340", - "dqr" : "2.97", - "ef_agriculture" : "0.00091374504", - "ef_consumption" : "0.0024293397", - "ef_distribution" : "0.0088128735", - "ef_packaging" : "0.018005260999999998", - "ef_processing" : "0", - "ef_total" : 0.043941445, - "ef_transportation" : "0.013780225", - "name_en" : "Fruit soft drink, carbonated (less than 10% of fruit juice), without sugar and with artificial sweetener(s)", - "name_fr" : "Boisson gazeuse aux fruits (à moins de 10% de jus), non sucrée, avec édulcorants", - "score" : 97.8336969127427 - }, - "grade" : "a", - "missing" : { - "origins" : 1 - }, - "missing_data_warning" : 1, - "score" : 92.1936969127427, - "status" : "known" - }, - "environmental_score_grade" : "a", - "environmental_score_score" : 92.1936969127427, - "environmental_score_tags" : [ - "a" - ], - "lc" : "en", - "misc_tags" : [ - "en:environmental_score-missing-data-warning", - "en:environmental_score-computed" - ], - "packaging_text" : "aluminium seal", - "packagings" : [ - { - "material" : "en:aluminium", - "shape" : "en:seal" - } - ] -} diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-no-packaging.json b/tests/unit/expected_test_results/ecoscore/packaging-en-no-packaging.json deleted file mode 100644 index cba8046f7a140..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-no-packaging.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "categories_tags" : [ - "en:sodas" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - { - "origin" : "en:unknown", - "percent" : 100 - } - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score" : 0, - "transportation_value" : 0, - "value" : -5, - "warning" : "origins_are_100_percent_unknown" - }, - "packaging" : { - "packagings" : [ - { - "environmental_score_material_score" : 0, - "environmental_score_shape_ratio" : 1, - "material" : "en:unknown", - "shape" : "en:unknown" - } - ], - "score" : 0, - "value" : -10, - "warning" : "packaging_data_missing" - }, - "production_system" : {}, - "threatened_species" : {} - }, - "agribalyse" : { - "agribalyse_proxy_food_code" : "18340", - "co2_agriculture" : "0.0052740241", - "co2_consumption" : "0.0047993021", - "co2_distribution" : "0.028932423", - "co2_packaging" : "0.18274931", - "co2_processing" : "0", - "co2_total" : "0.40246995", - "co2_transportation" : "0.18071489", - "code" : "18340", - "dqr" : "2.97", - "ef_agriculture" : "0.00091374504", - "ef_consumption" : "0.0024293397", - "ef_distribution" : "0.0088128735", - "ef_packaging" : "0.018005260999999998", - "ef_processing" : "0", - "ef_total" : 0.043941445, - "ef_transportation" : "0.013780225", - "name_en" : "Fruit soft drink, carbonated (less than 10% of fruit juice), without sugar and with artificial sweetener(s)", - "name_fr" : "Boisson gazeuse aux fruits (à moins de 10% de jus), non sucrée, avec édulcorants", - "score" : 97.8336969127427 - }, - "grade" : "a", - "missing" : { - "origins" : 1, - "packagings" : 1 - }, - "missing_data_warning" : 1, - "score" : 82.8336969127427, - "status" : "known" - }, - "environmental_score_grade" : "a", - "environmental_score_score" : 82.8336969127427, - "environmental_score_tags" : [ - "a" - ], - "lc" : "en", - "packagings" : [ - { - "material" : "en:unknown", - "shape" : "en:unknown" - } - ] -} diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-shape-sepcific-materials.json b/tests/unit/expected_test_results/ecoscore/packaging-en-shape-sepcific-materials.json deleted file mode 100644 index 28ca8df39c421..0000000000000 --- a/tests/unit/expected_test_results/ecoscore/packaging-en-shape-sepcific-materials.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "categories_tags" : [ - "en:milks" - ], - "environmental_score_data" : { - "adjustments" : { - "origins_of_ingredients" : { - "aggregated_origins" : [ - [ - "en:unknown", - 100 - ] - ], - "epi_score" : 0, - "epi_value" : -5, - "origins_from_origins_field" : [ - "en:unknown" - ], - "transportation_score" : 0, - "transportation_value" : 0, - "value" : -5 - }, - "packaging" : { - "packagings" : [ - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 0, - "environmental_score_shape_ratio" : 1, - "material" : "en:plastic", - "number" : "1", - "shape" : "en:bottle" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 50, - "environmental_score_shape_ratio" : 1, - "material" : "en:pet-polyethylene-terephthalate", - "material_shape" : "en:pet-polyethylene-terephthalate.en:bottle", - "number" : "2", - "shape" : "en:bottle" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 100, - "environmental_score_shape_ratio" : 1, - "material" : "en:rpet-recycled-polyethylene-terephthalate", - "number" : "3", - "shape" : "en:bottle" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 100, - "environmental_score_shape_ratio" : 1, - "material" : "en:rpet-recycled-polyethylene-terephthalate", - "number" : "4", - "shape" : "en:bottle" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 50, - "environmental_score_shape_ratio" : 1, - "material" : "en:colored-pet", - "material_shape" : "en:colored-pet.en:bottle", - "number" : "5", - "shape" : "en:bottle" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 62.5, - "environmental_score_shape_ratio" : 1, - "material" : "en:transparent-pet", - "material_shape" : "en:transparent-pet.en:bottle", - "number" : "6", - "shape" : "en:bottle" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 50, - "environmental_score_shape_ratio" : 1, - "material" : "en:hdpe-high-density-polyethylene", - "material_shape" : "en:hdpe-high-density-polyethylene.en:bottle", - "number" : "7", - "shape" : "en:bottle" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 100, - "environmental_score_shape_ratio" : 0.2, - "material" : "en:rpet-recycled-polyethylene-terephthalate", - "number" : "8", - "shape" : "en:lid" - }, - { - "environmental_score_counted" : 1, - "environmental_score_material_score" : 75, - "environmental_score_shape_ratio" : 1, - "material" : "en:biobased-pet", - "material_shape" : "en:biobased-pet.en:bottle", - "number" : "9", - "shape" : "en:bottle" - } - ], - "score" : -212.5, - "value" : -10 - }, - "production_system" : {}, - "threatened_species" : {} - }, - "agribalyse" : {}, - "missing" : { - "agb_category" : 1 - }, - "status" : "unknown" - }, - "environmental_score_tags" : [ - "unknown" - ], - "lc" : "en", - "packaging_text" : "1 plastic bottle, 2 PET plastic bottle, 3 recycled PET plastic bottle, 4 transparent recycled PET bottle, 5 colored PET bottle, 6 transparent PET bottle, 7 colored PEHD bottle, 8 rPET lid, 9 bio-based PET bottles", - "packagings" : [ - { - "material" : "en:plastic", - "number" : "1", - "shape" : "en:bottle" - }, - { - "material" : "en:pet-polyethylene-terephthalate", - "number" : "2", - "shape" : "en:bottle" - }, - { - "material" : "en:rpet-recycled-polyethylene-terephthalate", - "number" : "3", - "shape" : "en:bottle" - }, - { - "material" : "en:rpet-recycled-polyethylene-terephthalate", - "number" : "4", - "shape" : "en:bottle" - }, - { - "material" : "en:colored-pet", - "number" : "5", - "shape" : "en:bottle" - }, - { - "material" : "en:transparent-pet", - "number" : "6", - "shape" : "en:bottle" - }, - { - "material" : "en:hdpe-high-density-polyethylene", - "number" : "7", - "shape" : "en:bottle" - }, - { - "material" : "en:rpet-recycled-polyethylene-terephthalate", - "number" : "8", - "shape" : "en:lid" - }, - { - "material" : "en:biobased-pet", - "number" : "9", - "shape" : "en:bottle" - } - ] -} diff --git a/tests/unit/expected_test_results/ecoscore/agribalyse-updated-category.json b/tests/unit/expected_test_results/environmental_score/agribalyse-updated-category.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/agribalyse-updated-category.json rename to tests/unit/expected_test_results/environmental_score/agribalyse-updated-category.json diff --git a/tests/unit/expected_test_results/ecoscore/calvados-ingredients-no-origins.json b/tests/unit/expected_test_results/environmental_score/calvados-ingredients-no-origins.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/calvados-ingredients-no-origins.json rename to tests/unit/expected_test_results/environmental_score/calvados-ingredients-no-origins.json diff --git a/tests/unit/expected_test_results/ecoscore/calvados-no-ingredients-no-origins.json b/tests/unit/expected_test_results/environmental_score/calvados-no-ingredients-no-origins.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/calvados-no-ingredients-no-origins.json rename to tests/unit/expected_test_results/environmental_score/calvados-no-ingredients-no-origins.json diff --git a/tests/unit/expected_test_results/ecoscore/carrots-plastic.json b/tests/unit/expected_test_results/environmental_score/carrots-plastic.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/carrots-plastic.json rename to tests/unit/expected_test_results/environmental_score/carrots-plastic.json diff --git a/tests/unit/expected_test_results/ecoscore/carrots.json b/tests/unit/expected_test_results/environmental_score/carrots.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/carrots.json rename to tests/unit/expected_test_results/environmental_score/carrots.json diff --git a/tests/unit/expected_test_results/ecoscore/category-without-ecoscore-sodas.json b/tests/unit/expected_test_results/environmental_score/category-without-environmental_score-sodas.json similarity index 98% rename from tests/unit/expected_test_results/ecoscore/category-without-ecoscore-sodas.json rename to tests/unit/expected_test_results/environmental_score/category-without-environmental_score-sodas.json index 073da512a0a58..adfd1c6a3d6e7 100644 --- a/tests/unit/expected_test_results/ecoscore/category-without-ecoscore-sodas.json +++ b/tests/unit/expected_test_results/environmental_score/category-without-environmental_score-sodas.json @@ -310,9 +310,9 @@ "en:packagings-number-of-components-0", "en:packagings-not-complete", "en:packagings-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-not-applicable", - "en:environmental_score-not-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-not-applicable", + "en:environmental-score-not-computed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/empty-product.json b/tests/unit/expected_test_results/environmental_score/empty-product.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/empty-product.json rename to tests/unit/expected_test_results/environmental_score/empty-product.json diff --git a/tests/unit/expected_test_results/ecoscore/energy-drink.json b/tests/unit/expected_test_results/environmental_score/energy-drink.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/energy-drink.json rename to tests/unit/expected_test_results/environmental_score/energy-drink.json diff --git a/tests/unit/expected_test_results/ecoscore/exempted-category-sodas.json b/tests/unit/expected_test_results/environmental_score/exempted-category-sodas.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/exempted-category-sodas.json rename to tests/unit/expected_test_results/environmental_score/exempted-category-sodas.json diff --git a/tests/unit/expected_test_results/ecoscore/foie-gras.json b/tests/unit/expected_test_results/environmental_score/foie-gras.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/foie-gras.json rename to tests/unit/expected_test_results/environmental_score/foie-gras.json diff --git a/tests/unit/expected_test_results/ecoscore/fr-oeufs-de-france.json b/tests/unit/expected_test_results/environmental_score/fr-oeufs-de-france.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/fr-oeufs-de-france.json rename to tests/unit/expected_test_results/environmental_score/fr-oeufs-de-france.json diff --git a/tests/unit/expected_test_results/ecoscore/fr-verseur-en-plastique.json b/tests/unit/expected_test_results/environmental_score/fr-verseur-en-plastique.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/fr-verseur-en-plastique.json rename to tests/unit/expected_test_results/environmental_score/fr-verseur-en-plastique.json diff --git a/tests/unit/expected_test_results/ecoscore/fr-viande-porcine-francaise.json b/tests/unit/expected_test_results/environmental_score/fr-viande-porcine-francaise.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/fr-viande-porcine-francaise.json rename to tests/unit/expected_test_results/environmental_score/fr-viande-porcine-francaise.json diff --git a/tests/unit/expected_test_results/ecoscore/fresh-vegetable.json b/tests/unit/expected_test_results/environmental_score/fresh-vegetable.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/fresh-vegetable.json rename to tests/unit/expected_test_results/environmental_score/fresh-vegetable.json diff --git a/tests/unit/expected_test_results/ecoscore/frozen-vegetable.json b/tests/unit/expected_test_results/environmental_score/frozen-vegetable.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/frozen-vegetable.json rename to tests/unit/expected_test_results/environmental_score/frozen-vegetable.json diff --git a/tests/unit/expected_test_results/ecoscore/grade-a-with-non-recyclable-label.json b/tests/unit/expected_test_results/environmental_score/grade-a-with-non-recyclable-label.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/grade-a-with-non-recyclable-label.json rename to tests/unit/expected_test_results/environmental_score/grade-a-with-non-recyclable-label.json diff --git a/tests/unit/expected_test_results/ecoscore/grade-a-with-recyclable-label.json b/tests/unit/expected_test_results/environmental_score/grade-a-with-recyclable-label.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/grade-a-with-recyclable-label.json rename to tests/unit/expected_test_results/environmental_score/grade-a-with-recyclable-label.json diff --git a/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil-rspo.json b/tests/unit/expected_test_results/environmental_score/ingredient-palm-oil-rspo.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/ingredient-palm-oil-rspo.json rename to tests/unit/expected_test_results/environmental_score/ingredient-palm-oil-rspo.json diff --git a/tests/unit/expected_test_results/ecoscore/ingredient-palm-oil.json b/tests/unit/expected_test_results/environmental_score/ingredient-palm-oil.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/ingredient-palm-oil.json rename to tests/unit/expected_test_results/environmental_score/ingredient-palm-oil.json diff --git a/tests/unit/expected_test_results/ecoscore/known-category-butters.json b/tests/unit/expected_test_results/environmental_score/known-category-butters.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/known-category-butters.json rename to tests/unit/expected_test_results/environmental_score/known-category-butters.json diff --git a/tests/unit/expected_test_results/ecoscore/known-category-margarines.json b/tests/unit/expected_test_results/environmental_score/known-category-margarines.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/known-category-margarines.json rename to tests/unit/expected_test_results/environmental_score/known-category-margarines.json diff --git a/tests/unit/expected_test_results/ecoscore/label-ab-hve-msc-asc.json b/tests/unit/expected_test_results/environmental_score/label-ab-hve-msc-asc.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/label-ab-hve-msc-asc.json rename to tests/unit/expected_test_results/environmental_score/label-ab-hve-msc-asc.json diff --git a/tests/unit/expected_test_results/ecoscore/label-ab-hve.json b/tests/unit/expected_test_results/environmental_score/label-ab-hve.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/label-ab-hve.json rename to tests/unit/expected_test_results/environmental_score/label-ab-hve.json diff --git a/tests/unit/expected_test_results/ecoscore/label-msc-asc.json b/tests/unit/expected_test_results/environmental_score/label-msc-asc.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/label-msc-asc.json rename to tests/unit/expected_test_results/environmental_score/label-msc-asc.json diff --git a/tests/unit/expected_test_results/ecoscore/label-organic.json b/tests/unit/expected_test_results/environmental_score/label-organic.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/label-organic.json rename to tests/unit/expected_test_results/environmental_score/label-organic.json diff --git a/tests/unit/expected_test_results/ecoscore/lamb-leg.json b/tests/unit/expected_test_results/environmental_score/lamb-leg.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/lamb-leg.json rename to tests/unit/expected_test_results/environmental_score/lamb-leg.json diff --git a/tests/unit/expected_test_results/ecoscore/milk.json b/tests/unit/expected_test_results/environmental_score/milk.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/milk.json rename to tests/unit/expected_test_results/environmental_score/milk.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field-multiple.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-in-origins-field-multiple.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field-multiple.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-in-origins-field-multiple.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-in-origins-field.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-in-origins-field.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-in-origins-field.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested-2.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-nested-2.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested-2.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-nested-2.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-nested.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-nested.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-nested.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-not-specified.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-not-specified.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-not-specified.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-not-specified.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-partly-specified.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-partly-specified.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-partly-specified.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-partly-specified.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified-multiple.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-specified-multiple.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified-multiple.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-specified-multiple.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-specified.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-specified.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-specified.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unknown-origin.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-unknown-origin.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unknown-origin.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-unknown-origin.json diff --git a/tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unspecified-origin.json b/tests/unit/expected_test_results/environmental_score/origins-of-ingredients-unspecified-origin.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/origins-of-ingredients-unspecified-origin.json rename to tests/unit/expected_test_results/environmental_score/origins-of-ingredients-unspecified-origin.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-bulk.json b/tests/unit/expected_test_results/environmental_score/packaging-en-bulk.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-bulk.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-bulk.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-multiple-over-maximum-malus.json b/tests/unit/expected_test_results/environmental_score/packaging-en-multiple-over-maximum-malus.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-multiple-over-maximum-malus.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-multiple-over-maximum-malus.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-multiple.json b/tests/unit/expected_test_results/environmental_score/packaging-en-multiple.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-multiple.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-multiple.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-pet-bottle.json b/tests/unit/expected_test_results/environmental_score/packaging-en-pet-bottle.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-pet-bottle.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-pet-bottle.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-plastic-bottle.json b/tests/unit/expected_test_results/environmental_score/packaging-en-plastic-bottle.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-plastic-bottle.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-plastic-bottle.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak-brick.json b/tests/unit/expected_test_results/environmental_score/packaging-en-tetra-pak-brick.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak-brick.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-tetra-pak-brick.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak.json b/tests/unit/expected_test_results/environmental_score/packaging-en-tetra-pak.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-tetra-pak.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-tetra-pak.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-bottle.json b/tests/unit/expected_test_results/environmental_score/packaging-en-unspecified-material-bottle.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-bottle.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-unspecified-material-bottle.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-can.json b/tests/unit/expected_test_results/environmental_score/packaging-en-unspecified-material-can.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-en-unspecified-material-can.json rename to tests/unit/expected_test_results/environmental_score/packaging-en-unspecified-material-can.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-fr-new-shapes.json b/tests/unit/expected_test_results/environmental_score/packaging-fr-new-shapes.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-fr-new-shapes.json rename to tests/unit/expected_test_results/environmental_score/packaging-fr-new-shapes.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-unspecified-no-a-eco-score.json b/tests/unit/expected_test_results/environmental_score/packaging-unspecified-no-a-eco-score.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-unspecified-no-a-eco-score.json rename to tests/unit/expected_test_results/environmental_score/packaging-unspecified-no-a-eco-score.json diff --git a/tests/unit/expected_test_results/ecoscore/packaging-unspecified.json b/tests/unit/expected_test_results/environmental_score/packaging-unspecified.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/packaging-unspecified.json rename to tests/unit/expected_test_results/environmental_score/packaging-unspecified.json diff --git a/tests/unit/expected_test_results/ecoscore/skyr.json b/tests/unit/expected_test_results/environmental_score/skyr.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/skyr.json rename to tests/unit/expected_test_results/environmental_score/skyr.json diff --git a/tests/unit/expected_test_results/ecoscore/sum-of-bonuses-greater-than-25.json b/tests/unit/expected_test_results/environmental_score/sum-of-bonuses-greater-than-25.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/sum-of-bonuses-greater-than-25.json rename to tests/unit/expected_test_results/environmental_score/sum-of-bonuses-greater-than-25.json diff --git a/tests/unit/expected_test_results/ecoscore/track-ecoscore-changes.json b/tests/unit/expected_test_results/environmental_score/track-environmental_score-changes.json similarity index 97% rename from tests/unit/expected_test_results/ecoscore/track-ecoscore-changes.json rename to tests/unit/expected_test_results/environmental_score/track-environmental_score-changes.json index 1bdca1462464b..710f5ff7e1d8d 100644 --- a/tests/unit/expected_test_results/ecoscore/track-ecoscore-changes.json +++ b/tests/unit/expected_test_results/environmental_score/track-environmental_score-changes.json @@ -485,13 +485,13 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/track-ecoscore-no-change.json b/tests/unit/expected_test_results/environmental_score/track-environmental_score-no-change.json similarity index 98% rename from tests/unit/expected_test_results/ecoscore/track-ecoscore-no-change.json rename to tests/unit/expected_test_results/environmental_score/track-environmental_score-no-change.json index be153f18c016d..e8982ae44947e 100644 --- a/tests/unit/expected_test_results/ecoscore/track-ecoscore-no-change.json +++ b/tests/unit/expected_test_results/environmental_score/track-environmental_score-no-change.json @@ -478,11 +478,11 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/track-ecoscore-same-grade.json b/tests/unit/expected_test_results/environmental_score/track-environmental_score-same-grade.json similarity index 97% rename from tests/unit/expected_test_results/ecoscore/track-ecoscore-same-grade.json rename to tests/unit/expected_test_results/environmental_score/track-environmental_score-same-grade.json index 2ab83f4c9b6be..6721d4d3bc731 100644 --- a/tests/unit/expected_test_results/ecoscore/track-ecoscore-same-grade.json +++ b/tests/unit/expected_test_results/environmental_score/track-environmental_score-same-grade.json @@ -485,12 +485,12 @@ "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/track-ecoscore-tags-retained.json b/tests/unit/expected_test_results/environmental_score/track-environmental_score-tags-retained.json similarity index 97% rename from tests/unit/expected_test_results/ecoscore/track-ecoscore-tags-retained.json rename to tests/unit/expected_test_results/environmental_score/track-environmental_score-tags-retained.json index 56b969d4c0373..7a905f66dcf09 100644 --- a/tests/unit/expected_test_results/ecoscore/track-ecoscore-tags-retained.json +++ b/tests/unit/expected_test_results/environmental_score/track-environmental_score-tags-retained.json @@ -479,17 +479,19 @@ "known_ingredients_n" : 4, "lc" : "fr", "misc_tags" : [ + "en:environmental_score-changed", + "en:environmental_score-grade-changed", "en:packagings-number-of-components-2", "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", "en:packagings-not-empty", - "en:environmental_score-extended-data-not-computed", - "en:environmental_score-missing-data-warning", - "en:environmental_score-missing-data-labels", - "en:environmental_score-missing-data-origins", - "en:environmental_score-computed", - "en:environmental_score-changed", - "en:environmental_score-grade-changed" + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-missing-data-warning", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-computed", + "en:environmental-score-changed", + "en:environmental-score-grade-changed" ], "nutriments" : { "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 0, diff --git a/tests/unit/expected_test_results/ecoscore/uk-milk.json b/tests/unit/expected_test_results/environmental_score/uk-milk.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/uk-milk.json rename to tests/unit/expected_test_results/environmental_score/uk-milk.json diff --git a/tests/unit/expected_test_results/ecoscore/unknown-category.json b/tests/unit/expected_test_results/environmental_score/unknown-category.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/unknown-category.json rename to tests/unit/expected_test_results/environmental_score/unknown-category.json diff --git a/tests/unit/expected_test_results/ecoscore/yogurt.json b/tests/unit/expected_test_results/environmental_score/yogurt.json similarity index 100% rename from tests/unit/expected_test_results/ecoscore/yogurt.json rename to tests/unit/expected_test_results/environmental_score/yogurt.json From b7d50cbec6fdb84daebaf8aee28faceaf05112e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Mon, 16 Dec 2024 16:42:25 +0100 Subject: [PATCH 08/15] update tests --- tests/unit/dataqualityfood.t | 2 +- tests/unit/environmental_score.t | 12 ++++++------ .../attributes/en-attributes.json | 3 +++ ...en-environmental_score-score-at-20-threshold.json | 1 + .../attributes/en-no-ingredients.json | 1 + .../attributes/en-nova-groups-markers.json | 1 + .../attributes/en-nutriscore.json | 5 +++++ .../attributes/en-unknown-ingredients.json | 1 + ... category-without-environmental-score-sodas.json} | 0 ...s.json => track-environmental-score-changes.json} | 0 ...json => track-environmental-score-no-change.json} | 0 ...son => track-environmental-score-same-grade.json} | 0 ... => track-environmental-score-tags-retained.json} | 2 -- 13 files changed, 19 insertions(+), 9 deletions(-) rename tests/unit/expected_test_results/environmental_score/{category-without-environmental_score-sodas.json => category-without-environmental-score-sodas.json} (100%) rename tests/unit/expected_test_results/environmental_score/{track-environmental_score-changes.json => track-environmental-score-changes.json} (100%) rename tests/unit/expected_test_results/environmental_score/{track-environmental_score-no-change.json => track-environmental-score-no-change.json} (100%) rename tests/unit/expected_test_results/environmental_score/{track-environmental_score-same-grade.json => track-environmental-score-same-grade.json} (100%) rename tests/unit/expected_test_results/environmental_score/{track-environmental_score-tags-retained.json => track-environmental-score-tags-retained.json} (99%) diff --git a/tests/unit/dataqualityfood.t b/tests/unit/dataqualityfood.t index 2e288aa7d19a9..516bd4f1a9e83 100644 --- a/tests/unit/dataqualityfood.t +++ b/tests/unit/dataqualityfood.t @@ -319,7 +319,7 @@ check_quality_and_test_product_has_quality_tag( } } }, - "en:environmental_score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "origins 100 percent unknown", 1 ); diff --git a/tests/unit/environmental_score.t b/tests/unit/environmental_score.t index c645c8ce9acfb..1c98433666300 100644 --- a/tests/unit/environmental_score.t +++ b/tests/unit/environmental_score.t @@ -335,7 +335,7 @@ my @tests = ( # Sodas: no Eco-Score [ - 'category-without-environmental_score-sodas', + 'category-without-environmental-score-sodas', { lc => "en", categories_tags => ["en:sodas"], @@ -532,7 +532,7 @@ my @tests = ( # Keep track of old environmental_score score and add tags if it has changed [ - 'track-environmental_score-changes', + 'track-environmental-score-changes', { lc => "fr", categories_tags => ["en:foies-gras"], @@ -550,7 +550,7 @@ my @tests = ( # Score changed but same grade [ - 'track-environmental_score-same-grade', + 'track-environmental-score-same-grade', { lc => "fr", categories_tags => ["en:foies-gras"], @@ -568,7 +568,7 @@ my @tests = ( # Don't create data or tags if no change [ - 'track-environmental_score-no-change', + 'track-environmental-score-no-change', { lc => "fr", categories_tags => ["en:foies-gras"], @@ -583,7 +583,7 @@ my @tests = ( # Tags and previous data are retained on subsequent updates even if score is different [ - 'track-environmental_score-tags-retained', + 'track-environmental-score-tags-retained', { lc => "fr", categories_tags => ["en:foies-gras"], @@ -599,7 +599,7 @@ my @tests = ( version => "3.0" } }, - misc_tags => ["en:environmental_score-changed", "en:environmental_score-grade-changed"] + misc_tags => ["en:environmental-score-changed", "en:environmental-score-grade-changed"] }, ], diff --git a/tests/unit/expected_test_results/attributes/en-attributes.json b/tests/unit/expected_test_results/attributes/en-attributes.json index 651587efc7185..54dd809fa21be 100644 --- a/tests/unit/expected_test_results/attributes/en-attributes.json +++ b/tests/unit/expected_test_results/attributes/en-attributes.json @@ -368,6 +368,7 @@ "categories_tags" : [ "en:biscuits" ], + "compared_to_category" : "en:biscuits", "countries_tags" : [ "en:united-kingdom", "en:france" @@ -396,10 +397,12 @@ "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", + "en:nutrition-value-very-low-for-category-energy", "en:environmental-score-packaging-unspecified-material", "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ + "en:nutrition-value-very-low-for-category-energy", "en:environmental-score-packaging-unspecified-material", "en:environmental-score-production-system-no-label" ], diff --git a/tests/unit/expected_test_results/attributes/en-environmental_score-score-at-20-threshold.json b/tests/unit/expected_test_results/attributes/en-environmental_score-score-at-20-threshold.json index ec28b538573e6..6f9f41d1488e2 100644 --- a/tests/unit/expected_test_results/attributes/en-environmental_score-score-at-20-threshold.json +++ b/tests/unit/expected_test_results/attributes/en-environmental_score-score-at-20-threshold.json @@ -345,6 +345,7 @@ "categories_tags" : [ "en:cocoa-and-hazelnuts-spreads" ], + "compared_to_category" : "en:cocoa-and-hazelnuts-spreads", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", diff --git a/tests/unit/expected_test_results/attributes/en-no-ingredients.json b/tests/unit/expected_test_results/attributes/en-no-ingredients.json index 5d08da0f20225..cd11178d70b0f 100644 --- a/tests/unit/expected_test_results/attributes/en-no-ingredients.json +++ b/tests/unit/expected_test_results/attributes/en-no-ingredients.json @@ -345,6 +345,7 @@ "categories_tags" : [ "en:cheeses" ], + "compared_to_category" : "en:cheeses", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", diff --git a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json index 673199d710fd2..959260e3f2365 100644 --- a/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json +++ b/tests/unit/expected_test_results/attributes/en-nova-groups-markers.json @@ -356,6 +356,7 @@ "categories_tags" : [ "en:cheeses" ], + "compared_to_category" : "en:cheeses", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", diff --git a/tests/unit/expected_test_results/attributes/en-nutriscore.json b/tests/unit/expected_test_results/attributes/en-nutriscore.json index 926c68db4e023..e56d5a9348b4b 100644 --- a/tests/unit/expected_test_results/attributes/en-nutriscore.json +++ b/tests/unit/expected_test_results/attributes/en-nutriscore.json @@ -349,6 +349,7 @@ "categories_tags" : [ "en:biscuits" ], + "compared_to_category" : "en:biscuits", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", @@ -377,11 +378,15 @@ "en:food-groups-1-unknown", "en:food-groups-2-unknown", "en:food-groups-3-unknown", + "en:nutrition-value-very-high-for-category-fat", + "en:nutrition-value-very-high-for-category-proteins", "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], "data_quality_warnings_tags" : [ + "en:nutrition-value-very-high-for-category-fat", + "en:nutrition-value-very-high-for-category-proteins", "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" diff --git a/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json b/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json index f2728ae720ee3..b75b1fc2f53ed 100644 --- a/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json +++ b/tests/unit/expected_test_results/attributes/en-unknown-ingredients.json @@ -346,6 +346,7 @@ "categories_tags" : [ "en:cheeses" ], + "compared_to_category" : "en:cheeses", "data_quality_bugs_tags" : [ "en:main-language-missing", "en:code-missing", diff --git a/tests/unit/expected_test_results/environmental_score/category-without-environmental_score-sodas.json b/tests/unit/expected_test_results/environmental_score/category-without-environmental-score-sodas.json similarity index 100% rename from tests/unit/expected_test_results/environmental_score/category-without-environmental_score-sodas.json rename to tests/unit/expected_test_results/environmental_score/category-without-environmental-score-sodas.json diff --git a/tests/unit/expected_test_results/environmental_score/track-environmental_score-changes.json b/tests/unit/expected_test_results/environmental_score/track-environmental-score-changes.json similarity index 100% rename from tests/unit/expected_test_results/environmental_score/track-environmental_score-changes.json rename to tests/unit/expected_test_results/environmental_score/track-environmental-score-changes.json diff --git a/tests/unit/expected_test_results/environmental_score/track-environmental_score-no-change.json b/tests/unit/expected_test_results/environmental_score/track-environmental-score-no-change.json similarity index 100% rename from tests/unit/expected_test_results/environmental_score/track-environmental_score-no-change.json rename to tests/unit/expected_test_results/environmental_score/track-environmental-score-no-change.json diff --git a/tests/unit/expected_test_results/environmental_score/track-environmental_score-same-grade.json b/tests/unit/expected_test_results/environmental_score/track-environmental-score-same-grade.json similarity index 100% rename from tests/unit/expected_test_results/environmental_score/track-environmental_score-same-grade.json rename to tests/unit/expected_test_results/environmental_score/track-environmental-score-same-grade.json diff --git a/tests/unit/expected_test_results/environmental_score/track-environmental_score-tags-retained.json b/tests/unit/expected_test_results/environmental_score/track-environmental-score-tags-retained.json similarity index 99% rename from tests/unit/expected_test_results/environmental_score/track-environmental_score-tags-retained.json rename to tests/unit/expected_test_results/environmental_score/track-environmental-score-tags-retained.json index 7a905f66dcf09..30f44e8046476 100644 --- a/tests/unit/expected_test_results/environmental_score/track-environmental_score-tags-retained.json +++ b/tests/unit/expected_test_results/environmental_score/track-environmental-score-tags-retained.json @@ -479,8 +479,6 @@ "known_ingredients_n" : 4, "lc" : "fr", "misc_tags" : [ - "en:environmental_score-changed", - "en:environmental_score-grade-changed", "en:packagings-number-of-components-2", "en:packagings-not-complete", "en:packagings-not-empty-but-not-complete", From f02242ad8313003ec1efa2e6fe634eeba91719d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Tue, 17 Dec 2024 12:11:22 +0100 Subject: [PATCH 09/15] new tests to be used for compatibility ecoscore / environmental_score --- tests/integration/api_v3_product_read.t | 42 + .../get-attribute-groups-api-v3-1.json | 336 +++++ .../get-existing-product-api-v3-1.json | 1106 +++++++++++++++++ .../get-existing-product-gs1-caret.json | 2 +- .../get-existing-product-gs1-data-uri.json | 2 +- .../get-existing-product-gs1-fnc1.json | 2 +- .../get-existing-product-gs1-gs.json | 2 +- .../get-existing-product.json | 2 +- ...attribute-groups-all-knowledge-panels.json | 2 +- ...get-specific-fields-ecoscore-api-v3-1.json | 12 + .../get-specific-fields-ecoscore-api-v3.json | 12 + ...c-fields-environmental-score-api-v3-1.json | 450 +++++++ ...fic-fields-environmental-score-api-v3.json | 450 +++++++ 13 files changed, 2414 insertions(+), 6 deletions(-) create mode 100644 tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json create mode 100644 tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json create mode 100644 tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3-1.json create mode 100644 tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json create mode 100644 tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json create mode 100644 tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json diff --git a/tests/integration/api_v3_product_read.t b/tests/integration/api_v3_product_read.t index 491c1e5126cbf..f77cb2f55e09f 100644 --- a/tests/integration/api_v3_product_read.t +++ b/tests/integration/api_v3_product_read.t @@ -59,6 +59,12 @@ my $tests_ref = [ path => '/api/v3/product/4260392550101', expected_status_code => 200, }, + { + test_case => 'get-existing-product-api-v3-1', + method => 'GET', + path => '/api/v3.1/product/4260392550101', + expected_status_code => 200, + }, { test_case => 'get-existing-product-with-leading-zero', method => 'GET', @@ -102,6 +108,35 @@ my $tests_ref = [ query_string => '?fields=product_name,categories_tags,categories_tags_en', expected_status_code => 200, }, + # in API 3.1 ecoscore fields are renamed to environmental_score + { + test_case => 'get-specific-fields-ecoscore-api-v3', + method => 'GET', + path => '/api/v3/product/4260392550101', + query_string => '?fields=ecoscore_score,ecoscore_grade,ecoscore_data', + expected_status_code => 200, + }, + { + test_case => 'get-specific-fields-ecoscore-api-v3-1', + method => 'GET', + path => '/api/v3.1/product/4260392550101', + query_string => '?fields=ecoscore_score,ecoscore_grade,ecoscore_data', + expected_status_code => 200, + }, + { + test_case => 'get-specific-fields-environmental-score-api-v3', + method => 'GET', + path => '/api/v3/product/4260392550101', + query_string => '?fields=environmental_score_score,environmental_score_grade,environmental_score_data', + expected_status_code => 200, + }, + { + test_case => 'get-specific-fields-environmental-score-api-v3-1', + method => 'GET', + path => '/api/v3.1/product/4260392550101', + query_string => '?fields=environmental_score_score,environmental_score_grade,environmental_score_data', + expected_status_code => 200, + }, { test_case => 'get-images-to-update', method => 'GET', @@ -116,6 +151,13 @@ my $tests_ref = [ query_string => '?fields=attribute_groups', expected_status_code => 200, }, + { + test_case => 'get-attribute-groups-api-v3-1', + method => 'GET', + path => '/api/v3.1/product/4260392550101', + query_string => '?fields=attribute_groups', + expected_status_code => 200, + }, { test_case => 'get-attribute-groups-fr', method => 'GET', diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json new file mode 100644 index 0000000000000..6625f5520f248 --- /dev/null +++ b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json @@ -0,0 +1,336 @@ +{ + "code" : "4260392550101", + "errors" : [], + "product" : { + "attribute_groups" : [ + { + "attributes" : [ + { + "description" : "", + "description_short" : "Missing data to compute the Nutri-Score", + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutriscore-unknown-new-en.svg", + "id" : "nutriscore", + "match" : 0, + "name" : "Nutri-Score", + "panel_id" : "nutriscore_2023", + "status" : "unknown", + "title" : "Nutri-Score unknown" + }, + { + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-salt-unknown.svg", + "id" : "low_salt", + "missing" : "Missing nutrition facts", + "name" : "Salt", + "status" : "unknown", + "title" : "Salt in unknown quantity" + }, + { + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-fat-unknown.svg", + "id" : "low_fat", + "missing" : "Missing nutrition facts", + "name" : "Fat", + "status" : "unknown", + "title" : "Fat in unknown quantity" + }, + { + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-sugars-unknown.svg", + "id" : "low_sugars", + "missing" : "Missing nutrition facts", + "name" : "Sugars", + "status" : "unknown", + "title" : "Sugars in unknown quantity" + }, + { + "grade" : "unknown", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nutrient-level-saturated-fat-unknown.svg", + "id" : "low_saturated_fat", + "missing" : "Missing nutrition facts", + "name" : "Saturated fat", + "status" : "unknown", + "title" : "Saturated fat in unknown quantity" + } + ], + "id" : "nutritional_quality", + "name" : "Nutritional quality" + }, + { + "attributes" : [ + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-gluten.svg", + "id" : "allergens_no_gluten", + "match" : 100, + "name" : "Gluten", + "status" : "known", + "title" : "Does not contain: Gluten" + }, + { + "debug" : "en:milk in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-milk.svg", + "id" : "allergens_no_milk", + "match" : 0, + "name" : "Milk", + "status" : "known", + "title" : "Contains: Milk" + }, + { + "debug" : "en:eggs in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-eggs.svg", + "id" : "allergens_no_eggs", + "match" : 0, + "name" : "Eggs", + "status" : "known", + "title" : "Contains: Eggs" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-nuts.svg", + "id" : "allergens_no_nuts", + "match" : 100, + "name" : "Nuts", + "status" : "known", + "title" : "Does not contain: Nuts" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-peanuts.svg", + "id" : "allergens_no_peanuts", + "match" : 100, + "name" : "Peanuts", + "status" : "known", + "title" : "Does not contain: Peanuts" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sesame-seeds.svg", + "id" : "allergens_no_sesame_seeds", + "match" : 100, + "name" : "Sesame seeds", + "status" : "known", + "title" : "Does not contain: Sesame seeds" + }, + { + "debug" : "en:soybeans in allergens", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-soybeans.svg", + "id" : "allergens_no_soybeans", + "match" : 0, + "name" : "Soybeans", + "status" : "known", + "title" : "Contains: Soybeans" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-celery.svg", + "id" : "allergens_no_celery", + "match" : 100, + "name" : "Celery", + "status" : "known", + "title" : "Does not contain: Celery" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-mustard.svg", + "id" : "allergens_no_mustard", + "match" : 100, + "name" : "Mustard", + "status" : "known", + "title" : "Does not contain: Mustard" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-lupin.svg", + "id" : "allergens_no_lupin", + "match" : 100, + "name" : "Lupin", + "status" : "known", + "title" : "Does not contain: Lupin" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-fish.svg", + "id" : "allergens_no_fish", + "match" : 100, + "name" : "Fish", + "status" : "known", + "title" : "Does not contain: Fish" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-crustaceans.svg", + "id" : "allergens_no_crustaceans", + "match" : 100, + "name" : "Crustaceans", + "status" : "known", + "title" : "Does not contain: Crustaceans" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-molluscs.svg", + "id" : "allergens_no_molluscs", + "match" : 100, + "name" : "Molluscs", + "status" : "known", + "title" : "Does not contain: Molluscs" + }, + { + "debug" : "8 ingredients (0 unknown)", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/no-sulphur-dioxide-and-sulphites.svg", + "id" : "allergens_no_sulphur_dioxide_and_sulphites", + "match" : 100, + "name" : "Sulphur dioxide and sulphites", + "status" : "known", + "title" : "Does not contain: Sulphur dioxide and sulphites" + } + ], + "id" : "allergens", + "name" : "Allergens", + "warning" : "There is always a possibility that data about allergens may be missing, incomplete, incorrect or that the product's composition has changed. If you are allergic, always check the information on the actual product packaging." + }, + { + "attributes" : [ + { + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/non-vegan.svg", + "id" : "vegan", + "match" : 0, + "name" : "Vegan", + "panel_id" : "ingredients_analysis_en:non-vegan", + "status" : "known", + "title" : "Non-vegan" + }, + { + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/vegetarian.svg", + "id" : "vegetarian", + "match" : 100, + "name" : "Vegetarian", + "panel_id" : "ingredients_analysis_en:vegetarian", + "status" : "known", + "title" : "Vegetarian" + }, + { + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/contains-palm-oil.svg", + "id" : "palm_oil_free", + "match" : 0, + "name" : "Palm oil free", + "panel_id" : "ingredients_analysis_en:palm-oil", + "status" : "known", + "title" : "Palm oil" + } + ], + "id" : "ingredients_analysis", + "name" : "Ingredients" + }, + { + "attributes" : [ + { + "description_short" : "4 ultra-processing markers", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/nova-group-4.svg", + "id" : "nova", + "match" : 0, + "name" : "NOVA group", + "panel_id" : "nova", + "status" : "known", + "title" : "Ultra-processed foods" + }, + { + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/2-additives.svg", + "id" : "additives", + "match" : 60, + "name" : "Additives", + "panel_id" : "additives", + "status" : "known", + "title" : "2 additives" + } + ], + "id" : "processing", + "name" : "Food processing" + }, + { + "attributes" : [ + { + "description" : "", + "description_short" : "Moderate environmental impact", + "grade" : "c", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", + "id" : "environmental_score", + "match" : 47, + "name" : "Eco-Score", + "panel_id" : "environmental_score", + "status" : "known", + "title" : "Eco-Score C" + }, + { + "description" : "", + "description_short" : "Almost no risk of deforestation", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/forest-footprint-a.svg", + "id" : "forest_footprint", + "match" : 99.9351851851852, + "name" : "Forest footprint", + "status" : "known", + "title" : "Very small forest footprint" + } + ], + "id" : "environment", + "name" : "Environment" + }, + { + "attributes" : [ + { + "description" : "Organic farming aims to protect the environment and to conserve biodiversity by prohibiting or limiting the use of synthetic fertilizers, pesticides and food additives.", + "description_short" : "Promotes ecological sustainability and biodiversity.", + "grade" : "a", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/organic.svg", + "id" : "labels_organic", + "match" : 100, + "name" : "Organic farming", + "status" : "known", + "title" : "Organic product" + }, + { + "description" : "When you buy fair trade products, producers in developing countries are paid an higher and fairer price, which helps them improve and sustain higher social and often environmental standards.", + "description_short" : "Fair trade products help producers in developing countries.", + "grade" : "e", + "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/not-fair-trade.svg", + "id" : "labels_fair_trade", + "match" : 0, + "name" : "Fair trade", + "status" : "known", + "title" : "Not a fair trade product" + } + ], + "id" : "labels", + "name" : "Labels" + } + ] + }, + "result" : { + "id" : "product_found", + "lc_name" : "Product found", + "name" : "Product found" + }, + "status" : "success", + "warnings" : [] +} diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json new file mode 100644 index 0000000000000..bd9fd1445161a --- /dev/null +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json @@ -0,0 +1,1106 @@ +{ + "code" : "4260392550101", + "errors" : [], + "product" : { + "_id" : "4260392550101", + "_keywords" : [ + "cookie", + "organic", + "product", + "some", + "tester" + ], + "added_countries_tags" : [], + "additives_n" : 2, + "additives_original_tags" : [ + "en:e100", + "en:e322i" + ], + "additives_tags" : [ + "en:e100", + "en:e322", + "en:e322i" + ], + "allergens" : "", + "allergens_from_ingredients" : "en:soybeans, en:eggs, en:milk, apple, milk, eggs", + "allergens_from_user" : "(en) ", + "allergens_hierarchy" : [ + "en:apple", + "en:eggs", + "en:milk", + "en:soybeans" + ], + "allergens_tags" : [ + "en:apple", + "en:eggs", + "en:milk", + "en:soybeans" + ], + "amino_acids_tags" : [], + "categories" : "cookies", + "categories_hierarchy" : [ + "en:snacks", + "en:sweet-snacks", + "en:biscuits-and-cakes", + "en:biscuits-and-crackers", + "en:biscuits" + ], + "categories_lc" : "en", + "categories_properties" : { + "agribalyse_proxy_food_code:en" : "24000" + }, + "categories_properties_tags" : [ + "all-products", + "categories-known", + "agribalyse-food-code-unknown", + "agribalyse-proxy-food-code-24000", + "agribalyse-proxy-food-code-known", + "ciqual-food-code-unknown", + "agribalyse-known", + "agribalyse-24000" + ], + "categories_tags" : [ + "en:snacks", + "en:sweet-snacks", + "en:biscuits-and-cakes", + "en:biscuits-and-crackers", + "en:biscuits" + ], + "checkers_tags" : [], + "code" : "4260392550101", + "codes_tags" : [ + "code-13", + "4260392550xxx", + "426039255xxxx", + "42603925xxxxx", + "4260392xxxxxx", + "426039xxxxxxx", + "42603xxxxxxxx", + "4260xxxxxxxxx", + "426xxxxxxxxxx", + "42xxxxxxxxxxx", + "4xxxxxxxxxxxx" + ], + "complete" : 0, + "completeness" : 0.4, + "correctors_tags" : [], + "created_t" : "--ignore--", + "creator" : "tests", + "data_quality_bugs_tags" : [], + "data_quality_errors_tags" : [], + "data_quality_info_tags" : [ + "en:packaging-data-incomplete", + "en:ingredients-percent-analysis-ok", + "en:environmental-score-extended-data-not-computed", + "en:food-groups-1-known", + "en:food-groups-2-known", + "en:food-groups-3-unknown" + ], + "data_quality_tags" : [ + "en:packaging-data-incomplete", + "en:ingredients-percent-analysis-ok", + "en:environmental-score-extended-data-not-computed", + "en:food-groups-1-known", + "en:food-groups-2-known", + "en:food-groups-3-unknown", + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-production-system-no-label" + ], + "data_quality_warnings_tags" : [ + "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", + "en:environmental-score-production-system-no-label" + ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", + "environmental_score_data" : { + "adjustments" : { + "origins_of_ingredients" : { + "aggregated_origins" : [ + { + "epi_score" : "0", + "origin" : "en:unknown", + "percent" : 100, + "transportation_score" : 0 + } + ], + "epi_score" : 0, + "epi_value" : -5, + "origins_from_categories" : [ + "en:unknown" + ], + "origins_from_origins_field" : [ + "en:unknown" + ], + "transportation_score" : 0, + "transportation_scores" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "transportation_value" : 0, + "transportation_values" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "value" : -5, + "values" : { + "ad" : -5, + "al" : -5, + "at" : -5, + "ax" : -5, + "ba" : -5, + "be" : -5, + "bg" : -5, + "ch" : -5, + "cy" : -5, + "cz" : -5, + "de" : -5, + "dk" : -5, + "dz" : -5, + "ee" : -5, + "eg" : -5, + "es" : -5, + "fi" : -5, + "fo" : -5, + "fr" : -5, + "gg" : -5, + "gi" : -5, + "gr" : -5, + "hr" : -5, + "hu" : -5, + "ie" : -5, + "il" : -5, + "im" : -5, + "is" : -5, + "it" : -5, + "je" : -5, + "lb" : -5, + "li" : -5, + "lt" : -5, + "lu" : -5, + "lv" : -5, + "ly" : -5, + "ma" : -5, + "mc" : -5, + "md" : -5, + "me" : -5, + "mk" : -5, + "mt" : -5, + "nl" : -5, + "no" : -5, + "pl" : -5, + "ps" : -5, + "pt" : -5, + "ro" : -5, + "rs" : -5, + "se" : -5, + "si" : -5, + "sj" : -5, + "sk" : -5, + "sm" : -5, + "sy" : -5, + "tn" : -5, + "tr" : -5, + "ua" : -5, + "uk" : -5, + "us" : -5, + "va" : -5, + "world" : -5, + "xk" : -5 + }, + "warning" : "origins_are_100_percent_unknown" + }, + "packaging" : { + "non_recyclable_and_non_biodegradable_materials" : 0, + "packagings" : [ + { + "environmental_score_material_score" : 50, + "environmental_score_shape_ratio" : 1, + "material" : "en:wood", + "number_of_units" : 1, + "recycling" : "en:recycle", + "shape" : "en:box" + }, + { + "environmental_score_material_score" : 81, + "environmental_score_shape_ratio" : 1, + "material" : "en:glass", + "number_of_units" : 6, + "quantity_per_unit" : "25cl", + "quantity_per_unit_unit" : "cl", + "quantity_per_unit_value" : 25, + "recycling" : "en:reuse", + "shape" : "en:bottle" + }, + { + "environmental_score_material_score" : 76, + "environmental_score_shape_ratio" : 0.2, + "material" : "en:steel", + "number_of_units" : 3, + "recycling" : "en:recycle", + "shape" : "en:lid" + }, + { + "environmental_score_material_score" : 0, + "environmental_score_shape_ratio" : 0.1, + "material" : "en:plastic", + "non_recyclable_and_non_biodegradable" : "maybe", + "number_of_units" : 1, + "recycling" : "en:discard", + "shape" : "en:film" + } + ], + "score" : 16.2, + "value" : -8 + }, + "production_system" : { + "labels" : [], + "value" : 0, + "warning" : "no_label" + }, + "threatened_species" : { + "ingredient" : "en:palm-oil", + "value" : -10 + } + }, + "agribalyse" : { + "agribalyse_proxy_food_code" : "24000", + "co2_agriculture" : 2.3635185, + "co2_consumption" : 0, + "co2_distribution" : 0.019437894, + "co2_packaging" : 0.10986902, + "co2_processing" : 0.22831584, + "co2_total" : 2.856230424, + "co2_transportation" : 0.13508917, + "code" : "24000", + "dqr" : "2.14", + "ef_agriculture" : 0.27654213, + "ef_consumption" : 0, + "ef_distribution" : 0.0047895045, + "ef_packaging" : 0.01090994, + "ef_processing" : 0.04151582, + "ef_total" : 0.3448030585, + "ef_transportation" : 0.011045664, + "is_beverage" : 0, + "name_en" : "Biscuit (cookie)", + "name_fr" : "Biscuit sec, sans précision", + "score" : 70, + "version" : "3.1.1" + }, + "grade" : "c", + "grades" : { + "ad" : "c", + "al" : "c", + "at" : "c", + "ax" : "c", + "ba" : "c", + "be" : "c", + "bg" : "c", + "ch" : "c", + "cy" : "c", + "cz" : "c", + "de" : "c", + "dk" : "c", + "dz" : "c", + "ee" : "c", + "eg" : "c", + "es" : "c", + "fi" : "c", + "fo" : "c", + "fr" : "c", + "gg" : "c", + "gi" : "c", + "gr" : "c", + "hr" : "c", + "hu" : "c", + "ie" : "c", + "il" : "c", + "im" : "c", + "is" : "c", + "it" : "c", + "je" : "c", + "lb" : "c", + "li" : "c", + "lt" : "c", + "lu" : "c", + "lv" : "c", + "ly" : "c", + "ma" : "c", + "mc" : "c", + "md" : "c", + "me" : "c", + "mk" : "c", + "mt" : "c", + "nl" : "c", + "no" : "c", + "pl" : "c", + "ps" : "c", + "pt" : "c", + "ro" : "c", + "rs" : "c", + "se" : "c", + "si" : "c", + "sj" : "c", + "sk" : "c", + "sm" : "c", + "sy" : "c", + "tn" : "c", + "tr" : "c", + "ua" : "c", + "uk" : "c", + "us" : "c", + "va" : "c", + "world" : "c", + "xk" : "c" + }, + "missing" : { + "labels" : 1, + "origins" : 1 + }, + "missing_data_warning" : 1, + "score" : 47, + "scores" : { + "ad" : 47, + "al" : 47, + "at" : 47, + "ax" : 47, + "ba" : 47, + "be" : 47, + "bg" : 47, + "ch" : 47, + "cy" : 47, + "cz" : 47, + "de" : 47, + "dk" : 47, + "dz" : 47, + "ee" : 47, + "eg" : 47, + "es" : 47, + "fi" : 47, + "fo" : 47, + "fr" : 47, + "gg" : 47, + "gi" : 47, + "gr" : 47, + "hr" : 47, + "hu" : 47, + "ie" : 47, + "il" : 47, + "im" : 47, + "is" : 47, + "it" : 47, + "je" : 47, + "lb" : 47, + "li" : 47, + "lt" : 47, + "lu" : 47, + "lv" : 47, + "ly" : 47, + "ma" : 47, + "mc" : 47, + "md" : 47, + "me" : 47, + "mk" : 47, + "mt" : 47, + "nl" : 47, + "no" : 47, + "pl" : 47, + "ps" : 47, + "pt" : 47, + "ro" : 47, + "rs" : 47, + "se" : 47, + "si" : 47, + "sj" : 47, + "sk" : 47, + "sm" : 47, + "sy" : 47, + "tn" : 47, + "tr" : 47, + "ua" : 47, + "uk" : 47, + "us" : 47, + "va" : 47, + "world" : 47, + "xk" : 47 + }, + "status" : "known" + }, + "environmental_score_grade" : "c", + "environmental_score_score" : 47, + "environmental_score_tags" : [ + "c" + ], + "food_groups" : "en:biscuits-and-cakes", + "food_groups_tags" : [ + "en:sugary-snacks", + "en:biscuits-and-cakes" + ], + "forest_footprint_data" : { + "footprint_per_kg" : 0.00162037037037037, + "grade" : "a", + "ingredients" : [ + { + "conditions_tags" : [ + [ + "labels", + "en:organic" + ] + ], + "footprint_per_kg" : 0.00162037037037037, + "matching_tag_id" : "en:egg", + "percent" : 10.4166666666667, + "percent_estimate" : 10.4166666666667, + "processing_factor" : 1, + "tag_id" : "en:egg", + "tag_type" : "ingredients", + "type" : { + "deforestation_risk" : 0.1, + "name" : "Oeufs Bio", + "soy_feed_factor" : 0.028, + "soy_yield" : 0.18 + } + } + ] + }, + "generic_name" : "Tester", + "generic_name_en" : "Tester", + "id" : "4260392550101", + "informers_tags" : [ + "tests" + ], + "ingredients" : [ + { + "ciqual_food_code" : "13050", + "ecobalyse_code" : "apple-fr", + "id" : "en:apple", + "is_in_taxonomy" : 1, + "percent_estimate" : 58.3333333333333, + "percent_max" : 100, + "percent_min" : 16.6666666666667, + "text" : "apple", + "vegan" : "yes", + "vegetarian" : "yes" + }, + { + "ciqual_proxy_food_code" : "19051", + "ecobalyse_code" : "milk", + "id" : "en:milk", + "is_in_taxonomy" : 1, + "percent_estimate" : 20.8333333333333, + "percent_max" : 50, + "percent_min" : 0, + "text" : "milk", + "vegan" : "no", + "vegetarian" : "yes" + }, + { + "ciqual_food_code" : "22000", + "ecobalyse_code" : "egg-indoor-code3", + "id" : "en:egg", + "is_in_taxonomy" : 1, + "percent_estimate" : 10.4166666666667, + "percent_max" : 33.3333333333333, + "percent_min" : 0, + "text" : "eggs", + "vegan" : "no", + "vegetarian" : "yes" + }, + { + "ciqual_food_code" : "16129", + "ecobalyse_code" : "refined-palm-oil", + "from_palm_oil" : "yes", + "id" : "en:palm-oil", + "is_in_taxonomy" : 1, + "percent_estimate" : 5.20833333333333, + "percent_max" : 25, + "percent_min" : 0, + "text" : "palm oil", + "vegan" : "yes", + "vegetarian" : "yes" + }, + { + "id" : "en:colour", + "ingredients" : [ + { + "id" : "en:e100", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "curcumin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 20, + "percent_min" : 0, + "text" : "coloring" + }, + { + "id" : "en:emulsifier", + "ingredients" : [ + { + "ciqual_food_code" : "42200", + "id" : "en:soya-lecithin", + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "soy lecithin", + "vegan" : "yes", + "vegetarian" : "yes" + } + ], + "is_in_taxonomy" : 1, + "percent_estimate" : 2.60416666666666, + "percent_max" : 16.6666666666667, + "percent_min" : 0, + "text" : "emulsifier" + } + ], + "ingredients_analysis" : { + "en:non-vegan" : [ + "en:milk", + "en:egg" + ], + "en:palm-oil" : [ + "en:palm-oil" + ] + }, + "ingredients_analysis_tags" : [ + "en:palm-oil", + "en:non-vegan", + "en:vegetarian" + ], + "ingredients_hierarchy" : [ + "en:apple", + "en:fruit", + "en:malaceous-fruit", + "en:milk", + "en:dairy", + "en:egg", + "en:palm-oil", + "en:oil-and-fat", + "en:vegetable-oil-and-fat", + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" + ], + "ingredients_lc" : "en", + "ingredients_n" : 8, + "ingredients_n_tags" : [ + "8", + "1-10" + ], + "ingredients_non_nutritive_sweeteners_n" : 0, + "ingredients_original_tags" : [ + "en:apple", + "en:milk", + "en:egg", + "en:palm-oil", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin" + ], + "ingredients_percent_analysis" : 1, + "ingredients_sweeteners_n" : 0, + "ingredients_tags" : [ + "en:apple", + "en:fruit", + "en:malaceous-fruit", + "en:milk", + "en:dairy", + "en:egg", + "en:palm-oil", + "en:oil-and-fat", + "en:vegetable-oil-and-fat", + "en:palm-oil-and-fat", + "en:colour", + "en:emulsifier", + "en:e100", + "en:soya-lecithin", + "en:e322", + "en:e322i" + ], + "ingredients_text" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_text_with_allergens_en" : "apple, milk, eggs, palm oil, coloring: curcumin, emulsifier: soy lecithin", + "ingredients_with_specified_percent_n" : 0, + "ingredients_with_specified_percent_sum" : 0, + "ingredients_with_unspecified_percent_n" : 6, + "ingredients_with_unspecified_percent_sum" : 100, + "ingredients_without_ciqual_codes" : [ + "en:colour", + "en:e100", + "en:emulsifier" + ], + "ingredients_without_ciqual_codes_n" : 3, + "ingredients_without_ecobalyse_ids" : [ + "en:colour", + "en:e100", + "en:emulsifier", + "en:soya-lecithin" + ], + "ingredients_without_ecobalyse_ids_n" : 4, + "interface_version_created" : "20150316.jqm2", + "interface_version_modified" : "20150316.jqm2", + "known_ingredients_n" : 16, + "labels" : "organic", + "labels_hierarchy" : [ + "en:organic" + ], + "labels_lc" : "en", + "labels_tags" : [ + "en:organic" + ], + "lang" : "en", + "languages" : { + "en:english" : 5 + }, + "languages_codes" : { + "en" : 5 + }, + "languages_hierarchy" : [ + "en:english" + ], + "languages_tags" : [ + "en:english", + "en:1" + ], + "last_edit_dates_tags" : "--ignore--", + "last_editor" : "tests", + "last_modified_by" : "tests", + "last_modified_t" : "--ignore--", + "last_updated_t" : "--ignore--", + "lc" : "en", + "link" : "http://world.openfoodfacts.org/", + "main_countries_tags" : [], + "minerals_tags" : [], + "misc_tags" : [ + "en:environmental-score-changed", + "en:environmental-score-computed", + "en:environmental-score-extended-data-not-computed", + "en:environmental-score-grade-changed", + "en:environmental-score-missing-data-labels", + "en:environmental-score-missing-data-origins", + "en:environmental-score-missing-data-warning", + "en:forest-footprint-a", + "en:forest-footprint-computed", + "en:nutriscore-missing-nutrition-data", + "en:nutriscore-missing-nutrition-data-energy", + "en:nutriscore-missing-nutrition-data-fat", + "en:nutriscore-missing-nutrition-data-proteins", + "en:nutriscore-missing-nutrition-data-saturated-fat", + "en:nutriscore-missing-nutrition-data-sodium", + "en:nutriscore-missing-nutrition-data-sugars", + "en:nutriscore-not-computed", + "en:nutrition-fruits-vegetables-legumes-estimate-from-ingredients", + "en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients", + "en:nutrition-no-fiber", + "en:nutrition-no-fiber-or-fruits-vegetables-nuts", + "en:nutrition-not-enough-data-to-compute-nutrition-score", + "en:packagings-not-complete", + "en:packagings-not-empty", + "en:packagings-not-empty-but-not-complete", + "en:packagings-number-of-components-4", + "en:main-countries-new-product" + ], + "nova_group" : 4, + "nova_group_debug" : "", + "nova_groups" : "4", + "nova_groups_markers" : { + "3" : [ + [ + "categories", + "en:sweet-snacks" + ] + ], + "4" : [ + [ + "additives", + "en:e100" + ], + [ + "additives", + "en:e322" + ], + [ + "ingredients", + "en:colour" + ], + [ + "ingredients", + "en:emulsifier" + ] + ] + }, + "nova_groups_tags" : [ + "en:4-ultra-processed-food-and-drink-products" + ], + "nucleotides_tags" : [], + "nutrient_levels" : {}, + "nutrient_levels_tags" : [], + "nutriments" : { + "fruits-vegetables-legumes-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-legumes-estimate-from-ingredients_serving" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_100g" : 58.3333333333333, + "fruits-vegetables-nuts-estimate-from-ingredients_serving" : 58.3333333333333, + "nova-group" : 4, + "nova-group_100g" : 4, + "nova-group_serving" : 4 + }, + "nutriscore" : { + "2021" : { + "category_available" : 1, + "data" : { + "energy" : null, + "fiber" : 0, + "fruits_vegetables_nuts_colza_walnut_olive_oils" : 58.3333333333333, + "is_beverage" : 0, + "is_cheese" : 0, + "is_fat" : 0, + "is_water" : 0, + "proteins" : null, + "saturated_fat" : null, + "sodium" : null, + "sugars" : null + }, + "grade" : "unknown", + "nutrients_available" : 0, + "nutriscore_applicable" : 1, + "nutriscore_computed" : 0 + }, + "2023" : { + "category_available" : 1, + "data" : { + "energy" : null, + "fiber" : null, + "fruits_vegetables_legumes" : 58.3, + "is_beverage" : 0, + "is_cheese" : 0, + "is_fat_oil_nuts_seeds" : 0, + "is_red_meat_product" : 0, + "is_water" : 0, + "proteins" : null, + "salt" : null, + "saturated_fat" : null, + "sugars" : null + }, + "grade" : "unknown", + "nutrients_available" : 0, + "nutriscore_applicable" : 1, + "nutriscore_computed" : 0 + } + }, + "nutriscore_2021_tags" : [ + "unknown" + ], + "nutriscore_2023_tags" : [ + "unknown" + ], + "nutriscore_grade" : "unknown", + "nutriscore_tags" : [ + "unknown" + ], + "nutriscore_version" : "2021", + "nutrition_data_per" : "100g", + "nutrition_data_prepared_per" : "100g", + "nutrition_grade_fr" : "unknown", + "nutrition_grades" : "unknown", + "nutrition_grades_tags" : [ + "unknown" + ], + "nutrition_score_beverage" : 0, + "nutrition_score_debug" : "missing energy_100g - missing fat_100g - missing saturated-fat_100g - missing sugars_100g - missing sodium_100g - missing proteins_100g", + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients" : 1, + "nutrition_score_warning_fruits_vegetables_legumes_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients" : 1, + "nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value" : 58.3333333333333, + "nutrition_score_warning_no_fiber" : 1, + "origin" : "france", + "origin_en" : "france", + "other_nutritional_substances_tags" : [], + "packaging_materials_tags" : [ + "en:glass", + "en:plastic", + "en:steel", + "en:wood" + ], + "packaging_recycling_tags" : [ + "en:discard", + "en:recycle", + "en:reuse" + ], + "packaging_shapes_tags" : [ + "en:bottle", + "en:box", + "en:film", + "en:lid" + ], + "packaging_text" : "1 wooden box to recycle, 6 25cl glass bottles to reuse, 3 steel lids to recycle, 1 plastic film to discard", + "packaging_text_en" : "1 wooden box to recycle, 6 25cl glass bottles to reuse, 3 steel lids to recycle, 1 plastic film to discard", + "packagings" : [ + { + "material" : { + "id" : "en:wood" + }, + "number_of_units" : 1, + "recycling" : { + "id" : "en:recycle" + }, + "shape" : { + "id" : "en:box" + } + }, + { + "material" : { + "id" : "en:glass" + }, + "number_of_units" : 6, + "quantity_per_unit" : "25cl", + "quantity_per_unit_unit" : "cl", + "quantity_per_unit_value" : 25, + "recycling" : { + "id" : "en:reuse" + }, + "shape" : { + "id" : "en:bottle" + } + }, + { + "material" : { + "id" : "en:steel" + }, + "number_of_units" : 3, + "recycling" : { + "id" : "en:recycle" + }, + "shape" : { + "id" : "en:lid" + } + }, + { + "material" : { + "id" : "en:plastic" + }, + "number_of_units" : 1, + "recycling" : { + "id" : "en:discard" + }, + "shape" : { + "id" : "en:film" + } + } + ], + "packagings_materials" : { + "all" : {}, + "en:glass" : {}, + "en:metal" : {}, + "en:plastic" : {}, + "en:unknown" : {} + }, + "packagings_n" : 4, + "photographers_tags" : [], + "pnns_groups_1" : "Sugary snacks", + "pnns_groups_1_tags" : [ + "sugary-snacks", + "known" + ], + "pnns_groups_2" : "Biscuits and cakes", + "pnns_groups_2_tags" : [ + "biscuits-and-cakes", + "known" + ], + "popularity_key" : 0, + "product_name" : "Some product", + "product_name_en" : "Some product", + "product_quantity" : "100", + "product_quantity_unit" : "g", + "product_type" : "food", + "quantity" : "100 g", + "removed_countries_tags" : [], + "rev" : 1, + "serving_quantity" : "10", + "serving_quantity_unit" : "g", + "serving_size" : "10 g", + "states" : "en:to-be-completed, en:nutrition-facts-to-be-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-to-be-completed, en:packaging-to-be-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-uploaded", + "states_hierarchy" : [ + "en:to-be-completed", + "en:nutrition-facts-to-be-completed", + "en:ingredients-completed", + "en:expiration-date-to-be-completed", + "en:packaging-code-to-be-completed", + "en:characteristics-to-be-completed", + "en:origins-to-be-completed", + "en:categories-completed", + "en:brands-to-be-completed", + "en:packaging-to-be-completed", + "en:quantity-completed", + "en:product-name-completed", + "en:photos-to-be-uploaded" + ], + "states_tags" : [ + "en:to-be-completed", + "en:nutrition-facts-to-be-completed", + "en:ingredients-completed", + "en:expiration-date-to-be-completed", + "en:packaging-code-to-be-completed", + "en:characteristics-to-be-completed", + "en:origins-to-be-completed", + "en:categories-completed", + "en:brands-to-be-completed", + "en:packaging-to-be-completed", + "en:quantity-completed", + "en:product-name-completed", + "en:photos-to-be-uploaded" + ], + "traces" : "", + "traces_from_ingredients" : "", + "traces_from_user" : "(en) ", + "traces_hierarchy" : [], + "traces_tags" : [], + "unknown_ingredients_n" : 0, + "unknown_nutrients_tags" : [], + "vitamins_tags" : [], + "weighers_tags" : [] + }, + "result" : { + "id" : "product_found", + "lc_name" : "Product found", + "name" : "Product found" + }, + "status" : "success", + "warnings" : [] +} diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json index 74ef5c1ac63c7..b7ba8e5dcd1db 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json @@ -119,7 +119,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json index 74ef5c1ac63c7..b7ba8e5dcd1db 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json @@ -119,7 +119,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json index b7ba8e5dcd1db..74ef5c1ac63c7 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json @@ -119,7 +119,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : "0", + "epi_score" : 0, "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json index 74ef5c1ac63c7..b7ba8e5dcd1db 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json @@ -119,7 +119,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json index 0500a9d70e219..bd9fd1445161a 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json @@ -119,7 +119,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json index 6e988a00da1aa..e23d21a4e4134 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -765,7 +765,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3-1.json b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3-1.json new file mode 100644 index 0000000000000..72a4062643328 --- /dev/null +++ b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3-1.json @@ -0,0 +1,12 @@ +{ + "code" : "4260392550101", + "errors" : [], + "product" : {}, + "result" : { + "id" : "product_found", + "lc_name" : "Product found", + "name" : "Product found" + }, + "status" : "success", + "warnings" : [] +} diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json new file mode 100644 index 0000000000000..72a4062643328 --- /dev/null +++ b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json @@ -0,0 +1,12 @@ +{ + "code" : "4260392550101", + "errors" : [], + "product" : {}, + "result" : { + "id" : "product_found", + "lc_name" : "Product found", + "name" : "Product found" + }, + "status" : "success", + "warnings" : [] +} diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json new file mode 100644 index 0000000000000..c39a46dd9235e --- /dev/null +++ b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json @@ -0,0 +1,450 @@ +{ + "code" : "4260392550101", + "errors" : [], + "product" : { + "environmental_score_data" : { + "adjustments" : { + "origins_of_ingredients" : { + "aggregated_origins" : [ + { + "epi_score" : "0", + "origin" : "en:unknown", + "percent" : 100, + "transportation_score" : 0 + } + ], + "epi_score" : 0, + "epi_value" : -5, + "origins_from_categories" : [ + "en:unknown" + ], + "origins_from_origins_field" : [ + "en:unknown" + ], + "transportation_score" : 0, + "transportation_scores" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "transportation_value" : 0, + "transportation_values" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "value" : -5, + "values" : { + "ad" : -5, + "al" : -5, + "at" : -5, + "ax" : -5, + "ba" : -5, + "be" : -5, + "bg" : -5, + "ch" : -5, + "cy" : -5, + "cz" : -5, + "de" : -5, + "dk" : -5, + "dz" : -5, + "ee" : -5, + "eg" : -5, + "es" : -5, + "fi" : -5, + "fo" : -5, + "fr" : -5, + "gg" : -5, + "gi" : -5, + "gr" : -5, + "hr" : -5, + "hu" : -5, + "ie" : -5, + "il" : -5, + "im" : -5, + "is" : -5, + "it" : -5, + "je" : -5, + "lb" : -5, + "li" : -5, + "lt" : -5, + "lu" : -5, + "lv" : -5, + "ly" : -5, + "ma" : -5, + "mc" : -5, + "md" : -5, + "me" : -5, + "mk" : -5, + "mt" : -5, + "nl" : -5, + "no" : -5, + "pl" : -5, + "ps" : -5, + "pt" : -5, + "ro" : -5, + "rs" : -5, + "se" : -5, + "si" : -5, + "sj" : -5, + "sk" : -5, + "sm" : -5, + "sy" : -5, + "tn" : -5, + "tr" : -5, + "ua" : -5, + "uk" : -5, + "us" : -5, + "va" : -5, + "world" : -5, + "xk" : -5 + }, + "warning" : "origins_are_100_percent_unknown" + }, + "packaging" : { + "non_recyclable_and_non_biodegradable_materials" : 0, + "packagings" : [ + { + "environmental_score_material_score" : 50, + "environmental_score_shape_ratio" : 1, + "material" : "en:wood", + "number_of_units" : 1, + "recycling" : "en:recycle", + "shape" : "en:box" + }, + { + "environmental_score_material_score" : 81, + "environmental_score_shape_ratio" : 1, + "material" : "en:glass", + "number_of_units" : 6, + "quantity_per_unit" : "25cl", + "quantity_per_unit_unit" : "cl", + "quantity_per_unit_value" : 25, + "recycling" : "en:reuse", + "shape" : "en:bottle" + }, + { + "environmental_score_material_score" : 76, + "environmental_score_shape_ratio" : 0.2, + "material" : "en:steel", + "number_of_units" : 3, + "recycling" : "en:recycle", + "shape" : "en:lid" + }, + { + "environmental_score_material_score" : 0, + "environmental_score_shape_ratio" : 0.1, + "material" : "en:plastic", + "non_recyclable_and_non_biodegradable" : "maybe", + "number_of_units" : 1, + "recycling" : "en:discard", + "shape" : "en:film" + } + ], + "score" : 16.2, + "value" : -8 + }, + "production_system" : { + "labels" : [], + "value" : 0, + "warning" : "no_label" + }, + "threatened_species" : { + "ingredient" : "en:palm-oil", + "value" : -10 + } + }, + "agribalyse" : { + "agribalyse_proxy_food_code" : "24000", + "co2_agriculture" : 2.3635185, + "co2_consumption" : 0, + "co2_distribution" : 0.019437894, + "co2_packaging" : 0.10986902, + "co2_processing" : 0.22831584, + "co2_total" : 2.856230424, + "co2_transportation" : 0.13508917, + "code" : "24000", + "dqr" : "2.14", + "ef_agriculture" : 0.27654213, + "ef_consumption" : 0, + "ef_distribution" : 0.0047895045, + "ef_packaging" : 0.01090994, + "ef_processing" : 0.04151582, + "ef_total" : 0.3448030585, + "ef_transportation" : 0.011045664, + "is_beverage" : 0, + "name_en" : "Biscuit (cookie)", + "name_fr" : "Biscuit sec, sans précision", + "score" : 70, + "version" : "3.1.1" + }, + "grade" : "c", + "grades" : { + "ad" : "c", + "al" : "c", + "at" : "c", + "ax" : "c", + "ba" : "c", + "be" : "c", + "bg" : "c", + "ch" : "c", + "cy" : "c", + "cz" : "c", + "de" : "c", + "dk" : "c", + "dz" : "c", + "ee" : "c", + "eg" : "c", + "es" : "c", + "fi" : "c", + "fo" : "c", + "fr" : "c", + "gg" : "c", + "gi" : "c", + "gr" : "c", + "hr" : "c", + "hu" : "c", + "ie" : "c", + "il" : "c", + "im" : "c", + "is" : "c", + "it" : "c", + "je" : "c", + "lb" : "c", + "li" : "c", + "lt" : "c", + "lu" : "c", + "lv" : "c", + "ly" : "c", + "ma" : "c", + "mc" : "c", + "md" : "c", + "me" : "c", + "mk" : "c", + "mt" : "c", + "nl" : "c", + "no" : "c", + "pl" : "c", + "ps" : "c", + "pt" : "c", + "ro" : "c", + "rs" : "c", + "se" : "c", + "si" : "c", + "sj" : "c", + "sk" : "c", + "sm" : "c", + "sy" : "c", + "tn" : "c", + "tr" : "c", + "ua" : "c", + "uk" : "c", + "us" : "c", + "va" : "c", + "world" : "c", + "xk" : "c" + }, + "missing" : { + "labels" : 1, + "origins" : 1 + }, + "missing_data_warning" : 1, + "score" : 47, + "scores" : { + "ad" : 47, + "al" : 47, + "at" : 47, + "ax" : 47, + "ba" : 47, + "be" : 47, + "bg" : 47, + "ch" : 47, + "cy" : 47, + "cz" : 47, + "de" : 47, + "dk" : 47, + "dz" : 47, + "ee" : 47, + "eg" : 47, + "es" : 47, + "fi" : 47, + "fo" : 47, + "fr" : 47, + "gg" : 47, + "gi" : 47, + "gr" : 47, + "hr" : 47, + "hu" : 47, + "ie" : 47, + "il" : 47, + "im" : 47, + "is" : 47, + "it" : 47, + "je" : 47, + "lb" : 47, + "li" : 47, + "lt" : 47, + "lu" : 47, + "lv" : 47, + "ly" : 47, + "ma" : 47, + "mc" : 47, + "md" : 47, + "me" : 47, + "mk" : 47, + "mt" : 47, + "nl" : 47, + "no" : 47, + "pl" : 47, + "ps" : 47, + "pt" : 47, + "ro" : 47, + "rs" : 47, + "se" : 47, + "si" : 47, + "sj" : 47, + "sk" : 47, + "sm" : 47, + "sy" : 47, + "tn" : 47, + "tr" : 47, + "ua" : 47, + "uk" : 47, + "us" : 47, + "va" : 47, + "world" : 47, + "xk" : 47 + }, + "status" : "known" + }, + "environmental_score_grade" : "c", + "environmental_score_score" : 47 + }, + "result" : { + "id" : "product_found", + "lc_name" : "Product found", + "name" : "Product found" + }, + "status" : "success", + "warnings" : [] +} diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json new file mode 100644 index 0000000000000..c39a46dd9235e --- /dev/null +++ b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json @@ -0,0 +1,450 @@ +{ + "code" : "4260392550101", + "errors" : [], + "product" : { + "environmental_score_data" : { + "adjustments" : { + "origins_of_ingredients" : { + "aggregated_origins" : [ + { + "epi_score" : "0", + "origin" : "en:unknown", + "percent" : 100, + "transportation_score" : 0 + } + ], + "epi_score" : 0, + "epi_value" : -5, + "origins_from_categories" : [ + "en:unknown" + ], + "origins_from_origins_field" : [ + "en:unknown" + ], + "transportation_score" : 0, + "transportation_scores" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "transportation_value" : 0, + "transportation_values" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "value" : -5, + "values" : { + "ad" : -5, + "al" : -5, + "at" : -5, + "ax" : -5, + "ba" : -5, + "be" : -5, + "bg" : -5, + "ch" : -5, + "cy" : -5, + "cz" : -5, + "de" : -5, + "dk" : -5, + "dz" : -5, + "ee" : -5, + "eg" : -5, + "es" : -5, + "fi" : -5, + "fo" : -5, + "fr" : -5, + "gg" : -5, + "gi" : -5, + "gr" : -5, + "hr" : -5, + "hu" : -5, + "ie" : -5, + "il" : -5, + "im" : -5, + "is" : -5, + "it" : -5, + "je" : -5, + "lb" : -5, + "li" : -5, + "lt" : -5, + "lu" : -5, + "lv" : -5, + "ly" : -5, + "ma" : -5, + "mc" : -5, + "md" : -5, + "me" : -5, + "mk" : -5, + "mt" : -5, + "nl" : -5, + "no" : -5, + "pl" : -5, + "ps" : -5, + "pt" : -5, + "ro" : -5, + "rs" : -5, + "se" : -5, + "si" : -5, + "sj" : -5, + "sk" : -5, + "sm" : -5, + "sy" : -5, + "tn" : -5, + "tr" : -5, + "ua" : -5, + "uk" : -5, + "us" : -5, + "va" : -5, + "world" : -5, + "xk" : -5 + }, + "warning" : "origins_are_100_percent_unknown" + }, + "packaging" : { + "non_recyclable_and_non_biodegradable_materials" : 0, + "packagings" : [ + { + "environmental_score_material_score" : 50, + "environmental_score_shape_ratio" : 1, + "material" : "en:wood", + "number_of_units" : 1, + "recycling" : "en:recycle", + "shape" : "en:box" + }, + { + "environmental_score_material_score" : 81, + "environmental_score_shape_ratio" : 1, + "material" : "en:glass", + "number_of_units" : 6, + "quantity_per_unit" : "25cl", + "quantity_per_unit_unit" : "cl", + "quantity_per_unit_value" : 25, + "recycling" : "en:reuse", + "shape" : "en:bottle" + }, + { + "environmental_score_material_score" : 76, + "environmental_score_shape_ratio" : 0.2, + "material" : "en:steel", + "number_of_units" : 3, + "recycling" : "en:recycle", + "shape" : "en:lid" + }, + { + "environmental_score_material_score" : 0, + "environmental_score_shape_ratio" : 0.1, + "material" : "en:plastic", + "non_recyclable_and_non_biodegradable" : "maybe", + "number_of_units" : 1, + "recycling" : "en:discard", + "shape" : "en:film" + } + ], + "score" : 16.2, + "value" : -8 + }, + "production_system" : { + "labels" : [], + "value" : 0, + "warning" : "no_label" + }, + "threatened_species" : { + "ingredient" : "en:palm-oil", + "value" : -10 + } + }, + "agribalyse" : { + "agribalyse_proxy_food_code" : "24000", + "co2_agriculture" : 2.3635185, + "co2_consumption" : 0, + "co2_distribution" : 0.019437894, + "co2_packaging" : 0.10986902, + "co2_processing" : 0.22831584, + "co2_total" : 2.856230424, + "co2_transportation" : 0.13508917, + "code" : "24000", + "dqr" : "2.14", + "ef_agriculture" : 0.27654213, + "ef_consumption" : 0, + "ef_distribution" : 0.0047895045, + "ef_packaging" : 0.01090994, + "ef_processing" : 0.04151582, + "ef_total" : 0.3448030585, + "ef_transportation" : 0.011045664, + "is_beverage" : 0, + "name_en" : "Biscuit (cookie)", + "name_fr" : "Biscuit sec, sans précision", + "score" : 70, + "version" : "3.1.1" + }, + "grade" : "c", + "grades" : { + "ad" : "c", + "al" : "c", + "at" : "c", + "ax" : "c", + "ba" : "c", + "be" : "c", + "bg" : "c", + "ch" : "c", + "cy" : "c", + "cz" : "c", + "de" : "c", + "dk" : "c", + "dz" : "c", + "ee" : "c", + "eg" : "c", + "es" : "c", + "fi" : "c", + "fo" : "c", + "fr" : "c", + "gg" : "c", + "gi" : "c", + "gr" : "c", + "hr" : "c", + "hu" : "c", + "ie" : "c", + "il" : "c", + "im" : "c", + "is" : "c", + "it" : "c", + "je" : "c", + "lb" : "c", + "li" : "c", + "lt" : "c", + "lu" : "c", + "lv" : "c", + "ly" : "c", + "ma" : "c", + "mc" : "c", + "md" : "c", + "me" : "c", + "mk" : "c", + "mt" : "c", + "nl" : "c", + "no" : "c", + "pl" : "c", + "ps" : "c", + "pt" : "c", + "ro" : "c", + "rs" : "c", + "se" : "c", + "si" : "c", + "sj" : "c", + "sk" : "c", + "sm" : "c", + "sy" : "c", + "tn" : "c", + "tr" : "c", + "ua" : "c", + "uk" : "c", + "us" : "c", + "va" : "c", + "world" : "c", + "xk" : "c" + }, + "missing" : { + "labels" : 1, + "origins" : 1 + }, + "missing_data_warning" : 1, + "score" : 47, + "scores" : { + "ad" : 47, + "al" : 47, + "at" : 47, + "ax" : 47, + "ba" : 47, + "be" : 47, + "bg" : 47, + "ch" : 47, + "cy" : 47, + "cz" : 47, + "de" : 47, + "dk" : 47, + "dz" : 47, + "ee" : 47, + "eg" : 47, + "es" : 47, + "fi" : 47, + "fo" : 47, + "fr" : 47, + "gg" : 47, + "gi" : 47, + "gr" : 47, + "hr" : 47, + "hu" : 47, + "ie" : 47, + "il" : 47, + "im" : 47, + "is" : 47, + "it" : 47, + "je" : 47, + "lb" : 47, + "li" : 47, + "lt" : 47, + "lu" : 47, + "lv" : 47, + "ly" : 47, + "ma" : 47, + "mc" : 47, + "md" : 47, + "me" : 47, + "mk" : 47, + "mt" : 47, + "nl" : 47, + "no" : 47, + "pl" : 47, + "ps" : 47, + "pt" : 47, + "ro" : 47, + "rs" : 47, + "se" : 47, + "si" : 47, + "sj" : 47, + "sk" : 47, + "sm" : 47, + "sy" : 47, + "tn" : 47, + "tr" : 47, + "ua" : 47, + "uk" : 47, + "us" : 47, + "va" : 47, + "world" : 47, + "xk" : 47 + }, + "status" : "known" + }, + "environmental_score_grade" : "c", + "environmental_score_score" : 47 + }, + "result" : { + "id" : "product_found", + "lc_name" : "Product found", + "name" : "Product found" + }, + "status" : "success", + "warnings" : [] +} From 513d72402e71775e030df5f47a4a8229947e4ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Tue, 17 Dec 2024 13:50:34 +0100 Subject: [PATCH 10/15] fix for decimal versions like v3.1 --- lib/ProductOpener/Routing.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ProductOpener/Routing.pm b/lib/ProductOpener/Routing.pm index f53f91884110f..77e132387632e 100644 --- a/lib/ProductOpener/Routing.pm +++ b/lib/ProductOpener/Routing.pm @@ -292,8 +292,8 @@ sub org_route($request_ref) { # api/v0/search sub api_route($request_ref) { my @components = @{$request_ref->{components}}; - my $api = $components[1]; # v0 - my $api_version = $api =~ /v(\d+)/ ? $1 : 0; + my $api = $components[1]; # v0, v3.1 + my $api_version = $api =~ /v(\d+(\.\d+)?)/ ? $1 : 0; my $api_action = $components[2]; # product # If the api_action is different than "search", check if it is the local path for "product" From 22144aa200861256bd3dd7adf1d7046a37d196de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Tue, 17 Dec 2024 13:51:05 +0100 Subject: [PATCH 11/15] rename environmental_score to ecoscore for version < 3.1 --- lib/ProductOpener/API.pm | 10 ++++++++++ tests/integration/api_v3_product_read.t | 7 +++++++ .../get-existing-product-gs1-ai-data-str.json | 16 ++++++++-------- .../get-existing-product-gs1-caret.json | 16 ++++++++-------- .../get-existing-product-gs1-data-uri.json | 16 ++++++++-------- .../get-existing-product-gs1-fnc1.json | 16 ++++++++-------- .../get-existing-product-gs1-gs.json | 16 ++++++++-------- .../get-existing-product-with-leading-zero.json | 16 ++++++++-------- .../get-existing-product.json | 16 ++++++++-------- .../get-fields-all-knowledge-panels.json | 16 ++++++++-------- .../api_v3_product_read/get-fields-all.json | 16 ++++++++-------- ...ds-attribute-groups-all-knowledge-panels.json | 16 ++++++++-------- ...ecific-fields-environmental-score-api-v3.json | 6 +++--- 13 files changed, 100 insertions(+), 83 deletions(-) diff --git a/lib/ProductOpener/API.pm b/lib/ProductOpener/API.pm index 907a069c2a3d9..c23b96fa193d4 100644 --- a/lib/ProductOpener/API.pm +++ b/lib/ProductOpener/API.pm @@ -654,6 +654,13 @@ The response schema can change between API versions. This function transforms th sub api_compatibility_for_product ($product_ref, $api_version) { + $log->debug("api_compatibility_for_product - start", {api_version => $api_version}) if $log->is_debug(); + + # no requested version, return the product as is + if (not defined $api_version) { + return $product_ref; + } + # API 3.1 - 2024/12/18 - ecoscore* fields have been renamed to environmental_score* if ($api_version < 3.1) { foreach my $subfield (qw/data grade score tags/) { @@ -900,6 +907,9 @@ sub customize_response_for_product ($request_ref, $product_ref, $fields_comma_se # TODO: it would be great to return errors when the caller requests fields that are invalid (e.g. typos) } + # Before returning the product, we need to make sure that the fields are compatible with the requested API version + api_compatibility_for_product ($customized_product_ref, $request_ref->{api_version}); + return $customized_product_ref; } diff --git a/tests/integration/api_v3_product_read.t b/tests/integration/api_v3_product_read.t index f77cb2f55e09f..b05dccee683ca 100644 --- a/tests/integration/api_v3_product_read.t +++ b/tests/integration/api_v3_product_read.t @@ -260,6 +260,13 @@ my $tests_ref = [ query_string => '?fields=code,product_name&user_id=tests&password=bad_password', expected_status_code => 403, }, + { + test_case => 'get-specific-fields-environmental-score-api-v3-1', + method => 'GET', + path => '/api/v3.1/product/4260392550101', + query_string => '?fields=environmental_score_score,environmental_score_grade,environmental_score_data', + expected_status_code => 200, + }, ]; diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json index b7ba8e5dcd1db..12a5cfe85ece0 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json index b7ba8e5dcd1db..12a5cfe85ece0 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json index b7ba8e5dcd1db..12a5cfe85ece0 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-data-uri.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json index 74ef5c1ac63c7..504ee816d7385 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-fnc1.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json index b7ba8e5dcd1db..12a5cfe85ece0 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-gs.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json index 0285f610155bb..919b074ab7158 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json index bd9fd1445161a..c6c4dc7f9b23d 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json index 5bf384e3434a7..04d286e41fd03 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all-knowledge-panels.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json index 0500a9d70e219..fd35e611bb11f 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-all.json @@ -110,11 +110,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -549,11 +545,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json index e23d21a4e4134..f525c9a1893eb 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -756,11 +756,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -1195,11 +1191,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json index c39a46dd9235e..0e9fe80ee3108 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3.json @@ -2,7 +2,7 @@ "code" : "4260392550101", "errors" : [], "product" : { - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -437,8 +437,8 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47 + "ecoscore_grade" : "c", + "ecoscore_score" : 47 }, "result" : { "id" : "product_found", From 9e0cbe7030a52e5b438ac2dbf427eed27378fff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Tue, 17 Dec 2024 13:54:33 +0100 Subject: [PATCH 12/15] rename environmental_score to ecoscore for version < 3.1 --- lib/ProductOpener/API.pm | 5 +- tests/integration/api_v3_product_read.t | 2 +- .../get-specific-fields-ecoscore-api-v3.json | 440 +++++++++++++++++- 3 files changed, 444 insertions(+), 3 deletions(-) diff --git a/lib/ProductOpener/API.pm b/lib/ProductOpener/API.pm index c23b96fa193d4..947df3e0ed6e6 100644 --- a/lib/ProductOpener/API.pm +++ b/lib/ProductOpener/API.pm @@ -752,6 +752,9 @@ sub customize_response_for_product ($request_ref, $product_ref, $fields_comma_se # lets compute each requested field foreach my $field (@fields) { + # Compatibility with older API versions + $field = api_compatibility_for_field($field, $request_ref->{api_version}); + if ($field eq 'all') { # Return all fields of the product, with processing that depends on the API version used # e.g. in API v3, the "packagings" structure is more verbose than the stored version @@ -908,7 +911,7 @@ sub customize_response_for_product ($request_ref, $product_ref, $fields_comma_se } # Before returning the product, we need to make sure that the fields are compatible with the requested API version - api_compatibility_for_product ($customized_product_ref, $request_ref->{api_version}); + api_compatibility_for_product($customized_product_ref, $request_ref->{api_version}); return $customized_product_ref; } diff --git a/tests/integration/api_v3_product_read.t b/tests/integration/api_v3_product_read.t index b05dccee683ca..c0d664aaa4608 100644 --- a/tests/integration/api_v3_product_read.t +++ b/tests/integration/api_v3_product_read.t @@ -260,7 +260,7 @@ my $tests_ref = [ query_string => '?fields=code,product_name&user_id=tests&password=bad_password', expected_status_code => 403, }, - { + { test_case => 'get-specific-fields-environmental-score-api-v3-1', method => 'GET', path => '/api/v3.1/product/4260392550101', diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json index 72a4062643328..0e9fe80ee3108 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-ecoscore-api-v3.json @@ -1,7 +1,445 @@ { "code" : "4260392550101", "errors" : [], - "product" : {}, + "product" : { + "ecoscore_data" : { + "adjustments" : { + "origins_of_ingredients" : { + "aggregated_origins" : [ + { + "epi_score" : "0", + "origin" : "en:unknown", + "percent" : 100, + "transportation_score" : 0 + } + ], + "epi_score" : 0, + "epi_value" : -5, + "origins_from_categories" : [ + "en:unknown" + ], + "origins_from_origins_field" : [ + "en:unknown" + ], + "transportation_score" : 0, + "transportation_scores" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "transportation_value" : 0, + "transportation_values" : { + "ad" : 0, + "al" : 0, + "at" : 0, + "ax" : 0, + "ba" : 0, + "be" : 0, + "bg" : 0, + "ch" : 0, + "cy" : 0, + "cz" : 0, + "de" : 0, + "dk" : 0, + "dz" : 0, + "ee" : 0, + "eg" : 0, + "es" : 0, + "fi" : 0, + "fo" : 0, + "fr" : 0, + "gg" : 0, + "gi" : 0, + "gr" : 0, + "hr" : 0, + "hu" : 0, + "ie" : 0, + "il" : 0, + "im" : 0, + "is" : 0, + "it" : 0, + "je" : 0, + "lb" : 0, + "li" : 0, + "lt" : 0, + "lu" : 0, + "lv" : 0, + "ly" : 0, + "ma" : 0, + "mc" : 0, + "md" : 0, + "me" : 0, + "mk" : 0, + "mt" : 0, + "nl" : 0, + "no" : 0, + "pl" : 0, + "ps" : 0, + "pt" : 0, + "ro" : 0, + "rs" : 0, + "se" : 0, + "si" : 0, + "sj" : 0, + "sk" : 0, + "sm" : 0, + "sy" : 0, + "tn" : 0, + "tr" : 0, + "ua" : 0, + "uk" : 0, + "us" : 0, + "va" : 0, + "world" : 0, + "xk" : 0 + }, + "value" : -5, + "values" : { + "ad" : -5, + "al" : -5, + "at" : -5, + "ax" : -5, + "ba" : -5, + "be" : -5, + "bg" : -5, + "ch" : -5, + "cy" : -5, + "cz" : -5, + "de" : -5, + "dk" : -5, + "dz" : -5, + "ee" : -5, + "eg" : -5, + "es" : -5, + "fi" : -5, + "fo" : -5, + "fr" : -5, + "gg" : -5, + "gi" : -5, + "gr" : -5, + "hr" : -5, + "hu" : -5, + "ie" : -5, + "il" : -5, + "im" : -5, + "is" : -5, + "it" : -5, + "je" : -5, + "lb" : -5, + "li" : -5, + "lt" : -5, + "lu" : -5, + "lv" : -5, + "ly" : -5, + "ma" : -5, + "mc" : -5, + "md" : -5, + "me" : -5, + "mk" : -5, + "mt" : -5, + "nl" : -5, + "no" : -5, + "pl" : -5, + "ps" : -5, + "pt" : -5, + "ro" : -5, + "rs" : -5, + "se" : -5, + "si" : -5, + "sj" : -5, + "sk" : -5, + "sm" : -5, + "sy" : -5, + "tn" : -5, + "tr" : -5, + "ua" : -5, + "uk" : -5, + "us" : -5, + "va" : -5, + "world" : -5, + "xk" : -5 + }, + "warning" : "origins_are_100_percent_unknown" + }, + "packaging" : { + "non_recyclable_and_non_biodegradable_materials" : 0, + "packagings" : [ + { + "environmental_score_material_score" : 50, + "environmental_score_shape_ratio" : 1, + "material" : "en:wood", + "number_of_units" : 1, + "recycling" : "en:recycle", + "shape" : "en:box" + }, + { + "environmental_score_material_score" : 81, + "environmental_score_shape_ratio" : 1, + "material" : "en:glass", + "number_of_units" : 6, + "quantity_per_unit" : "25cl", + "quantity_per_unit_unit" : "cl", + "quantity_per_unit_value" : 25, + "recycling" : "en:reuse", + "shape" : "en:bottle" + }, + { + "environmental_score_material_score" : 76, + "environmental_score_shape_ratio" : 0.2, + "material" : "en:steel", + "number_of_units" : 3, + "recycling" : "en:recycle", + "shape" : "en:lid" + }, + { + "environmental_score_material_score" : 0, + "environmental_score_shape_ratio" : 0.1, + "material" : "en:plastic", + "non_recyclable_and_non_biodegradable" : "maybe", + "number_of_units" : 1, + "recycling" : "en:discard", + "shape" : "en:film" + } + ], + "score" : 16.2, + "value" : -8 + }, + "production_system" : { + "labels" : [], + "value" : 0, + "warning" : "no_label" + }, + "threatened_species" : { + "ingredient" : "en:palm-oil", + "value" : -10 + } + }, + "agribalyse" : { + "agribalyse_proxy_food_code" : "24000", + "co2_agriculture" : 2.3635185, + "co2_consumption" : 0, + "co2_distribution" : 0.019437894, + "co2_packaging" : 0.10986902, + "co2_processing" : 0.22831584, + "co2_total" : 2.856230424, + "co2_transportation" : 0.13508917, + "code" : "24000", + "dqr" : "2.14", + "ef_agriculture" : 0.27654213, + "ef_consumption" : 0, + "ef_distribution" : 0.0047895045, + "ef_packaging" : 0.01090994, + "ef_processing" : 0.04151582, + "ef_total" : 0.3448030585, + "ef_transportation" : 0.011045664, + "is_beverage" : 0, + "name_en" : "Biscuit (cookie)", + "name_fr" : "Biscuit sec, sans précision", + "score" : 70, + "version" : "3.1.1" + }, + "grade" : "c", + "grades" : { + "ad" : "c", + "al" : "c", + "at" : "c", + "ax" : "c", + "ba" : "c", + "be" : "c", + "bg" : "c", + "ch" : "c", + "cy" : "c", + "cz" : "c", + "de" : "c", + "dk" : "c", + "dz" : "c", + "ee" : "c", + "eg" : "c", + "es" : "c", + "fi" : "c", + "fo" : "c", + "fr" : "c", + "gg" : "c", + "gi" : "c", + "gr" : "c", + "hr" : "c", + "hu" : "c", + "ie" : "c", + "il" : "c", + "im" : "c", + "is" : "c", + "it" : "c", + "je" : "c", + "lb" : "c", + "li" : "c", + "lt" : "c", + "lu" : "c", + "lv" : "c", + "ly" : "c", + "ma" : "c", + "mc" : "c", + "md" : "c", + "me" : "c", + "mk" : "c", + "mt" : "c", + "nl" : "c", + "no" : "c", + "pl" : "c", + "ps" : "c", + "pt" : "c", + "ro" : "c", + "rs" : "c", + "se" : "c", + "si" : "c", + "sj" : "c", + "sk" : "c", + "sm" : "c", + "sy" : "c", + "tn" : "c", + "tr" : "c", + "ua" : "c", + "uk" : "c", + "us" : "c", + "va" : "c", + "world" : "c", + "xk" : "c" + }, + "missing" : { + "labels" : 1, + "origins" : 1 + }, + "missing_data_warning" : 1, + "score" : 47, + "scores" : { + "ad" : 47, + "al" : 47, + "at" : 47, + "ax" : 47, + "ba" : 47, + "be" : 47, + "bg" : 47, + "ch" : 47, + "cy" : 47, + "cz" : 47, + "de" : 47, + "dk" : 47, + "dz" : 47, + "ee" : 47, + "eg" : 47, + "es" : 47, + "fi" : 47, + "fo" : 47, + "fr" : 47, + "gg" : 47, + "gi" : 47, + "gr" : 47, + "hr" : 47, + "hu" : 47, + "ie" : 47, + "il" : 47, + "im" : 47, + "is" : 47, + "it" : 47, + "je" : 47, + "lb" : 47, + "li" : 47, + "lt" : 47, + "lu" : 47, + "lv" : 47, + "ly" : 47, + "ma" : 47, + "mc" : 47, + "md" : 47, + "me" : 47, + "mk" : 47, + "mt" : 47, + "nl" : 47, + "no" : 47, + "pl" : 47, + "ps" : 47, + "pt" : 47, + "ro" : 47, + "rs" : 47, + "se" : 47, + "si" : 47, + "sj" : 47, + "sk" : 47, + "sm" : 47, + "sy" : 47, + "tn" : 47, + "tr" : 47, + "ua" : 47, + "uk" : 47, + "us" : 47, + "va" : 47, + "world" : 47, + "xk" : 47 + }, + "status" : "known" + }, + "ecoscore_grade" : "c", + "ecoscore_score" : 47 + }, "result" : { "id" : "product_found", "lc_name" : "Product found", From 8f41c8d79c00e111b1e0f07bfa1a27ac9e1e44b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Tue, 17 Dec 2024 14:59:52 +0100 Subject: [PATCH 13/15] update tests --- .../get-existing-product.json | 16 ++-- .../get-fields-all-knowledge-panels.json | 16 ++-- .../api_v2_product_read/get-fields-all.json | 16 ++-- ...attribute-groups-all-knowledge-panels.json | 16 ++-- .../get-product-auth-good-password.json | 16 ++-- ...uct-ingredients-text-without-language.json | 14 +-- .../api_v2_product_write/get-product.json | 16 ++-- .../get-existing-product-gs1-ai-data-str.json | 2 +- ...et-existing-product-with-leading-zero.json | 2 +- .../get-existing-product.json | 2 +- ...attribute-groups-all-knowledge-panels.json | 2 +- ...c-fields-environmental-score-api-v3-1.json | 2 +- .../patch-request-fields-all.json | 16 ++-- ...quest-fields-environmental_score-data.json | 2 +- .../get-product-with-new-code.json | 16 ++-- .../search-all-products.json | 14 +-- ...ed-protected-product-api-v2-moderator.json | 16 ++-- .../get-edited-protected-product-api-v2.json | 16 ++-- ...-protected-product-web-form-moderator.json | 16 ++-- ...get-edited-protected-product-web-form.json | 16 ++-- ...get-edited-unprotected-product-api-v2.json | 14 +-- ...t-edited-unprotected-product-web-form.json | 14 +-- .../search_v1/search-no-filter.json | 88 +++++++++---------- 23 files changed, 174 insertions(+), 174 deletions(-) diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json b/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json index 00f384e52a552..314322870914d 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json @@ -116,11 +116,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -555,11 +551,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json index 4971b583539c6..193e5c16a57bc 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json @@ -116,11 +116,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -555,11 +551,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json index 08dc88c89a09b..19f1265302285 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all.json @@ -116,11 +116,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -555,11 +551,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json index 5cfa4c2d9305e..3cddfc96bb7c8 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -770,11 +770,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -1209,11 +1205,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "c", - "environmental_score_score" : 47, - "environmental_score_tags" : [ + "ecoscore_grade" : "c", + "ecoscore_score" : 47, + "ecoscore_tags" : [ "c" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v2_product_write/get-product-auth-good-password.json b/tests/integration/expected_test_results/api_v2_product_write/get-product-auth-good-password.json index f04cd9d81dd5c..31bcf011b6c34 100644 --- a/tests/integration/expected_test_results/api_v2_product_write/get-product-auth-good-password.json +++ b/tests/integration/expected_test_results/api_v2_product_write/get-product-auth-good-password.json @@ -106,11 +106,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-packaging-packaging-data-missing" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -505,11 +501,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "b", - "environmental_score_score" : 65, - "environmental_score_tags" : [ + "ecoscore_grade" : "b", + "ecoscore_score" : 65, + "ecoscore_tags" : [ "b" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json b/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json index dea9750a1723f..f8c04230658fd 100644 --- a/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json +++ b/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json @@ -92,11 +92,7 @@ "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "openfoodfacts-contributors" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -340,10 +336,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "openfoodfacts-contributors" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:processed-meat", "food_groups_tags" : [ "en:fish-meat-eggs", diff --git a/tests/integration/expected_test_results/api_v2_product_write/get-product.json b/tests/integration/expected_test_results/api_v2_product_write/get-product.json index 4b8a3496a5225..09fdec1d2b0f0 100644 --- a/tests/integration/expected_test_results/api_v2_product_write/get-product.json +++ b/tests/integration/expected_test_results/api_v2_product_write/get-product.json @@ -106,11 +106,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-packaging-packaging-data-missing" ], - "editors_tags" : [ - "openfoodfacts-contributors" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -505,11 +501,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "b", - "environmental_score_score" : 65, - "environmental_score_tags" : [ + "ecoscore_grade" : "b", + "ecoscore_score" : 65, + "ecoscore_tags" : [ "b" ], + "editors_tags" : [ + "openfoodfacts-contributors" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:biscuits-and-cakes", "food_groups_tags" : [ "en:sugary-snacks", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json index 12a5cfe85ece0..504ee816d7385 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-ai-data-str.json @@ -115,7 +115,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : "0", + "epi_score" : 0, "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json index 919b074ab7158..d3e8e0cdceb25 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-with-leading-zero.json @@ -115,7 +115,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : "0", + "epi_score" : 0, "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json index c6c4dc7f9b23d..fd35e611bb11f 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product.json @@ -115,7 +115,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : "0", + "epi_score" : 0, "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json index f525c9a1893eb..71299d31893b4 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -761,7 +761,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : "0", + "epi_score" : 0, "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json index c39a46dd9235e..27673c7eaeb95 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-specific-fields-environmental-score-api-v3-1.json @@ -7,7 +7,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : "0", + "epi_score" : 0, "origin" : "en:unknown", "percent" : 100, "transportation_score" : 0 diff --git a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-all.json b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-all.json index f3aee42389a4a..55fc9244e1c19 100644 --- a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-all.json +++ b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-all.json @@ -63,12 +63,7 @@ "en:environmental-score-production-system-no-label", "en:environmental-score-threatened-species-ingredients-missing" ], - "editors_tags" : [ - "openfoodfacts-contributors" - ], - "empty" : 1, - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -324,10 +319,15 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "openfoodfacts-contributors" + ], + "empty" : 1, + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "id" : "1234567890009", "informers_tags" : [ diff --git a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json index 47930cc9ea6e9..ef623be03f3b6 100644 --- a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json +++ b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-environmental_score-data.json @@ -2,7 +2,7 @@ "code" : "1234567890009", "errors" : [], "product" : { - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ diff --git a/tests/integration/expected_test_results/change_product_code_and_product_type/get-product-with-new-code.json b/tests/integration/expected_test_results/change_product_code_and_product_type/get-product-with-new-code.json index d4c4b3e1fac51..c2ebac72ff13d 100644 --- a/tests/integration/expected_test_results/change_product_code_and_product_type/get-product-with-new-code.json +++ b/tests/integration/expected_test_results/change_product_code_and_product_type/get-product-with-new-code.json @@ -78,12 +78,7 @@ "en:environmental-score-production-system-no-label", "en:environmental-score-threatened-species-ingredients-missing" ], - "editors_tags" : [ - "moderator", - "openfoodfacts-contributors" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -330,10 +325,15 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "moderator", + "openfoodfacts-contributors" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "id" : "1234567890100", "informers_tags" : [ diff --git a/tests/integration/expected_test_results/change_product_code_and_product_type/search-all-products.json b/tests/integration/expected_test_results/change_product_code_and_product_type/search-all-products.json index 6cdb709c28a3c..ab51c57faa682 100644 --- a/tests/integration/expected_test_results/change_product_code_and_product_type/search-all-products.json +++ b/tests/integration/expected_test_results/change_product_code_and_product_type/search-all-products.json @@ -80,11 +80,7 @@ "en:environmental-score-production-system-no-label", "en:environmental-score-threatened-species-ingredients-missing" ], - "editors_tags" : [ - "openfoodfacts-contributors" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -331,10 +327,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "openfoodfacts-contributors" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "id" : "1234567891234", "informers_tags" : [ diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json index fdec1259a7377..37df5b9f7b24b 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2-moderator.json @@ -100,12 +100,7 @@ "en:nutrition-value-under-0-001-g-salt", "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], - "editors_tags" : [ - "moderator", - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -389,10 +384,15 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "moderator", + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json index 3473798570aed..4be0d911bc399 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-api-v2.json @@ -101,12 +101,7 @@ "en:nutrition-value-under-0-001-g-salt", "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], - "editors_tags" : [ - "organization-owner", - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -390,10 +385,15 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "organization-owner", + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json index 7bfb152353974..1ce64f90c2f31 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form-moderator.json @@ -104,12 +104,7 @@ "en", "fr" ], - "editors_tags" : [ - "moderator", - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -393,10 +388,15 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "moderator", + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, diff --git a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json index 4f17d82d9d5d2..e9b688e9caa28 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-protected-product-web-form.json @@ -105,12 +105,7 @@ "en", "fr" ], - "editors_tags" : [ - "organization-owner", - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -394,10 +389,15 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "organization-owner", + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, diff --git a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json index e93c96d6da239..54059d79baf58 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-api-v2.json @@ -100,11 +100,7 @@ "en:nutrition-value-under-0-001-g-salt", "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -388,10 +384,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, diff --git a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json index 498140380e3b0..2b3b13ff4d332 100644 --- a/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json +++ b/tests/integration/expected_test_results/protected_product/get-edited-unprotected-product-web-form.json @@ -104,11 +104,7 @@ "en", "fr" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -392,10 +388,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.00145833333333333, diff --git a/tests/integration/expected_test_results/search_v1/search-no-filter.json b/tests/integration/expected_test_results/search_v1/search-no-filter.json index fb0c0ca90025f..570d334260bb1 100644 --- a/tests/integration/expected_test_results/search_v1/search-no-filter.json +++ b/tests/integration/expected_test_results/search_v1/search-no-filter.json @@ -90,11 +90,7 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -368,10 +364,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.0074375, @@ -1014,11 +1014,7 @@ "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -1262,10 +1258,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "generic_name" : "Tester", "generic_name_en" : "Tester", @@ -1643,11 +1643,7 @@ "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -1891,10 +1887,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "forest_footprint_data" : { "footprint_per_kg" : 0.0132222222222222, @@ -2471,11 +2471,7 @@ "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -2722,10 +2718,14 @@ "scores" : {}, "status" : "unknown" }, - "environmental_score_grade" : "unknown", - "environmental_score_tags" : [ + "ecoscore_grade" : "unknown", + "ecoscore_tags" : [ "unknown" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups_tags" : [], "generic_name_en" : "Tester", "id" : "0200000000039", @@ -3288,11 +3288,7 @@ "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -3687,11 +3683,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "e", - "environmental_score_score" : 25, - "environmental_score_tags" : [ + "ecoscore_grade" : "e", + "ecoscore_score" : 25, + "ecoscore_tags" : [ "e" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:breakfast-cereals", "food_groups_tags" : [ "en:cereals-and-potatoes", @@ -4263,11 +4263,7 @@ "en:environmental-score-packaging-packaging-data-missing", "en:environmental-score-production-system-no-label" ], - "editors_tags" : [ - "tests" - ], - "entry_dates_tags" : "--ignore--", - "environmental_score_data" : { + "ecoscore_data" : { "adjustments" : { "origins_of_ingredients" : { "aggregated_origins" : [ @@ -4662,11 +4658,15 @@ }, "status" : "known" }, - "environmental_score_grade" : "e", - "environmental_score_score" : 25, - "environmental_score_tags" : [ + "ecoscore_grade" : "e", + "ecoscore_score" : 25, + "ecoscore_tags" : [ "e" ], + "editors_tags" : [ + "tests" + ], + "entry_dates_tags" : "--ignore--", "food_groups" : "en:breakfast-cereals", "food_groups_tags" : [ "en:cereals-and-potatoes", From e6c4234e02af31beddb6e0b578f0d20c2230400b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Tue, 17 Dec 2024 17:45:40 +0100 Subject: [PATCH 14/15] update tests --- .../get-attribute-groups-fr.json | 2 +- .../get-attribute-groups.json | 2 +- ...attribute-groups-all-knowledge-panels.json | 4 +-- .../api_v2_product_read/get-fields-raw.json | 3 ++ .../get-attribute-groups-api-v3-1.json | 2 +- .../get-attribute-groups-fr.json | 2 +- .../get-attribute-groups.json | 2 +- .../get-existing-product-api-v3-1.json | 3 ++ ...attribute-groups-all-knowledge-panels.json | 4 +-- .../api_v3_product_read/get-fields-raw.json | 3 ++ ...ted-attribute-groups-knowledge-panels.json | 2 +- .../products/3560070167470.json | 3 ++ .../products/3560070815746.json | 3 ++ .../products/5228857000838.json | 3 ++ .../products/5228857000839.json | 3 ++ .../products/3250390017165.json | 3 ++ .../products/3250390020745.json | 3 ++ .../products/3250390020806.json | 3 ++ .../products/3250390020998.json | 3 ++ .../products/3250390021001.json | 3 ++ .../products/3250390021469.json | 3 ++ .../products/3250390021544.json | 3 ++ .../products/3250390021568.json | 3 ++ .../products/3250390021926.json | 3 ++ .../products/3250390024781.json | 3 ++ .../products/3250390024804.json | 3 ++ .../products/3250390024842.json | 3 ++ .../products/3250390024866.json | 3 ++ .../products/3250390025399.json | 3 ++ .../products/3250390025863.json | 3 ++ .../products/3250390026044.json | 3 ++ .../products/3250390026648.json | 3 ++ .../products/3250390026754.json | 3 ++ .../test/products/3270190128403.json | 3 ++ .../test/products/4270190128403.json | 3 ++ .../test/products/5270190128403.json | 3 ++ .../test/products/7270190128403.json | 3 ++ .../3003004006001.json | 3 ++ .../3003004006002.json | 3 ++ .../3003004006003.json | 3 ++ .../3003004006004.json | 3 ++ .../3003004006005.json | 3 ++ .../3003004006006.json | 3 ++ .../3003004006007.json | 3 ++ .../import_csv_file/test/2003004006001.json | 3 ++ .../import_csv_file/test/2003004006002.json | 3 ++ .../import_csv_file/test/2003004006003.json | 3 ++ .../import_csv_file/test/2003004006004.json | 3 ++ .../import_csv_file/test/2003004006005.json | 3 ++ .../import_csv_file/test/2003004006006.json | 3 ++ .../import_csv_file/test/2003004006007.json | 3 ++ .../crawler-access-category-facet-page.html | 4 +-- .../crawler-access-product-page.html | 4 +-- ...r-does-not-get-facet-knowledge-panels.html | 4 +-- .../page_crawler/get-robots-txt-ch-it.text | 1 + .../get-robots-txt-fr-pro-platform.text | 1 + .../page_crawler/get-robots-txt-fr.text | 1 + .../get-robots-txt-world-pro-platform.text | 1 + .../page_crawler/get-robots-txt-world.text | 1 + ...ormal-user-access-category-facet-page.html | 4 +-- .../normal-user-access-nested-facet-page.html | 4 +-- .../normal-user-access-product-page.html | 4 +-- ...ormal-user-get-facet-knowledge-panels.html | 4 +-- .../normal-user-get-non-official-cc-lc.html | 2 +- .../product_read/get-existing-product.html | 4 +-- .../country-cambodia-exists-but-empty.html | 2 +- ...ountry-doesnotexist-ingredients-apple.html | 2 +- .../unknown_tags/country-doesnotexist.html | 2 +- .../unknown_tags/country-france-exists.html | 4 +-- .../unknown_tags/ingredient-apple-exists.html | 4 +-- ...tyingredient-does-not-exist-and-empty.html | 2 +- ...gredient-does-not-exist-but-not-empty.html | 4 +-- .../web_html/fr-categories.html | 8 ++--- .../web_html/fr-index.html | 18 +++++------ .../web_html/fr-product-2.html | 4 +-- .../web_html/fr-product.html | 4 +-- .../web_html/fr-search-results-cached.html | 6 ++-- .../web_html/fr-search-results-no-cache.html | 6 ++-- .../web_html/fr-search-results.html | 6 ++-- .../web_html/world-categories.html | 16 +++++----- .../web_html/world-index-signedin.html | 30 +++++++++---------- .../web_html/world-index.html | 30 +++++++++---------- .../web_html/world-label-organic.html | 14 ++++----- .../web_html/world-product.html | 4 +-- .../world-products-multiple-codes.html | 2 +- .../web_html/world-search-results.html | 12 ++++---- .../attributes/en-attributes.json | 8 ++--- ...ronmental_score-score-at-20-threshold.json | 6 ++-- .../attributes/en-maybe-vegan.json | 5 +++- .../attributes/en-no-ingredients.json | 6 ++-- .../attributes/en-nova-groups-markers.json | 6 ++-- .../attributes/en-nutriscore.json | 10 +++---- .../attributes/en-unknown-ingredients.json | 6 ++-- .../attributes/fr-palm-kernel-fat.json | 5 +++- .../attributes/fr-palm-oil-free.json | 5 +++- .../attributes/fr-palm-oil.json | 5 +++- .../attributes/fr-vegetable-oils.json | 5 +++- .../agribalyse-updated-category.json | 3 ++ .../calvados-ingredients-no-origins.json | 3 ++ .../calvados-no-ingredients-no-origins.json | 3 ++ .../environmental_score/carrots-plastic.json | 3 ++ .../environmental_score/carrots.json | 3 ++ ...ory-without-environmental-score-sodas.json | 3 ++ .../environmental_score/empty-product.json | 3 ++ .../environmental_score/energy-drink.json | 3 ++ .../exempted-category-sodas.json | 3 ++ .../environmental_score/foie-gras.json | 3 ++ .../fr-oeufs-de-france.json | 3 ++ .../fr-verseur-en-plastique.json | 3 ++ .../fr-viande-porcine-francaise.json | 3 ++ .../environmental_score/fresh-vegetable.json | 3 ++ .../environmental_score/frozen-vegetable.json | 3 ++ .../grade-a-with-non-recyclable-label.json | 3 ++ .../grade-a-with-recyclable-label.json | 3 ++ .../ingredient-palm-oil-rspo.json | 3 ++ .../ingredient-palm-oil.json | 3 ++ .../known-category-butters.json | 3 ++ .../known-category-margarines.json | 3 ++ .../label-ab-hve-msc-asc.json | 3 ++ .../environmental_score/label-ab-hve.json | 3 ++ .../environmental_score/label-msc-asc.json | 3 ++ .../environmental_score/label-organic.json | 3 ++ .../environmental_score/lamb-leg.json | 3 ++ .../environmental_score/milk.json | 3 ++ ...ingredients-in-origins-field-multiple.json | 3 ++ ...igins-of-ingredients-in-origins-field.json | 3 ++ .../origins-of-ingredients-nested-2.json | 3 ++ .../origins-of-ingredients-nested.json | 3 ++ .../origins-of-ingredients-not-specified.json | 3 ++ ...igins-of-ingredients-partly-specified.json | 3 ++ ...ins-of-ingredients-specified-multiple.json | 3 ++ .../origins-of-ingredients-specified.json | 3 ++ ...origins-of-ingredients-unknown-origin.json | 3 ++ ...ins-of-ingredients-unspecified-origin.json | 3 ++ .../packaging-en-bulk.json | 3 ++ ...kaging-en-multiple-over-maximum-malus.json | 3 ++ .../packaging-en-multiple.json | 3 ++ .../packaging-en-pet-bottle.json | 3 ++ .../packaging-en-plastic-bottle.json | 3 ++ .../packaging-en-tetra-pak-brick.json | 3 ++ .../packaging-en-tetra-pak.json | 3 ++ ...kaging-en-unspecified-material-bottle.json | 3 ++ ...packaging-en-unspecified-material-can.json | 3 ++ .../packaging-fr-new-shapes.json | 3 ++ .../packaging-unspecified-no-a-eco-score.json | 3 ++ .../packaging-unspecified.json | 3 ++ .../environmental_score/skyr.json | 3 ++ .../sum-of-bonuses-greater-than-25.json | 3 ++ .../track-environmental-score-changes.json | 3 ++ .../track-environmental-score-no-change.json | 3 ++ .../track-environmental-score-same-grade.json | 3 ++ ...ack-environmental-score-tags-retained.json | 3 ++ .../environmental_score/uk-milk.json | 3 ++ .../environmental_score/unknown-category.json | 3 ++ .../environmental_score/yogurt.json | 3 ++ 155 files changed, 469 insertions(+), 140 deletions(-) diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json index 0249d5ae62cdb..be6daceb8320d 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups-fr.json @@ -277,7 +277,7 @@ "description_short" : "Impact modéré sur l'environnement", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json index 5335bfcfd32f4..c9ba2bbdc1f5a 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-attribute-groups.json @@ -277,7 +277,7 @@ "description_short" : "Moderate environmental impact", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json index 3cddfc96bb7c8..f8d091a1b6ede 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -312,7 +312,7 @@ "description_short" : "Moderate environmental impact", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", @@ -639,7 +639,7 @@ "description_short" : "Moderate environmental impact", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json index c6bcbedf7f3bd..e3dd3faea6a79 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-raw.json @@ -116,6 +116,9 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], + "ecoscore_tags" : [ + "c" + ], "editors_tags" : [ "tests" ], diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json index 6625f5520f248..df5d14f94e472 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-api-v3-1.json @@ -274,7 +274,7 @@ "description_short" : "Moderate environmental impact", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json index 2bf203b78e6a2..4ed9cc6019bdd 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups-fr.json @@ -274,7 +274,7 @@ "description_short" : "Impact modéré sur l'environnement", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json index 6625f5520f248..df5d14f94e472 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-attribute-groups.json @@ -274,7 +274,7 @@ "description_short" : "Moderate environmental impact", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json index bd9fd1445161a..2a754b83e7ff0 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-api-v3-1.json @@ -110,6 +110,9 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], + "ecoscore_tags" : [ + "c" + ], "editors_tags" : [ "tests" ], diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json index 71299d31893b4..c566c03cea2af 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -309,7 +309,7 @@ "description_short" : "Moderate environmental impact", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", @@ -632,7 +632,7 @@ "description_short" : "Moderate environmental impact", "grade" : "c", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-c.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 47, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json b/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json index c13f890a3605a..a088ff72e9c6f 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-fields-raw.json @@ -110,6 +110,9 @@ "en:environmental-score-origins-of-ingredients-origins-are-100-percent-unknown", "en:environmental-score-production-system-no-label" ], + "ecoscore_tags" : [ + "c" + ], "editors_tags" : [ "tests" ], diff --git a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json index ed0beecfccda0..653ac9f865f07 100644 --- a/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v3_product_write/patch-request-fields-updated-attribute-groups-knowledge-panels.json @@ -275,7 +275,7 @@ "description_short" : "Unknown environmental impact", "grade" : "unknown", "icon_url" : "http://static.openfoodfacts.localhost/images/attributes/dist/ecoscore-unknown.svg", - "id" : "environmental_score", + "id" : "ecoscore", "match" : 0, "name" : "Eco-Score", "panel_id" : "environmental_score", diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070167470.json b/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070167470.json index 6f0be0c50b3d0..73d7cb717e656 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070167470.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070167470.json @@ -77,6 +77,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070815746.json b/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070815746.json index fa305a86d675d..c47349c63042e 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070815746.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/carrefour-images/products/3560070815746.json @@ -79,6 +79,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000838.json b/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000838.json index d57f6dc6c62eb..450aa9ac49a26 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000838.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000838.json @@ -80,6 +80,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000839.json b/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000839.json index e878f69e52aaf..cf949633fa75d 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000839.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/openfoodfacts_import_template_fr_test/products/5228857000839.json @@ -99,6 +99,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390017165.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390017165.json index b7605a82fcf62..8515b9ac5eb40 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390017165.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390017165.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020745.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020745.json index 2bbe4198e4cac..d8c6d9511a7e8 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020745.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020745.json @@ -91,6 +91,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020806.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020806.json index 0805d8d6658bb..512ec706b317f 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020806.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020806.json @@ -88,6 +88,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020998.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020998.json index 61d017f6285b0..9a34221fe57e1 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020998.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390020998.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021001.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021001.json index d045896da8828..933d9dc5a912e 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021001.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021001.json @@ -88,6 +88,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021469.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021469.json index a3af174cb6e59..4fe3fd67e9308 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021469.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021469.json @@ -85,6 +85,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021544.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021544.json index 3ad3a94cefd09..4492402463f78 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021544.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021544.json @@ -88,6 +88,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021568.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021568.json index 0e734b3c99567..ddf753d363b7f 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021568.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021568.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021926.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021926.json index 5e7208bd1542c..8f810742dd745 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021926.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390021926.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024781.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024781.json index 694af6def619d..b95922cd9a7ca 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024781.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024781.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024804.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024804.json index 8105440ac9531..367cde99171ed 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024804.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024804.json @@ -85,6 +85,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024842.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024842.json index 7b8f09442e244..5d98d29cba9d2 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024842.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024842.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024866.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024866.json index 3e4c0d12ecd1e..3cfda033dbcb4 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024866.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390024866.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025399.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025399.json index a3128d7e3112a..6fb948b4421d5 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025399.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025399.json @@ -87,6 +87,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025863.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025863.json index fad481712ec9b..a292c813c5ea2 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025863.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390025863.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026044.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026044.json index 1a7208faed6b2..30f3effdbf41e 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026044.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026044.json @@ -88,6 +88,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026648.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026648.json index 9123e65316d3d..c9f628b2f949b 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026648.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026648.json @@ -87,6 +87,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026754.json b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026754.json index cedaa19d450ad..a18445fcf7b5b 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026754.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/packagings-mousquetaires/products/3250390026754.json @@ -86,6 +86,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/3270190128403.json b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/3270190128403.json index 3b9b86874680d..11f75863e1b3b 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/3270190128403.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/3270190128403.json @@ -155,6 +155,9 @@ "producers", "producer-carrefour" ], + "ecoscore_tags" : [ + "a-plus" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/4270190128403.json b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/4270190128403.json index eac5caf1159b4..d359a431bf0cc 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/4270190128403.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/4270190128403.json @@ -104,6 +104,9 @@ "producers", "producer-test-food-company" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/5270190128403.json b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/5270190128403.json index 5c7d2e5099644..fb9e4adb48cc5 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/5270190128403.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/5270190128403.json @@ -92,6 +92,9 @@ "producers", "producer-world-test-food" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/7270190128403.json b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/7270190128403.json index 0957cf12db62b..586cc89c8c7af 100644 --- a/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/7270190128403.json +++ b/tests/integration/expected_test_results/convert_and_import_excel_file/test/products/7270190128403.json @@ -85,6 +85,9 @@ "producers", "producer-world-test-food" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006001.json b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006001.json index e8d4dfa3d8ce4..2abfe12b1e74c 100644 --- a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006001.json +++ b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006001.json @@ -112,6 +112,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "d" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006002.json b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006002.json index e953d83e0f016..66f9413a57c20 100644 --- a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006002.json +++ b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006002.json @@ -87,6 +87,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006003.json b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006003.json index a23284d12a2e6..35cd5a4beff44 100644 --- a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006003.json +++ b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006003.json @@ -78,6 +78,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006004.json b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006004.json index 00c1ea26e2801..f977153cfeb7b 100644 --- a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006004.json +++ b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006004.json @@ -106,6 +106,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "b" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006005.json b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006005.json index c51addc408a11..b14707e9cf7fe 100644 --- a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006005.json +++ b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006005.json @@ -83,6 +83,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006006.json b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006006.json index b4cdf34bbeb70..406874a4f422d 100644 --- a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006006.json +++ b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006006.json @@ -79,6 +79,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006007.json b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006007.json index 082d066e8f059..6713d2ea2795a 100644 --- a/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006007.json +++ b/tests/integration/expected_test_results/import_csv_file/replace_existing_values/3003004006007.json @@ -75,6 +75,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/test/2003004006001.json b/tests/integration/expected_test_results/import_csv_file/test/2003004006001.json index d27728bbca84d..bd1dd24e5fbf5 100644 --- a/tests/integration/expected_test_results/import_csv_file/test/2003004006001.json +++ b/tests/integration/expected_test_results/import_csv_file/test/2003004006001.json @@ -104,6 +104,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "d" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/test/2003004006002.json b/tests/integration/expected_test_results/import_csv_file/test/2003004006002.json index 088b53c3e11e3..5de2d855e82f8 100644 --- a/tests/integration/expected_test_results/import_csv_file/test/2003004006002.json +++ b/tests/integration/expected_test_results/import_csv_file/test/2003004006002.json @@ -79,6 +79,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/test/2003004006003.json b/tests/integration/expected_test_results/import_csv_file/test/2003004006003.json index a414b3f4f90da..20fa5228245e7 100644 --- a/tests/integration/expected_test_results/import_csv_file/test/2003004006003.json +++ b/tests/integration/expected_test_results/import_csv_file/test/2003004006003.json @@ -78,6 +78,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/test/2003004006004.json b/tests/integration/expected_test_results/import_csv_file/test/2003004006004.json index 7baed0914daf1..da8ad227e3d82 100644 --- a/tests/integration/expected_test_results/import_csv_file/test/2003004006004.json +++ b/tests/integration/expected_test_results/import_csv_file/test/2003004006004.json @@ -96,6 +96,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "b" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/test/2003004006005.json b/tests/integration/expected_test_results/import_csv_file/test/2003004006005.json index a8c97afaf338a..34a945b71de05 100644 --- a/tests/integration/expected_test_results/import_csv_file/test/2003004006005.json +++ b/tests/integration/expected_test_results/import_csv_file/test/2003004006005.json @@ -75,6 +75,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/test/2003004006006.json b/tests/integration/expected_test_results/import_csv_file/test/2003004006006.json index 8c67f80e994a6..1b80610a876cc 100644 --- a/tests/integration/expected_test_results/import_csv_file/test/2003004006006.json +++ b/tests/integration/expected_test_results/import_csv_file/test/2003004006006.json @@ -77,6 +77,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/import_csv_file/test/2003004006007.json b/tests/integration/expected_test_results/import_csv_file/test/2003004006007.json index 7040161a8c5d3..212cc178c5b63 100644 --- a/tests/integration/expected_test_results/import_csv_file/test/2003004006007.json +++ b/tests/integration/expected_test_results/import_csv_file/test/2003004006007.json @@ -75,6 +75,9 @@ "producers", "producer-test-org" ], + "ecoscore_tags" : [ + "unknown" + ], "editors_tags" : [ "test-user" ], diff --git a/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html b/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html index 65e994c4daa1c..511ff52444947 100644 --- a/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html +++ b/tests/integration/expected_test_results/page_crawler/crawler-access-category-facet-page.html @@ -694,7 +694,7 @@

    Discover the project

    diff --git a/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html b/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html index b551b6052ab92..c360af405258d 100644 --- a/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html +++ b/tests/integration/expected_test_results/page_crawler/crawler-does-not-get-facet-knowledge-panels.html @@ -758,7 +758,7 @@

    Discover the project

    diff --git a/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html b/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html index 07e37761564fe..8df5c390049e1 100644 --- a/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html +++ b/tests/integration/expected_test_results/page_crawler/normal-user-get-facet-knowledge-panels.html @@ -799,7 +799,7 @@

    Discover the project

    diff --git a/tests/integration/expected_test_results/unknown_tags/country-cambodia-exists-but-empty.html b/tests/integration/expected_test_results/unknown_tags/country-cambodia-exists-but-empty.html index f36354616463b..826ff06712e34 100644 --- a/tests/integration/expected_test_results/unknown_tags/country-cambodia-exists-but-empty.html +++ b/tests/integration/expected_test_results/unknown_tags/country-cambodia-exists-but-empty.html @@ -680,7 +680,7 @@

    Discover the project

    diff --git a/tests/integration/expected_test_results/web_html/fr-product.html b/tests/integration/expected_test_results/web_html/fr-product.html index 8a65513067830..48d3ba4780baa 100644 --- a/tests/integration/expected_test_results/web_html/fr-product.html +++ b/tests/integration/expected_test_results/web_html/fr-product.html @@ -4687,9 +4687,9 @@

    Découvrez le projet

    diff --git a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html index 68ec3cff581f0..8bed3d244851e 100644 --- a/tests/integration/expected_test_results/web_html/fr-search-results-cached.html +++ b/tests/integration/expected_test_results/web_html/fr-search-results-cached.html @@ -672,7 +672,7 @@

    Découvrez le projet

    diff --git a/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html b/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html index 2cb48bb5da74e..3647f88d7bbcd 100644 --- a/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html +++ b/tests/integration/expected_test_results/web_html/world-products-multiple-codes.html @@ -554,7 +554,7 @@

    Discover the project