mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2026-09-21 10:46:05 -04:00
53 lines
2.1 KiB
JavaScript
53 lines
2.1 KiB
JavaScript
import Project from "realmModels/Project";
|
|
import factory from "tests/factory";
|
|
|
|
describe( "Project", ( ) => {
|
|
describe( "mapRealmToPojo", ( ) => {
|
|
it( "sorts project observation fields by position", ( ) => {
|
|
const mockProject = factory( "LocalProject" );
|
|
mockProject.projectObservationFields = [
|
|
factory( "LocalProjectObservationField", { position: 2 } ),
|
|
factory( "LocalProjectObservationField", { position: 0 } ),
|
|
factory( "LocalProjectObservationField", { position: 1 } ),
|
|
];
|
|
|
|
const mappedProject = Project.mapRealmToPojo( mockProject );
|
|
|
|
expect( mappedProject.projectObservationFields.map( pof => pof.position ) )
|
|
.toEqual( [0, 1, 2] );
|
|
} );
|
|
} );
|
|
|
|
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,
|
|
);
|
|
} );
|
|
} );
|
|
} );
|