Files
iNaturalistReactNative/tests/unit/models/Project.test.js
2026-06-25 14:32:22 +02:00

37 lines
1.5 KiB
JavaScript

import Project from "realmModels/Project";
import factory from "tests/factory";
describe( "Project", ( ) => {
describe( "mapApiToRealm", ( ) => {
it( "maps summary fields and POFs", ( ) => {
const mockRemoteProject = factory( "RemoteProject" );
const mappedProject = Project.mapApiToRealm( mockRemoteProject );
expect( mappedProject.description ).toBe( mockRemoteProject.description );
expect( mappedProject.icon ).toBe( mockRemoteProject.icon );
expect( mappedProject.id ).toBe( mockRemoteProject.id );
expect( mappedProject.title ).toBe( mockRemoteProject.title );
expect( mappedProject.projectObservationFields ).toHaveLength( 1 );
expect( mappedProject.project_type ).toBe( mockRemoteProject.project_type );
} );
} );
describe( "upsertRemoteProjects", ( ) => {
it( "upserts projects and embedded POF and OF", ( ) => {
const mockRemoteProject = factory( "RemoteProject" );
Project.upsertRemoteProjects( [mockRemoteProject], global.realm );
const upsertedProject = global.realm.objectForPrimaryKey( "Project", mockRemoteProject.id );
expect( upsertedProject.title ).toBe( mockRemoteProject.title );
const { projectObservationFields } = upsertedProject;
const pof1 = projectObservationFields[0];
expect( pof1.id ).toBe(
mockRemoteProject.project_observation_fields[0].id,
);
expect( pof1.obsField.id ).toBe(
mockRemoteProject.project_observation_fields[0].observation_field.id,
);
} );
} );
} );