mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2026-09-15 15:21:39 -04:00
Unit test to check that POs and OFVs end up in Zustand store
This commit is contained in:
1 parent
82257d06fc
commit
2dd07809fc
1 file changed
+38
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
fireEvent,
|
||||
screen, userEvent, waitFor, within,
|
||||
} from "@testing-library/react-native";
|
||||
import AddToProjects from "components/AddToProjects/AddToProjects";
|
||||
@@ -336,6 +337,43 @@ describe( "AddToProjects", ( ) => {
|
||||
expect( mockGoBack ).not.toHaveBeenCalled( );
|
||||
} );
|
||||
|
||||
it( "persists PO and required OFV to Zustand on SAVE after selecting a value", async ( ) => {
|
||||
const requiredObsField = mockProjects[1].projectObservationFields[0].obsField;
|
||||
const requiredObsFieldId = requiredObsField.id;
|
||||
const selectedValue = requiredObsField.allowedValues[1];
|
||||
|
||||
renderAddToProjects( );
|
||||
|
||||
await actor.press( screen.getByText( mockProjects[1].title ) );
|
||||
// Project 0 is already selected in beforeEach, so two pickers are visible
|
||||
const [, projectOneSelectResponse] = screen.getAllByText( "Select a response" );
|
||||
await actor.press( projectOneSelectResponse );
|
||||
|
||||
const picker = await screen.findByTestId( "ReactNativePicker" );
|
||||
fireEvent( picker, "onValueChange", selectedValue );
|
||||
fireEvent.press( screen.getByText( "CONFIRM" ) );
|
||||
|
||||
await actor.press( screen.getByTestId( "AddToProjects.saveButton" ) );
|
||||
|
||||
expect(
|
||||
useStore.getState( ).currentObservation?.projectObservations?.map( po => po.projectId ),
|
||||
).toEqual( [
|
||||
mockProjects[0].id,
|
||||
mockProjects[1].id,
|
||||
] );
|
||||
expect( useStore.getState( ).currentObservation?.observationFieldValues ).toEqual(
|
||||
expect.arrayContaining( [
|
||||
expect.objectContaining( {
|
||||
obsFieldId: requiredObsFieldId,
|
||||
value: selectedValue,
|
||||
} ),
|
||||
] ),
|
||||
);
|
||||
expect( useStore.getState( ).unsavedChanges ).toBe( true );
|
||||
expect( mockGoBack ).toHaveBeenCalled( );
|
||||
expect( screen.queryByTestId( "MissingInfoSheet" ) ).toBeNull( );
|
||||
} );
|
||||
|
||||
it( "keeps editing when Missing info sheet is dismissed", async ( ) => {
|
||||
renderAddToProjects( );
|
||||
|
||||
|
||||
Reference in new issue
Block a user