@@ -27,7 +27,8 @@ import {
2727 addDatasetType ,
2828 deleteDatasetType ,
2929 linkDatasetTypeWithMetadataBlocks ,
30- setAvailableLicensesForDatasetType
30+ setAvailableLicensesForDatasetType ,
31+ DatasetLicenseUpdateRequest
3132} from '../../../src/datasets'
3233import { ApiConfig , WriteError } from '../../../src'
3334import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
@@ -1800,4 +1801,148 @@ describe('DatasetsRepository', () => {
18001801 } )
18011802 } )
18021803 } )
1804+
1805+ describe ( 'updateDatasetLicense' , ( ) => {
1806+ test ( 'should update the license of a published dataset' , async ( ) => {
1807+ const testDatasetIds = await createDataset . execute ( TestConstants . TEST_NEW_DATASET_DTO )
1808+ await publishDatasetViaApi ( testDatasetIds . numericId )
1809+ await waitForNoLocks ( testDatasetIds . numericId , 10 )
1810+
1811+ const DatasetBefore = await sut . getDataset (
1812+ testDatasetIds . numericId ,
1813+ DatasetNotNumberedVersion . LATEST ,
1814+ false ,
1815+ false
1816+ )
1817+ expect ( DatasetBefore . license ?. name ) . toBe ( 'CC0 1.0' ) // default license
1818+
1819+ const payload : DatasetLicenseUpdateRequest = { name : 'CC BY 4.0' }
1820+ await sut . updateDatasetLicense ( testDatasetIds . numericId , payload )
1821+
1822+ const DatasetAfter = await sut . getDataset (
1823+ testDatasetIds . numericId ,
1824+ DatasetNotNumberedVersion . LATEST ,
1825+ false ,
1826+ false
1827+ )
1828+ expect ( DatasetAfter . license ?. name ) . toBe ( 'CC BY 4.0' )
1829+ } )
1830+
1831+ test ( 'should update the license of a draft dataset' , async ( ) => {
1832+ const testDatasetIds = await createDataset . execute ( TestConstants . TEST_NEW_DATASET_DTO )
1833+
1834+ const DatasetBefore = await sut . getDataset (
1835+ testDatasetIds . numericId ,
1836+ DatasetNotNumberedVersion . LATEST ,
1837+ false ,
1838+ false
1839+ )
1840+ expect ( DatasetBefore . license ?. name ) . toBe ( 'CC0 1.0' ) // default license
1841+ const predefined : DatasetLicenseUpdateRequest = { name : 'CC BY 4.0' }
1842+ await sut . updateDatasetLicense ( testDatasetIds . numericId , predefined )
1843+
1844+ const datasetAfter = await sut . getDataset (
1845+ testDatasetIds . numericId ,
1846+ DatasetNotNumberedVersion . DRAFT ,
1847+ false ,
1848+ false
1849+ )
1850+
1851+ expect ( datasetAfter . license ?. name ) . toBe ( 'CC BY 4.0' )
1852+
1853+ await deleteUnpublishedDatasetViaApi ( testDatasetIds . numericId )
1854+ } )
1855+
1856+ test ( 'should set custom terms of use and access on the draft version' , async ( ) => {
1857+ const testDatasetIds = await createDataset . execute ( TestConstants . TEST_NEW_DATASET_DTO )
1858+
1859+ const custom : DatasetLicenseUpdateRequest = {
1860+ customTerms : {
1861+ termsOfUse : 'Your terms of use' ,
1862+ confidentialityDeclaration : 'Your confidentiality declaration' ,
1863+ specialPermissions : 'Your special permissions' ,
1864+ restrictions : 'Your restrictions' ,
1865+ citationRequirements : 'Your citation requirements' ,
1866+ depositorRequirements : 'Your depositor requirements' ,
1867+ conditions : 'Your conditions' ,
1868+ disclaimer : 'Your disclaimer'
1869+ }
1870+ }
1871+ const actual = await sut . updateDatasetLicense ( testDatasetIds . numericId , custom )
1872+
1873+ expect ( actual ) . toBeUndefined ( )
1874+
1875+ const datasetAfter = await sut . getDataset (
1876+ testDatasetIds . numericId ,
1877+ DatasetNotNumberedVersion . DRAFT ,
1878+ false ,
1879+ false
1880+ )
1881+
1882+ expect ( datasetAfter . license ) . toBeUndefined ( )
1883+ expect ( datasetAfter . termsOfUse . customTerms ?. termsOfUse ) . toBe ( 'Your terms of use' )
1884+
1885+ await deletePublishedDatasetViaApi ( testDatasetIds . persistentId )
1886+ } )
1887+
1888+ test ( 'should set custom terms of use and access on the published version' , async ( ) => {
1889+ const testDatasetIds = await createDataset . execute ( TestConstants . TEST_NEW_DATASET_DTO )
1890+ await publishDatasetViaApi ( testDatasetIds . numericId )
1891+ await waitForNoLocks ( testDatasetIds . numericId , 10 )
1892+
1893+ const custom : DatasetLicenseUpdateRequest = {
1894+ customTerms : {
1895+ termsOfUse : 'Your terms of use' ,
1896+ confidentialityDeclaration : 'Your confidentiality declaration' ,
1897+ specialPermissions : 'Your special permissions' ,
1898+ restrictions : 'Your restrictions' ,
1899+ citationRequirements : 'Your citation requirements' ,
1900+ depositorRequirements : 'Your depositor requirements' ,
1901+ conditions : 'Your conditions' ,
1902+ disclaimer : 'Your disclaimer'
1903+ }
1904+ }
1905+ const actual = await sut . updateDatasetLicense ( testDatasetIds . numericId , custom )
1906+
1907+ expect ( actual ) . toBeUndefined ( )
1908+
1909+ const datasetAfter = await sut . getDataset (
1910+ testDatasetIds . numericId ,
1911+ DatasetNotNumberedVersion . DRAFT ,
1912+ false ,
1913+ false
1914+ )
1915+
1916+ expect ( datasetAfter . license ) . toBeUndefined ( )
1917+ expect ( datasetAfter . termsOfUse . customTerms ?. termsOfUse ) . toBe ( 'Your terms of use' )
1918+
1919+ await deleteUnpublishedDatasetViaApi ( testDatasetIds . numericId )
1920+ } )
1921+
1922+ test ( 'should return error when dataset does not exist' , async ( ) => {
1923+ const expectedError = new WriteError (
1924+ `[404] Dataset with ID ${ nonExistentTestDatasetId } not found.`
1925+ )
1926+
1927+ await expect (
1928+ sut . updateDatasetLicense ( nonExistentTestDatasetId , { name : 'CC BY 4.0' } )
1929+ ) . rejects . toThrow ( expectedError )
1930+ } )
1931+
1932+ test ( 'should accept persistent id when updating license on draft dataset' , async ( ) => {
1933+ const testDatasetIds = await createDataset . execute ( TestConstants . TEST_NEW_DATASET_DTO )
1934+
1935+ await sut . updateDatasetLicense ( testDatasetIds . persistentId , { name : 'CC BY 4.0' } )
1936+
1937+ const draftAfter = await sut . getDataset (
1938+ testDatasetIds . persistentId ,
1939+ DatasetNotNumberedVersion . DRAFT ,
1940+ false ,
1941+ false
1942+ )
1943+ expect ( draftAfter . license ?. name ) . toBe ( 'CC BY 4.0' )
1944+
1945+ await deleteUnpublishedDatasetViaApi ( testDatasetIds . numericId )
1946+ } )
1947+ } )
18031948} )
0 commit comments