diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b708bdf7..a05833c16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel ### Changed +- Add pagination support to the Dataset Version Summaries and File Version Summaries use cases by introducing optional pagination object. #885 +- Refactored pagination to use consistent `CollectionItemsPaginationInfo` object in getMyDataCollectionItems, instead of individual limit/selectedPage parameters. - Use of the new `sourceLastUpdateTime` query parameter from update dataset and file metadata endpoints to support optimistic concurrency control during editing operations. See [Edit Dataset Metadata](https://guides.dataverse.org/en/6.8/api/native-api.html#edit-dataset-metadata) and [Updating File Metadata](https://guides.dataverse.org/en/6.8/api/native-api.html#updating-file-metadata) guides for more details. - Changed the way we were handling DATE type metadata field validation to better match the backend validation and give users better error messages. For example, for an input like “foo AD”, we now show “Production Date is not a valid date. The AD year must be numeric.“. For an input like “99999 AD”, we now show “Production Date is not a valid date. The AD year cant be higher than 9999.“. For an input like “[-9999?], we now show “Production Date is not a valid date. The year in brackets cannot be negative.“, etc. diff --git a/package-lock.json b/package-lock.json index f6f4c9780..e9852d704 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.0.0-alpha.77", + "@iqss/dataverse-client-javascript": "2.0.0-alpha.79", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", @@ -1954,9 +1954,9 @@ }, "node_modules/@iqss/dataverse-client-javascript": { "name": "@IQSS/dataverse-client-javascript", - "version": "2.0.0-alpha.77", - "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.0.0-alpha.77/a12678016bb88b43b940910a1d55b65518e38691", - "integrity": "sha512-mGbm5Wd+jU9H0w2x4iyCLX8VwIAy7oYSH4juZlYuCcLbftmIObyLVcspxJ61XINColLfZY6Rs63+lOWBwYktZg==", + "version": "2.0.0-alpha.79", + "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.0.0-alpha.79/4128665172f9569fa40f60ca1c1d205f7fe8a401", + "integrity": "sha512-NfjzwOz06QJzSYAQ2eZ20tRINO49LrBaWQ9JTQNK0cLPTRdmYzUJgB2zzGzH/c/bi7LfGgfkPqO+6MH9HPFxpg==", "license": "MIT", "dependencies": { "@types/node": "^18.15.11", diff --git a/package.json b/package.json index 1063690f6..d86c6ecc5 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.0.0-alpha.77", + "@iqss/dataverse-client-javascript": "2.0.0-alpha.79", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", diff --git a/src/collection/domain/repositories/CollectionRepository.ts b/src/collection/domain/repositories/CollectionRepository.ts index 587ce572a..fbd456e8c 100644 --- a/src/collection/domain/repositories/CollectionRepository.ts +++ b/src/collection/domain/repositories/CollectionRepository.ts @@ -31,8 +31,7 @@ export interface CollectionRepository { roleIds: number[], collectionItemTypes: CollectionItemType[], publicationStatuses: PublicationStatus[], - limit?: number, - selectedPage?: number, + paginationInfo?: CollectionItemsPaginationInfo, searchText?: string, otherUserName?: string ) => Promise diff --git a/src/collection/domain/useCases/getMyDataCollectionItems.ts b/src/collection/domain/useCases/getMyDataCollectionItems.ts index 43ee3f3c2..54eec62a0 100644 --- a/src/collection/domain/useCases/getMyDataCollectionItems.ts +++ b/src/collection/domain/useCases/getMyDataCollectionItems.ts @@ -2,14 +2,14 @@ import { CollectionRepository } from '../repositories/CollectionRepository' import { MyDataCollectionItemSubset } from '../models/MyDataCollectionItemSubset' import { PublicationStatus } from '../../../shared/core/domain/models/PublicationStatus' import { CollectionItemType } from '@/collection/domain/models/CollectionItemType' +import { CollectionItemsPaginationInfo } from '../models/CollectionItemsPaginationInfo' export async function getMyDataCollectionItems( collectionRepository: CollectionRepository, roleIds: number[], collectionItemTypes: CollectionItemType[], publicationStatuses: PublicationStatus[], - limit?: number, - selectedPage?: number, + paginationInfo?: CollectionItemsPaginationInfo, searchText?: string, otherUserName?: string ): Promise { @@ -18,8 +18,7 @@ export async function getMyDataCollectionItems( roleIds, collectionItemTypes, publicationStatuses, - limit, - selectedPage, + paginationInfo, searchText, otherUserName ) diff --git a/src/collection/infrastructure/repositories/CollectionJSDataverseRepository.ts b/src/collection/infrastructure/repositories/CollectionJSDataverseRepository.ts index 36ef781ad..01b3cc6a5 100644 --- a/src/collection/infrastructure/repositories/CollectionJSDataverseRepository.ts +++ b/src/collection/infrastructure/repositories/CollectionJSDataverseRepository.ts @@ -93,8 +93,7 @@ export class CollectionJSDataverseRepository implements CollectionRepository { roleIds: number[], collectionItemTypes: CollectionItemType[], publicationStatuses: PublicationStatus[], - limit?: number, - selectedPage?: number, + paginationInfo?: CollectionItemsPaginationInfo, searchText?: string, otherUserName?: string ): Promise { @@ -103,8 +102,8 @@ export class CollectionJSDataverseRepository implements CollectionRepository { roleIds, collectionItemTypes, publicationStatuses, - limit, - selectedPage, + paginationInfo?.pageSize, + paginationInfo?.page, searchText, otherUserName ) diff --git a/src/dataset/domain/models/DatasetVersionPaginationInfo.ts b/src/dataset/domain/models/DatasetVersionPaginationInfo.ts new file mode 100644 index 000000000..c4cf8423f --- /dev/null +++ b/src/dataset/domain/models/DatasetVersionPaginationInfo.ts @@ -0,0 +1,7 @@ +import { PaginationInfo } from '../../../shared/pagination/domain/models/PaginationInfo' + +export class DatasetVersionPaginationInfo extends PaginationInfo { + constructor(page = 1, pageSize = 10, totalItems = 0, itemName = 'Version') { + super(page, pageSize, totalItems, itemName) + } +} diff --git a/src/dataset/domain/models/DatasetVersionSummaryInfo.ts b/src/dataset/domain/models/DatasetVersionSummaryInfo.ts index 8de8378e7..f96485d83 100644 --- a/src/dataset/domain/models/DatasetVersionSummaryInfo.ts +++ b/src/dataset/domain/models/DatasetVersionSummaryInfo.ts @@ -1,3 +1,8 @@ +export interface DatasetVersionSummarySubset { + summaries: DatasetVersionSummaryInfo[] + totalCount: number +} + export interface DatasetVersionSummaryInfo { id: number versionNumber: string diff --git a/src/dataset/domain/repositories/DatasetRepository.ts b/src/dataset/domain/repositories/DatasetRepository.ts index 4c49740e3..280fa8cce 100644 --- a/src/dataset/domain/repositories/DatasetRepository.ts +++ b/src/dataset/domain/repositories/DatasetRepository.ts @@ -4,12 +4,13 @@ import { DatasetPaginationInfo } from '../models/DatasetPaginationInfo' import { DatasetDTO } from '../useCases/DTOs/DatasetDTO' import { DatasetsWithCount } from '../models/DatasetsWithCount' import { VersionUpdateType } from '../models/VersionUpdateType' -import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo' +import { DatasetVersionSummarySubset } from '../models/DatasetVersionSummaryInfo' import { DatasetDeaccessionDTO } from '../useCases/DTOs/DatasetDTO' import { DatasetDownloadCount } from '../models/DatasetDownloadCount' import { FormattedCitation, CitationFormat } from '../models/DatasetCitation' import { DatasetTemplate } from '../models/DatasetTemplate' import { CollectionSummary } from '@/collection/domain/models/CollectionSummary' +import { DatasetVersionPaginationInfo } from '../models/DatasetVersionPaginationInfo' export interface DatasetRepository { getByPersistentId: ( @@ -44,7 +45,10 @@ export interface DatasetRepository { paginationInfo: DatasetPaginationInfo ) => Promise publish(persistentId: string, versionUpdateType: VersionUpdateType): Promise - getDatasetVersionsSummaries: (datasetId: number | string) => Promise + getDatasetVersionsSummaries: ( + datasetId: number | string, + paginationInfo?: DatasetVersionPaginationInfo + ) => Promise getDownloadCount: ( datasetId: string | number, includeMDC?: boolean diff --git a/src/dataset/domain/useCases/getDatasetVersionsSummaries.ts b/src/dataset/domain/useCases/getDatasetVersionsSummaries.ts index 547e952dd..ae972d66d 100644 --- a/src/dataset/domain/useCases/getDatasetVersionsSummaries.ts +++ b/src/dataset/domain/useCases/getDatasetVersionsSummaries.ts @@ -1,11 +1,13 @@ import { DatasetRepository } from '../repositories/DatasetRepository' -import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo' +import { DatasetVersionSummarySubset } from '../models/DatasetVersionSummaryInfo' +import { DatasetVersionPaginationInfo } from '../models/DatasetVersionPaginationInfo' export function getDatasetVersionsSummaries( datasetRepository: DatasetRepository, - datasetId: number | string -): Promise { - return datasetRepository.getDatasetVersionsSummaries(datasetId).catch((error) => { + datasetId: number | string, + paginationInfo?: DatasetVersionPaginationInfo +): Promise { + return datasetRepository.getDatasetVersionsSummaries(datasetId, paginationInfo).catch((error) => { throw error }) } diff --git a/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts b/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts index d965cd9df..0641aa4a1 100644 --- a/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts +++ b/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts @@ -46,8 +46,9 @@ import { DatasetDTO } from '../../domain/useCases/DTOs/DatasetDTO' import { DatasetDTOMapper } from '../mappers/DatasetDTOMapper' import { DatasetsWithCount } from '../../domain/models/DatasetsWithCount' import { VersionUpdateType } from '../../domain/models/VersionUpdateType' -import { DatasetVersionSummaryInfo } from '@/dataset/domain/models/DatasetVersionSummaryInfo' +import { DatasetVersionSummarySubset } from '@/dataset/domain/models/DatasetVersionSummaryInfo' import { DatasetDownloadCount } from '@/dataset/domain/models/DatasetDownloadCount' +import { DatasetVersionPaginationInfo } from '@/dataset/domain/models/DatasetVersionPaginationInfo' import { FormattedCitation, CitationFormat } from '@/dataset/domain/models/DatasetCitation' import { axiosInstance } from '@/axiosInstance' import { DATAVERSE_BACKEND_URL } from '../../../config' @@ -373,10 +374,15 @@ export class DatasetJSDataverseRepository implements DatasetRepository { throw new Error(error.message) }) } - getDatasetVersionsSummaries(datasetId: number | string): Promise { - return getDatasetVersionsSummaries.execute(datasetId).catch((error: ReadError) => { - throw error - }) + getDatasetVersionsSummaries( + datasetId: number | string, + paginationInfo?: DatasetVersionPaginationInfo + ): Promise { + return getDatasetVersionsSummaries + .execute(datasetId, paginationInfo?.pageSize, paginationInfo?.offset) + .catch((error: ReadError) => { + throw error + }) } getDownloadCount( datasetId: string | number, diff --git a/src/files/domain/models/FileVersionPaginationInfo.ts b/src/files/domain/models/FileVersionPaginationInfo.ts new file mode 100644 index 000000000..a06cb27ce --- /dev/null +++ b/src/files/domain/models/FileVersionPaginationInfo.ts @@ -0,0 +1,7 @@ +import { PaginationInfo } from '../../../shared/pagination/domain/models/PaginationInfo' + +export class FileVersionPaginationInfo extends PaginationInfo { + constructor(page = 1, pageSize = 10, totalItems = 0, itemName = 'Version') { + super(page, pageSize, totalItems, itemName) + } +} diff --git a/src/files/domain/models/FileVersionSummaryInfo.ts b/src/files/domain/models/FileVersionSummaryInfo.ts index caca9ed50..9c128ad04 100644 --- a/src/files/domain/models/FileVersionSummaryInfo.ts +++ b/src/files/domain/models/FileVersionSummaryInfo.ts @@ -1,5 +1,10 @@ import { DatasetVersionState } from '@/dataset/domain/models/Dataset' +export interface FileVersionSummarySubset { + summaries: FileVersionSummaryInfo[] + totalCount: number +} + export interface FileVersionSummaryInfo { datasetVersion: string contributors?: string diff --git a/src/files/domain/repositories/FileRepository.ts b/src/files/domain/repositories/FileRepository.ts index 587e8a1be..e5761c21e 100644 --- a/src/files/domain/repositories/FileRepository.ts +++ b/src/files/domain/repositories/FileRepository.ts @@ -11,7 +11,8 @@ import { UploadedFileDTO } from '@iqss/dataverse-client-javascript' import { FixityAlgorithm } from '../models/FixityAlgorithm' import { FileMetadataDTO } from '@/files/domain/useCases/DTOs/FileMetadataDTO' import { RestrictFileDTO } from '../useCases/restrictFileDTO' -import { FileVersionSummaryInfo } from '../models/FileVersionSummaryInfo' +import { FileVersionSummarySubset } from '../models/FileVersionSummaryInfo' +import { FileVersionPaginationInfo } from '../models/FileVersionPaginationInfo' export interface FileRepository { getAllByDatasetPersistentId: ( @@ -32,7 +33,10 @@ export interface FileRepository { criteria?: FileCriteria, includeDeaccessioned?: boolean ) => Promise - getFileVersionSummaries: (fileId: number | string) => Promise + getFileVersionSummaries: ( + fileId: number | string, + paginationInfo?: FileVersionPaginationInfo + ) => Promise getById: (id: number, datasetVersionNumber?: string) => Promise getMultipleFileDownloadUrl: (ids: number[], downloadMode: FileDownloadMode) => string getFileDownloadUrl: (id: number, downloadMode: FileDownloadMode) => string diff --git a/src/files/domain/useCases/getFileVersionSummaries.ts b/src/files/domain/useCases/getFileVersionSummaries.ts index dd454bba7..2394190d5 100644 --- a/src/files/domain/useCases/getFileVersionSummaries.ts +++ b/src/files/domain/useCases/getFileVersionSummaries.ts @@ -1,9 +1,11 @@ import { FileRepository } from '../repositories/FileRepository' -import { FileVersionSummaryInfo } from '../models/FileVersionSummaryInfo' +import { FileVersionSummarySubset } from '../models/FileVersionSummaryInfo' +import { FileVersionPaginationInfo } from '../models/FileVersionPaginationInfo' export function getFileVersionSummaries( fileRepository: FileRepository, - fileId: number | string -): Promise { - return fileRepository.getFileVersionSummaries(fileId) + fileId: number | string, + paginationInfo?: FileVersionPaginationInfo +): Promise { + return fileRepository.getFileVersionSummaries(fileId, paginationInfo) } diff --git a/src/files/infrastructure/FileJSDataverseRepository.ts b/src/files/infrastructure/FileJSDataverseRepository.ts index 29c287ce7..08ec8fb21 100644 --- a/src/files/infrastructure/FileJSDataverseRepository.ts +++ b/src/files/infrastructure/FileJSDataverseRepository.ts @@ -45,7 +45,8 @@ import { FixityAlgorithm } from '../domain/models/FixityAlgorithm' import { RestrictFileDTO } from '../domain/useCases/restrictFileDTO' import { FileMetadataDTO } from '@/files/domain/useCases/DTOs/FileMetadataDTO' import { JSDataverseReadErrorHandler } from '@/shared/helpers/JSDataverseReadErrorHandler' -import { FileVersionSummaryInfo } from '../domain/models/FileVersionSummaryInfo' +import { FileVersionSummarySubset } from '../domain/models/FileVersionSummaryInfo' +import { FileVersionPaginationInfo } from '../domain/models/FileVersionPaginationInfo' const includeDeaccessioned = true @@ -249,8 +250,11 @@ export class FileJSDataverseRepository implements FileRepository { throw new Error(error.message) }) } - getFileVersionSummaries(fileId: number | string): Promise { - return getFileVersionSummaries.execute(fileId) + getFileVersionSummaries( + fileId: number | string, + paginationInfo?: FileVersionPaginationInfo + ): Promise { + return getFileVersionSummaries.execute(fileId, paginationInfo?.pageSize, paginationInfo?.offset) } getById(id: number, datasetVersionNumber?: string): Promise { diff --git a/src/sections/account/my-data-section/useGetMyDataAccumulatedItems.tsx b/src/sections/account/my-data-section/useGetMyDataAccumulatedItems.tsx index b0f56ff31..6c6356b0c 100644 --- a/src/sections/account/my-data-section/useGetMyDataAccumulatedItems.tsx +++ b/src/sections/account/my-data-section/useGetMyDataAccumulatedItems.tsx @@ -125,8 +125,7 @@ async function loadNextItems( searchCriteria.roleIds, searchCriteria.itemTypes, publicationStatuses, - paginationInfo.pageSize, - paginationInfo.page, + paginationInfo, searchCriteria.searchText, searchCriteria.otherUserName ) diff --git a/src/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.ts b/src/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.ts index 007357c4f..07e284554 100644 --- a/src/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.ts +++ b/src/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.ts @@ -2,12 +2,13 @@ import { useCallback, useEffect, useState } from 'react' import { DatasetVersionSummaryInfo } from '@/dataset/domain/models/DatasetVersionSummaryInfo' import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository' import { getDatasetVersionsSummaries } from '@/dataset/domain/useCases/getDatasetVersionsSummaries' +import { DatasetVersionPaginationInfo } from '@/dataset/domain/models/DatasetVersionPaginationInfo' interface UseGetDatasetVersionsSummaries { datasetVersionSummaries: DatasetVersionSummaryInfo[] | undefined error: string | null isLoading: boolean - fetchSummaries: () => Promise + fetchSummaries: (paginationInfo?: DatasetVersionPaginationInfo) => Promise } interface Props { @@ -25,23 +26,30 @@ export const useGetDatasetVersionsSummaries = ({ const [isLoading, setIsLoading] = useState(autoFetch) const [error, setError] = useState(null) - const fetchSummaries = useCallback(async () => { - setIsLoading(true) - setError(null) + const fetchSummaries = useCallback( + async (paginationInfo?: DatasetVersionPaginationInfo) => { + setIsLoading(true) + setError(null) - try { - const versionSummaries = await getDatasetVersionsSummaries(datasetRepository, persistentId) - setSummaries(versionSummaries) - } catch (err) { - const errorMessage = - err instanceof Error && err.message - ? err.message - : 'Something went wrong getting the information from the dataset versions summaries. Try again later.' - setError(errorMessage) - } finally { - setIsLoading(false) - } - }, [datasetRepository, persistentId]) + try { + const versionSummaries = await getDatasetVersionsSummaries( + datasetRepository, + persistentId, + paginationInfo + ) + setSummaries(versionSummaries.summaries) + } catch (err) { + const errorMessage = + err instanceof Error && err.message + ? err.message + : 'Something went wrong getting the information from the dataset versions summaries. Try again later.' + setError(errorMessage) + } finally { + setIsLoading(false) + } + }, + [datasetRepository, persistentId] + ) useEffect(() => { if (autoFetch) { diff --git a/src/sections/file/file-version/useGetFileVersionsSummaries.ts b/src/sections/file/file-version/useGetFileVersionsSummaries.ts index 1fc52408f..edc7679ce 100644 --- a/src/sections/file/file-version/useGetFileVersionsSummaries.ts +++ b/src/sections/file/file-version/useGetFileVersionsSummaries.ts @@ -2,12 +2,13 @@ import { useCallback, useEffect, useState } from 'react' import { FileVersionSummaryInfo } from '@/files/domain/models/FileVersionSummaryInfo' import { FileRepository } from '@/files/domain/repositories/FileRepository' import { getFileVersionSummaries } from '@/files/domain/useCases/getFileVersionSummaries' +import { FileVersionPaginationInfo } from '@/files/domain/models/FileVersionPaginationInfo' interface UseGetFileVersionsSummaries { fileVersionSummaries: FileVersionSummaryInfo[] | undefined error: string | null isLoading: boolean - fetchSummaries: () => Promise + fetchSummaries: (paginationInfo?: FileVersionPaginationInfo) => Promise } interface Props { @@ -25,22 +26,29 @@ export const useGetFileVersionsSummaries = ({ const [isLoading, setIsLoading] = useState(autoFetch) const [error, setError] = useState(null) - const fetchSummaries = useCallback(async () => { - setIsLoading(true) - setError(null) - try { - const versionSummaries = await getFileVersionSummaries(fileRepository, fileId) - setSummaries(versionSummaries) - } catch (err) { - const errorMessage = - err instanceof Error && err.message - ? err.message - : 'Something went wrong getting the information from the file versions summaries. Try again later.' - setError(errorMessage) - } finally { - setIsLoading(false) - } - }, [fileRepository, fileId]) + const fetchSummaries = useCallback( + async (paginationInfo?: FileVersionPaginationInfo) => { + setIsLoading(true) + setError(null) + try { + const versionSummaries = await getFileVersionSummaries( + fileRepository, + fileId, + paginationInfo + ) + setSummaries(versionSummaries.summaries) + } catch (err) { + const errorMessage = + err instanceof Error && err.message + ? err.message + : 'Something went wrong getting the information from the file versions summaries. Try again later.' + setError(errorMessage) + } finally { + setIsLoading(false) + } + }, + [fileRepository, fileId] + ) useEffect(() => { if (autoFetch) { diff --git a/src/stories/collection/CollectionMockRepository.ts b/src/stories/collection/CollectionMockRepository.ts index 237b447af..5406ff8ed 100644 --- a/src/stories/collection/CollectionMockRepository.ts +++ b/src/stories/collection/CollectionMockRepository.ts @@ -101,14 +101,11 @@ export class CollectionMockRepository implements CollectionRepository { _roleIds: number[], collectionItemTypes: CollectionItemType[], _publicationStatuses: string[], - limit?: number, - _selectedPage?: number, + paginationInfo?: CollectionItemsPaginationInfo, _searchText?: string, _otherUserName?: string ): Promise { - if (!limit) { - limit = 10 - } + const limit = paginationInfo?.pageSize ?? 10 const numberOfCollections = Math.floor(limit / 3) const numberOfDatasets = Math.floor(limit / 3) const numberOfFiles = limit - numberOfCollections - numberOfDatasets diff --git a/src/stories/dataset/DatasetErrorMockRepository.ts b/src/stories/dataset/DatasetErrorMockRepository.ts index a6d6d0d34..d5701eff3 100644 --- a/src/stories/dataset/DatasetErrorMockRepository.ts +++ b/src/stories/dataset/DatasetErrorMockRepository.ts @@ -6,12 +6,13 @@ import { DatasetDTO } from '../../dataset/domain/useCases/DTOs/DatasetDTO' import { FakerHelper } from '../../../tests/component/shared/FakerHelper' import { VersionUpdateType } from '../../dataset/domain/models/VersionUpdateType' import { DatasetVersionDiff } from '@/dataset/domain/models/DatasetVersionDiff' -import { DatasetVersionSummaryInfo } from '@/dataset/domain/models/DatasetVersionSummaryInfo' import { DatasetDeaccessionDTO } from '@iqss/dataverse-client-javascript' +import { DatasetVersionSummarySubset } from '@/dataset/domain/models/DatasetVersionSummaryInfo' import { DatasetDownloadCount } from '@/dataset/domain/models/DatasetDownloadCount' import { CitationFormat, FormattedCitation } from '@/dataset/domain/models/DatasetCitation' import { DatasetTemplate } from '@/dataset/domain/models/DatasetTemplate' import { CollectionSummary } from '@/collection/domain/models/CollectionSummary' +import { DatasetVersionPaginationInfo } from '@/dataset/domain/models/DatasetVersionPaginationInfo' export class DatasetErrorMockRepository implements DatasetMockRepository { getAllWithCount: ( @@ -87,7 +88,10 @@ export class DatasetErrorMockRepository implements DatasetMockRepository { }) } - getDatasetVersionsSummaries(_datasetId: number | string): Promise { + getDatasetVersionsSummaries( + _datasetId: number | string, + _paginationInfo?: DatasetVersionPaginationInfo + ): Promise { return new Promise((_resolve, reject) => { setTimeout(() => { reject('Error thrown from mock') diff --git a/src/stories/dataset/DatasetLoadingMockRepository.ts b/src/stories/dataset/DatasetLoadingMockRepository.ts index 625b5ba98..91c49052f 100644 --- a/src/stories/dataset/DatasetLoadingMockRepository.ts +++ b/src/stories/dataset/DatasetLoadingMockRepository.ts @@ -1,7 +1,8 @@ import { DatasetMockRepository } from './DatasetMockRepository' import { DatasetPaginationInfo } from '../../dataset/domain/models/DatasetPaginationInfo' import { DatasetsWithCount } from '../../dataset/domain/models/DatasetsWithCount' -import { DatasetVersionSummaryInfo } from '@/dataset/domain/models/DatasetVersionSummaryInfo' +import { DatasetVersionSummarySubset } from '@/dataset/domain/models/DatasetVersionSummaryInfo' +import { DatasetVersionPaginationInfo } from '@/dataset/domain/models/DatasetVersionPaginationInfo' export class DatasetLoadingMockRepository extends DatasetMockRepository { getDatasetsWithCount: ( @@ -14,7 +15,10 @@ export class DatasetLoadingMockRepository extends DatasetMockRepository { return new Promise(() => {}) } - getDatasetVersionsSummaries(_datasetId: number | string): Promise { + getDatasetVersionsSummaries( + _datasetId: number | string, + _paginationInfo?: DatasetVersionPaginationInfo + ): Promise { return new Promise(() => {}) } } diff --git a/src/stories/dataset/DatasetMockRepository.ts b/src/stories/dataset/DatasetMockRepository.ts index 9719ef5de..9a2567bf1 100644 --- a/src/stories/dataset/DatasetMockRepository.ts +++ b/src/stories/dataset/DatasetMockRepository.ts @@ -10,7 +10,7 @@ import { DatasetDTO } from '../../dataset/domain/useCases/DTOs/DatasetDTO' import { DatasetsWithCount } from '../../dataset/domain/models/DatasetsWithCount' import { FakerHelper } from '../../../tests/component/shared/FakerHelper' import { VersionUpdateType } from '../../dataset/domain/models/VersionUpdateType' -import { DatasetVersionSummaryInfo } from '@/dataset/domain/models/DatasetVersionSummaryInfo' +import { DatasetVersionSummarySubset } from '@/dataset/domain/models/DatasetVersionSummaryInfo' import { DatasetDeaccessionDTO } from '@iqss/dataverse-client-javascript' import { DatasetDownloadCount } from '@/dataset/domain/models/DatasetDownloadCount' import { DatasetDownloadCountMother } from '@tests/component/dataset/domain/models/DatasetDownloadCountMother' @@ -19,6 +19,7 @@ import { DatasetTemplate } from '@/dataset/domain/models/DatasetTemplate' import { DatasetTemplateMother } from '@tests/component/dataset/domain/models/DatasetTemplateMother' import { CollectionSummary } from '@/collection/domain/models/CollectionSummary' import { CollectionSummaryMother } from '@tests/component/collection/domain/models/CollectionSummaryMother' +import { DatasetVersionPaginationInfo } from '@/dataset/domain/models/DatasetVersionPaginationInfo' export class DatasetMockRepository implements DatasetRepository { getAllWithCount: ( @@ -98,7 +99,10 @@ export class DatasetMockRepository implements DatasetRepository { }) } - getDatasetVersionsSummaries(_datasetId: number | string): Promise { + getDatasetVersionsSummaries( + _datasetId: number | string, + _paginationInfo?: DatasetVersionPaginationInfo + ): Promise { return new Promise((resolve) => { setTimeout(() => { resolve(DatasetVersionsSummariesMother.create()) diff --git a/src/stories/dataset/deaccession-dataset/DeaccessionDatasetModal.stories.tsx b/src/stories/dataset/deaccession-dataset/DeaccessionDatasetModal.stories.tsx index 3f709112e..ab476e609 100644 --- a/src/stories/dataset/deaccession-dataset/DeaccessionDatasetModal.stories.tsx +++ b/src/stories/dataset/deaccession-dataset/DeaccessionDatasetModal.stories.tsx @@ -37,15 +37,18 @@ export const WithOneVersion: Story = { datasetMockRepository.getDatasetVersionsSummaries = () => { return new Promise((resolve) => { setTimeout(() => { - resolve([ - { - id: 1, - contributors: 'contributors', - versionNumber: '1.0', - publishedOn: '2023-01-01', - summary: DatasetVersionSummaryStringValues.firstPublished - } - ]) + resolve({ + summaries: [ + { + id: 1, + contributors: 'contributors', + versionNumber: '1.0', + publishedOn: '2023-01-01', + summary: DatasetVersionSummaryStringValues.firstPublished + } + ], + totalCount: 1 + }) }, 1_000) }) } diff --git a/src/stories/file/FileMockRepository.ts b/src/stories/file/FileMockRepository.ts index bef568dd7..e4987b47a 100644 --- a/src/stories/file/FileMockRepository.ts +++ b/src/stories/file/FileMockRepository.ts @@ -17,7 +17,8 @@ import { UploadedFileDTO } from '@iqss/dataverse-client-javascript' import { FixityAlgorithm } from '@/files/domain/models/FixityAlgorithm' import { FileMetadataDTO } from '@/files/domain/useCases/DTOs/FileMetadataDTO' import { RestrictFileDTO } from '@/files/domain/useCases/restrictFileDTO' -import { FileVersionSummaryInfo } from '@/files/domain/models/FileVersionSummaryInfo' +import { FileVersionSummarySubset } from '@/files/domain/models/FileVersionSummaryInfo' +import { FileVersionPaginationInfo } from '@/files/domain/models/FileVersionPaginationInfo' export class FileMockRepository implements FileRepository { constructor(public readonly fileMock?: File) {} @@ -158,10 +159,14 @@ export class FileMockRepository implements FileRepository { }) } - getFileVersionSummaries(_id: number | string): Promise { + getFileVersionSummaries( + _id: number | string, + _paginationInfo?: FileVersionPaginationInfo + ): Promise { return new Promise((resolve) => { setTimeout(() => { - resolve(FileMother.createFileVersionSummary()) + const summaries = FileMother.createFileVersionSummary() + resolve({ summaries, totalCount: summaries.length }) }, FakerHelper.loadingTimout()) }) } diff --git a/tests/component/dataset/domain/models/DatasetVersionsSummariesMother.ts b/tests/component/dataset/domain/models/DatasetVersionsSummariesMother.ts index 3c6dc38b8..978a05b1d 100644 --- a/tests/component/dataset/domain/models/DatasetVersionsSummariesMother.ts +++ b/tests/component/dataset/domain/models/DatasetVersionsSummariesMother.ts @@ -1,11 +1,12 @@ import { DatasetVersionSummaryInfo, DatasetVersionSummaryStringValues, + DatasetVersionSummarySubset, Deaccessioned } from '@/dataset/domain/models/DatasetVersionSummaryInfo' export class DatasetVersionsSummariesMother { - static create(): DatasetVersionSummaryInfo[] { + static create(): DatasetVersionSummarySubset { const versionSummaryInfo: DatasetVersionSummaryInfo[] = [ { id: 11, @@ -103,10 +104,13 @@ export class DatasetVersionsSummariesMother { publishedOn: '2025-03-11' } ] - return versionSummaryInfo + return { + summaries: versionSummaryInfo, + totalCount: versionSummaryInfo.length + } } - static createDeaccessioned(): DatasetVersionSummaryInfo[] { + static createDeaccessioned(): DatasetVersionSummarySubset { const deaccessioned: Deaccessioned = { reason: 'deaccessioned test' } @@ -160,6 +164,9 @@ export class DatasetVersionsSummariesMother { publishedOn: '2025-03-11' } ] - return versionSummaryInfo + return { + summaries: versionSummaryInfo, + totalCount: versionSummaryInfo.length + } } } diff --git a/tests/component/sections/account/MyDataItemsPanel.spec.tsx b/tests/component/sections/account/MyDataItemsPanel.spec.tsx index 1e8285c3f..053eb6aae 100644 --- a/tests/component/sections/account/MyDataItemsPanel.spec.tsx +++ b/tests/component/sections/account/MyDataItemsPanel.spec.tsx @@ -159,8 +159,7 @@ describe('MyDataItemsPanel', () => { Cypress.sinon.match.any, Cypress.sinon.match.any, Cypress.sinon.match.any, - 10, - 1, + Cypress.sinon.match.has('pageSize', 10).and(Cypress.sinon.match.has('page', 1)), undefined, otherUsername ) @@ -185,8 +184,7 @@ describe('MyDataItemsPanel', () => { Cypress.sinon.match.any, Cypress.sinon.match.any, Cypress.sinon.match.any, - 10, - 1, + Cypress.sinon.match.has('pageSize', 10).and(Cypress.sinon.match.has('page', 1)), undefined, 'testUserName' ) diff --git a/tests/component/sections/dataset/Dataset.spec.tsx b/tests/component/sections/dataset/Dataset.spec.tsx index 2a37cb2ca..b9bf485fc 100644 --- a/tests/component/sections/dataset/Dataset.spec.tsx +++ b/tests/component/sections/dataset/Dataset.spec.tsx @@ -648,7 +648,9 @@ describe('Dataset', () => { }) it('renders the Dataset Version tab', () => { - datasetRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaryInfo) + datasetRepository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: versionSummaryInfo, totalCount: versionSummaryInfo.length }) mountWithDataset( { summary: {} }) ] + const versionSummariesSubset = { + summaries: versionSummaries, + totalCount: versionSummaries.length + } beforeEach(() => { - repository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaries) + repository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummariesSubset) }) it('renders the DeaccessionDatasetButton if the user has publish dataset permissions and the dataset is released', () => { @@ -118,7 +122,9 @@ describe('DeaccessionDatasetButton', () => { }) ] - repository.getDatasetVersionsSummaries = cy.stub().resolves(singleVersionList) + repository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: singleVersionList, totalCount: singleVersionList.length }) const dataset = DatasetMother.create({ permissions: DatasetPermissionsMother.createWithPublishingDatasetAllowed(), @@ -156,7 +162,9 @@ describe('DeaccessionDatasetButton', () => { summary: {} } ] - repository.getDatasetVersionsSummaries = cy.stub().resolves(singleVersionList) + repository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: singleVersionList, totalCount: singleVersionList.length }) const dataset = DatasetMother.create({ permissions: DatasetPermissionsMother.createWithPublishingDatasetAllowed(), @@ -249,9 +257,10 @@ describe('DeaccessionDatasetButton', () => { publishedOn: '2021-01-02', id: 2 }) - repository.getDatasetVersionsSummaries = cy - .stub() - .resolves([versionSummary1, versionSummary2]) + repository.getDatasetVersionsSummaries = cy.stub().resolves({ + summaries: [versionSummary1, versionSummary2], + totalCount: 2 + }) repository.deaccession = cy.stub().resolves() const dataset = DatasetMother.create({ permissions: DatasetPermissionsMother.createWithPublishingDatasetAllowed(), @@ -300,7 +309,9 @@ describe('DeaccessionDatasetButton', () => { summary: {} } ] - repository.getDatasetVersionsSummaries = cy.stub().resolves(versionsSummaries) + repository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: versionsSummaries, totalCount: versionsSummaries.length }) const dataset = DatasetMother.create({ permissions: DatasetPermissionsMother.createWithPublishingDatasetAllowed(), version: DatasetVersionMother.createReleased() @@ -339,7 +350,9 @@ describe('DeaccessionDatasetButton', () => { } ] - repository.getDatasetVersionsSummaries = cy.stub().resolves(versionsSummaries) + repository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: versionsSummaries, totalCount: versionsSummaries.length }) const dataset = DatasetMother.create({ permissions: DatasetPermissionsMother.createWithPublishingDatasetAllowed(), diff --git a/tests/component/sections/dataset/dataset-versions/DatasetVersions.spec.tsx b/tests/component/sections/dataset/dataset-versions/DatasetVersions.spec.tsx index ece0e1b2a..32002ba2f 100644 --- a/tests/component/sections/dataset/dataset-versions/DatasetVersions.spec.tsx +++ b/tests/component/sections/dataset/dataset-versions/DatasetVersions.spec.tsx @@ -1,5 +1,8 @@ import { DatasetVersions } from '@/sections/dataset/dataset-versions/DatasetVersions' -import { DatasetVersionSummaryInfo } from '@/dataset/domain/models/DatasetVersionSummaryInfo' +import { + DatasetVersionSummaryInfo, + DatasetVersionSummarySubset +} from '@/dataset/domain/models/DatasetVersionSummaryInfo' import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository' import { DatasetVersionDiff } from '@/dataset/domain/models/DatasetVersionDiff' import { DatasetVersionState } from '@/dataset/domain/models/Dataset' @@ -8,7 +11,7 @@ import { DatasetVersionDiffMother } from '../../../dataset/domain/models/Dataset const datasetsRepository: DatasetRepository = {} as DatasetRepository -const versionSummaryInfo: DatasetVersionSummaryInfo[] = DatasetVersionsSummariesMother.create() +const versionSummariesSubset = DatasetVersionsSummariesMother.create() const versionSummaryInfoDraft: DatasetVersionSummaryInfo[] = [ { @@ -39,7 +42,10 @@ const datasetVersionDiff: DatasetVersionDiff = DatasetVersionDiffMother.create() describe('DatasetVersions', () => { it('should render the dataset versions table without view differences button and checkbox', () => { - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaryInfoDraft) + datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves({ + summaries: versionSummaryInfoDraft, + totalCount: versionSummaryInfoDraft.length + }) cy.findByTestId('dataset-versions-table').should('exist') cy.contains('th', 'Dataset Version').should('exist') @@ -64,7 +70,7 @@ describe('DatasetVersions', () => { isInView /> ) - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaryInfo) + datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummariesSubset) datasetsRepository.getVersionDiff = cy.stub().resolves(datasetVersionDiff) }) @@ -81,7 +87,7 @@ describe('DatasetVersions', () => { cy.findByRole('button', { name: 'View Differences' }).should('exist') - versionSummaryInfo.forEach((version) => { + versionSummariesSubset.summaries.forEach((version) => { cy.contains('td', version.versionNumber).should('exist') cy.contains('td', version.contributors).should('exist') if (version.publishedOn) { @@ -102,7 +108,7 @@ describe('DatasetVersions', () => { }) it('should render the dataset versions table without view differences button if less than 2 versions being selected', () => { - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaryInfo) + datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummariesSubset) cy.findByTestId('dataset-versions-table').should('exist') cy.contains('th', 'Dataset Version').should('exist') @@ -121,14 +127,14 @@ describe('DatasetVersions', () => { }) it('should not show view detail buttons if there is only one version', () => { - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaryInfo) + datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummariesSubset) cy.findByTestId('dataset-versions-table').should('exist') cy.get('tr').eq(1).find('td').eq(2).findByText('View Details').should('exist').click() }) it('should open dataset versions detail modal', () => { - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaryInfo) + datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummariesSubset) cy.findByTestId('dataset-versions-table').should('exist') cy.get('tr').eq(1).find('td').eq(2).findByText('View Details').should('exist').click() @@ -136,7 +142,7 @@ describe('DatasetVersions', () => { }) it('should close dataset versions detail modal', () => { - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummaryInfo) + datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(versionSummariesSubset) cy.findByTestId('dataset-versions-table').should('exist') cy.get('tr').eq(1).find('td').eq(2).findByText('View Details').should('exist').click() @@ -159,7 +165,9 @@ describe('DatasetVersions', () => { }) it('should render loading skeleton if the dataset version is loading', () => { - datasetsRepository.getDatasetVersionsSummaries = cy.stub().returns(new Promise(() => {})) + datasetsRepository.getDatasetVersionsSummaries = cy + .stub() + .returns(new Promise(() => {})) cy.customMount( { { id: 2, versionNumber: '2.0', contributors: '' }, { id: 3, versionNumber: '3.0', contributors: '' } ] - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(ascendingVersions) + datasetsRepository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: ascendingVersions, totalCount: ascendingVersions.length }) const diffStub = (datasetsRepository.getVersionDiff = cy .stub() .callsFake((pid: string, oldV: string, newV: string) => @@ -300,7 +310,9 @@ describe('DatasetVersions', () => { { id: 4, versionNumber: '4.0', contributors: '' }, { id: 3, versionNumber: '3.0', contributors: '' } ] - datasetsRepository.getDatasetVersionsSummaries = cy.stub().resolves(descendingVersions) + datasetsRepository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: descendingVersions, totalCount: descendingVersions.length }) const diffStub = (datasetsRepository.getVersionDiff = cy .stub() .callsFake((pid: string, oldV: string, newV: string) => diff --git a/tests/component/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.spec.tsx b/tests/component/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.spec.tsx index 7fc7c7780..7cca720ea 100644 --- a/tests/component/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.spec.tsx +++ b/tests/component/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries.spec.tsx @@ -1,18 +1,19 @@ import { act, renderHook } from '@testing-library/react' import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository' -import { DatasetVersionSummary } from '@/dataset/domain/models/DatasetVersionSummaryInfo' import { ReadError } from '@iqss/dataverse-client-javascript' import { DatasetVersionsSummariesMother } from '@tests/component/dataset/domain/models/DatasetVersionsSummariesMother' import { useGetDatasetVersionsSummaries } from '@/sections/dataset/dataset-versions/useGetDatasetVersionsSummaries' const datasetRepository: DatasetRepository = {} as DatasetRepository -const datasetVersionsSummariesMock: DatasetVersionSummary[] = - DatasetVersionsSummariesMother.create() as unknown as DatasetVersionSummary[] +const datasetVersionsSummariesSubsetMock = DatasetVersionsSummariesMother.create() +const datasetVersionsSummariesMock = datasetVersionsSummariesSubsetMock.summaries describe('useGetDatasetVersionsSummaries', () => { it('should return dataset version summaries correctly', async () => { - datasetRepository.getDatasetVersionsSummaries = cy.stub().resolves(datasetVersionsSummariesMock) + datasetRepository.getDatasetVersionsSummaries = cy + .stub() + .resolves(datasetVersionsSummariesSubsetMock) const { result } = renderHook(() => useGetDatasetVersionsSummaries({ datasetRepository, @@ -78,7 +79,9 @@ describe('useGetDatasetVersionsSummaries', () => { }) it('should fetch summaries when fetchSummaries is called', () => { - datasetRepository.getDatasetVersionsSummaries = cy.stub().resolves(datasetVersionsSummariesMock) + datasetRepository.getDatasetVersionsSummaries = cy + .stub() + .resolves(datasetVersionsSummariesSubsetMock) const { result } = renderHook(() => useGetDatasetVersionsSummaries({ @@ -108,7 +111,9 @@ describe('useGetDatasetVersionsSummaries', () => { }) it('should not fetch summaries if autoFetch is false', async () => { - datasetRepository.getDatasetVersionsSummaries = cy.stub().resolves(datasetVersionsSummariesMock) + datasetRepository.getDatasetVersionsSummaries = cy + .stub() + .resolves(datasetVersionsSummariesSubsetMock) const { result } = renderHook(() => useGetDatasetVersionsSummaries({ diff --git a/tests/component/sections/edit-dataset-metadata/EditDatasetMetadata.spec.tsx b/tests/component/sections/edit-dataset-metadata/EditDatasetMetadata.spec.tsx index 348aa53a6..eab26285c 100644 --- a/tests/component/sections/edit-dataset-metadata/EditDatasetMetadata.spec.tsx +++ b/tests/component/sections/edit-dataset-metadata/EditDatasetMetadata.spec.tsx @@ -27,7 +27,9 @@ describe('EditDatasetMetadata', () => { .stub() .resolves(metadataBlocksInfoOnCreateMode) datasetRepository.updateMetadata = cy.stub().resolves(undefined) - datasetRepository.getDatasetVersionsSummaries = cy.stub().resolves(undefined) + datasetRepository.getDatasetVersionsSummaries = cy + .stub() + .resolves({ summaries: [], totalCount: 0 }) cy.customMount( diff --git a/tests/component/sections/file/file-version/FileVersions.spec.tsx b/tests/component/sections/file/file-version/FileVersions.spec.tsx index e5a80cd82..3284ced37 100644 --- a/tests/component/sections/file/file-version/FileVersions.spec.tsx +++ b/tests/component/sections/file/file-version/FileVersions.spec.tsx @@ -5,11 +5,15 @@ import { DatasetVersionState } from '@iqss/dataverse-client-javascript' import { QueryParamKey, Route } from '@/sections/Route.enum' const fileVersionSummaries = FileMother.createFileVersionSummary() +const fileVersionSummariesSubset = { + summaries: fileVersionSummaries, + totalCount: fileVersionSummaries.length +} const fileRepository: FileRepository = {} as FileRepository describe('FileVersions', () => { it('renders version rows and metadata correctly', () => { - fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummaries) + fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummariesSubset) cy.customMount( { versionState: DatasetVersionState.DEACCESSIONED } ] - fileRepository.getFileVersionSummaries = cy.stub().resolves(deaccessionedFile) + fileRepository.getFileVersionSummaries = cy + .stub() + .resolves({ summaries: deaccessionedFile, totalCount: deaccessionedFile.length }) cy.customMount( { versionState: DatasetVersionState.DEACCESSIONED } ] - fileRepository.getFileVersionSummaries = cy.stub().resolves(deaccessionedFile) + fileRepository.getFileVersionSummaries = cy + .stub() + .resolves({ summaries: deaccessionedFile, totalCount: deaccessionedFile.length }) cy.customMount( { versionState: DatasetVersionState.DRAFT } ] - fileRepository.getFileVersionSummaries = cy.stub().resolves(draftFile) + fileRepository.getFileVersionSummaries = cy + .stub() + .resolves({ summaries: draftFile, totalCount: draftFile.length }) cy.customMount( { it('the version number should be disable and bold if it is the current version', () => { const currentFile = [{ ...fileVersionSummaries[0], datasetVersion: '2.0' }] - fileRepository.getFileVersionSummaries = cy.stub().resolves(currentFile) + fileRepository.getFileVersionSummaries = cy + .stub() + .resolves({ summaries: currentFile, totalCount: currentFile.length }) cy.customMount( { it('should return file version summaries correctly', async () => { - fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummaries) + fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummariesSubset) const { result } = renderHook(() => useGetFileVersionsSummaries({ fileRepository, @@ -75,7 +79,7 @@ describe('useGetFileVersionsSummaries', () => { }) it('should not fetch data if autoFetch is false', async () => { - fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummaries) + fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummariesSubset) const { result } = renderHook(() => useGetFileVersionsSummaries({ fileRepository, @@ -100,7 +104,7 @@ describe('useGetFileVersionsSummaries', () => { }) it('should fetch data when refetch is called', () => { - fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummaries) + fileRepository.getFileVersionSummaries = cy.stub().resolves(fileVersionSummariesSubset) const { result } = renderHook(() => useGetFileVersionsSummaries({ fileRepository,