Files
iNaturalistReactNative/tests/unit/components/Match/helpers/tryToReplaceWithLocalTaxon.test.js
2025-12-12 15:44:55 -06:00

59 lines
1.9 KiB
JavaScript

import tryToReplaceWithLocalTaxon from "components/Match/helpers/tryToReplaceWithLocalTaxon";
import factory from "tests/factory";
describe( "tryToReplaceWithLocalTaxon", () => {
it( "should return original suggestion when local taxa array is empty", () => {
const localTaxa = [];
const suggestion = {
combined_score: 92,
taxon: factory( "RemoteTaxon", { id: 745 } )
};
const result = tryToReplaceWithLocalTaxon( localTaxa, suggestion );
expect( result ).toEqual( suggestion );
} );
it( "should return original suggestion when no matching local taxon is found", () => {
const localTaxa = [
factory( "LocalTaxon", { id: 746, name: "Silphium laciniatum" } ),
factory( "LocalTaxon", { id: 747, name: "Silphium integrifolium" } )
];
const suggestion = {
combined_score: 88,
taxon: factory( "RemoteTaxon", { id: 745, name: "Silphium perfoliatum" } )
};
const result = tryToReplaceWithLocalTaxon( localTaxa, suggestion );
expect( result ).toEqual( suggestion );
} );
it( "should merge local taxon data when matching taxon is found", () => {
const localTaxon = factory( "LocalTaxon", {
id: 745,
name: "Silphium perfoliatum",
preferred_common_name: "Cup Plant",
rank: "species",
rank_level: 10,
_synced_at: new Date( "2024-01-15" ),
representative_photo: [{ photo: { id: 678 } }]
} );
const localTaxa = [localTaxon];
const suggestion = {
combined_score: 95,
taxon: {
id: 745,
name: "Silphium perfoliatum",
taxon_photos: [{ photo: { id: 123 } }],
iconic_taxon_name: "Plantae",
representative_photo: [{ photo: { id: 456 } }]
}
};
const result = tryToReplaceWithLocalTaxon( localTaxa, suggestion );
expect( result ).toEqual( { ...suggestion, taxon: { ...suggestion.taxon, ...localTaxon } } );
} );
} );