From 34b9d2f82a7b685dc8de8119d523ff2d7be8857a Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Thu, 22 Jan 2026 15:13:35 -0500 Subject: [PATCH 1/6] Feat: set/unset default template, and its tests --- CHANGELOG.md | 2 + README.md | 1 + docs/useCases.md | 39 ++++++ .../repositories/ITemplatesRepository.ts | 2 + .../domain/useCases/RemoveDefaultTemplate.ts | 21 ++++ .../domain/useCases/SetDefaultTemplate.ts | 25 ++++ src/templates/index.ts | 13 +- .../infra/repositories/TemplatesRepository.ts | 22 ++++ .../templates/RemoveDefaultTemplate.test.ts | 85 ++++++++++++++ .../templates/SetDefaultTemplate.test.ts | 86 ++++++++++++++ .../templates/TemplateRepository.test.ts | 111 ++++++++++++++++++ .../templates/RemoveDefaultTemplate.test.ts | 35 ++++++ .../unit/templates/SetDefaultTemplate.test.ts | 37 ++++++ 13 files changed, 478 insertions(+), 1 deletion(-) create mode 100644 src/templates/domain/useCases/RemoveDefaultTemplate.ts create mode 100644 src/templates/domain/useCases/SetDefaultTemplate.ts create mode 100644 test/functional/templates/RemoveDefaultTemplate.test.ts create mode 100644 test/functional/templates/SetDefaultTemplate.test.ts create mode 100644 test/unit/templates/RemoveDefaultTemplate.test.ts create mode 100644 test/unit/templates/SetDefaultTemplate.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f3a2c92..a983cfe2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel - New Use Case: [Create a Template](./docs/useCases.md#create-a-template) under Templates. - New Use Case: [Get a Template](./docs/useCases.md#get-a-template) under Templates. - New Use Case: [Delete a Template](./docs/useCases.md#delete-a-template) under Templates. +- Templates: Added `setDefaultTemplate` use case and repository method to support Dataverse endpoint `POST /dataverses/{id}/template/default/{templateId}`. +- Templates: Added `removeDefaultTemplate` use case and repository method to support Dataverse endpoint `DELETE /dataverses/{id}/template/default`. - New Use Case: [Update Terms of Access](./docs/useCases.md#update-terms-of-access). ### Changed diff --git a/README.md b/README.md index 69ee09e0..4255a999 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ This package is part of the Dataverse Frontend ecosystem and is intended to be u - **Use case-centric API functions** – Organized around domain-specific actions like `getDataset`, `createCollection`, or `restrictFile`. - **TypeScript-first** – All use cases include strong typings for inputs and outputs, improving developer experience. +- **Template defaults management** – Set or unset the default template for a collection. ## Installation diff --git a/docs/useCases.md b/docs/useCases.md index f77a40e1..476f6d1d 100644 --- a/docs/useCases.md +++ b/docs/useCases.md @@ -32,6 +32,8 @@ The different use cases currently available in the package are classified below, - [Templates write use cases](#templates-write-use-cases) - [Create a Template](#create-a-template) - [Delete a Template](#delete-a-template) + - [Set Default Template](#set-default-template) + - [Remove Default Template](#remove-default-template) - [Datasets](#Datasets) - [Datasets read use cases](#datasets-read-use-cases) - [Get a Dataset](#get-a-dataset) @@ -669,6 +671,43 @@ await deleteTemplate.execute(templateId) _See [use case](../src/templates/domain/useCases/DeleteTemplate.ts)_ definition. +#### Set Default Template + +Sets the default template for a given Dataverse collection. + +You must have edit permissions on the collection in order to use this endpoint. + +##### Example call: + +```typescript +import { setDefaultTemplate } from '@iqss/dataverse-client-javascript' + +const collectionIdOrAlias = ':root' +const templateId = 12345 + +await setDefaultTemplate.execute(templateId, collectionIdOrAlias) +``` + +_See [use case](../src/templates/domain/useCases/SetDefaultTemplate.ts)_ definition. + +#### Remove Default Template + +Removes the default template from a given Dataverse collection. + +You must have edit permissions on the collection in order to use this endpoint. + +##### Example call: + +```typescript +import { removeDefaultTemplate } from '@iqss/dataverse-client-javascript' + +const collectionIdOrAlias = ':root' + +await removeDefaultTemplate.execute(collectionIdOrAlias) +``` + +_See [use case](../src/templates/domain/useCases/RemoveDefaultTemplate.ts)_ definition. + ## Datasets ### Datasets Read Use Cases diff --git a/src/templates/domain/repositories/ITemplatesRepository.ts b/src/templates/domain/repositories/ITemplatesRepository.ts index 3482d340..fe5fd1cd 100644 --- a/src/templates/domain/repositories/ITemplatesRepository.ts +++ b/src/templates/domain/repositories/ITemplatesRepository.ts @@ -6,4 +6,6 @@ export interface ITemplatesRepository { getTemplate(templateId: number): Promise