mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2026-05-06 06:35:57 -04:00
* Show simple my obs header only for logged-in users * ActivityCount TS * CommentsCount TS * IdentificationsCount TS * ObsStatus TS initial pass not looking at errors * QualityGradeStatus TS * Update RealmObservation interface * Update RealmObservation interface * ObsUploadStatus TS, plain copy, no errors yet * Update types * Update type * IconicTaxonIcon TS * ObsImage TS * PhotoCount TS * ObsImagePreview TS * Image is only opaque when logged in * DateDisplay TS * Remove debug flag from UploadObsStatus * Update type * Prop to hide ObsUploadStatus * Test observations need those otherwise they appear as needing edit * Update imports
75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
import {
|
|
screen
|
|
} from "@testing-library/react-native";
|
|
import ObsUploadStatus from "components/ObservationsFlashList/ObsUploadStatus.tsx";
|
|
import i18next from "i18next";
|
|
import React from "react";
|
|
import useStore from "stores/useStore";
|
|
import factory from "tests/factory";
|
|
import faker from "tests/helpers/faker";
|
|
import { renderComponent } from "tests/helpers/render";
|
|
|
|
const mockUnsyncedObservation = factory( "LocalObservation", {
|
|
_synced_at: null
|
|
} );
|
|
|
|
const mockEditedObservation = factory( "LocalObservation", {
|
|
_synced_at: faker.date.past( ),
|
|
_updated_at: faker.date.future( )
|
|
} );
|
|
|
|
const initialStoreState = useStore.getState( );
|
|
beforeAll( ( ) => {
|
|
useStore.setState( initialStoreState, true );
|
|
} );
|
|
|
|
describe( "ObsUploadStatus", () => {
|
|
it( "displays a pending upload for an unsynced observation", () => {
|
|
renderComponent(
|
|
<ObsUploadStatus
|
|
observation={mockUnsyncedObservation}
|
|
progress={0}
|
|
/>
|
|
);
|
|
|
|
const icon = screen.getByLabelText( i18next.t( "Start-upload" ) );
|
|
expect( icon ).toBeVisible( );
|
|
} );
|
|
|
|
it( "displays a pending upload for a locally edited observation", () => {
|
|
renderComponent(
|
|
<ObsUploadStatus
|
|
observation={mockEditedObservation}
|
|
progress={0}
|
|
/>
|
|
);
|
|
|
|
const icon = screen.getByLabelText( i18next.t( "Start-upload" ) );
|
|
expect( icon ).toBeVisible( );
|
|
} );
|
|
|
|
it( "displays an upload in progress", async ( ) => {
|
|
renderComponent(
|
|
<ObsUploadStatus
|
|
observation={mockUnsyncedObservation}
|
|
progress={0.05}
|
|
/>
|
|
);
|
|
|
|
const progressIcon = screen.getByLabelText( i18next.t( "Upload-in-progress" ) );
|
|
expect( progressIcon ).toBeVisible( );
|
|
} );
|
|
|
|
it( "displays a completed upload", async () => {
|
|
renderComponent(
|
|
<ObsUploadStatus
|
|
observation={mockUnsyncedObservation}
|
|
progress={1}
|
|
/>
|
|
);
|
|
|
|
const a11yLabel = screen.getByLabelText( i18next.t( "Upload-Complete" ) );
|
|
expect( a11yLabel ).toBeVisible( );
|
|
} );
|
|
} );
|