Skip to content

Commit 4639b86

Browse files
committed
fix: functional test
1 parent 84259da commit 4639b86

File tree

2 files changed

+114
-123
lines changed

2 files changed

+114
-123
lines changed

jest.config.functional.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import config from './jest.config'
22

3-
config.modulePathIgnorePatterns = ['<rootDir>/test/unit', '<rootDir>/test/integration'](
4-
'RUNNING FUNCTIONAL TESTS'
5-
)
6-
3+
config.modulePathIgnorePatterns = ['<rootDir>/test/unit', '<rootDir>/test/integration']
4+
console.log('RUNNING FUNCTIONAL TESTS')
75
export default config
Lines changed: 112 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {
22
ApiConfig,
3+
createDataset,
34
CreatedDatasetIdentifiers,
45
DatasetPreview,
56
FilePreview,
6-
ReadError,
7-
createDataset,
8-
getMyDataCollectionItems
7+
getMyDataCollectionItems,
8+
ReadError
99
} from '../../../src'
1010
import { TestConstants } from '../../testHelpers/TestConstants'
1111
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
@@ -27,21 +27,50 @@ const testPublishingStatuses = [
2727
]
2828

2929
describe('execute', () => {
30-
beforeAll(() => {
30+
const testCollectionAlias = 'collectionsRepositoryFunctionalTestCollection'
31+
let testDatasetIds: CreatedDatasetIdentifiers
32+
const testTextFile1Name = 'test-file-1.txt'
33+
34+
beforeAll(async () => {
3135
ApiConfig.init(
3236
TestConstants.TEST_API_URL,
3337
DataverseApiAuthMechanism.API_KEY,
3438
process.env.TEST_API_KEY
3539
)
40+
await createCollectionViaApi(testCollectionAlias)
41+
try {
42+
testDatasetIds = await createDataset.execute(
43+
TestConstants.TEST_NEW_DATASET_DTO,
44+
testCollectionAlias
45+
)
46+
} catch (error) {
47+
throw new Error('Tests beforeAll(): Error while creating test dataset')
48+
}
49+
await uploadFileViaApi(testDatasetIds.numericId, testTextFile1Name).catch(() => {
50+
throw new Error(`Tests beforeAll(): Error while uploading file ${testTextFile1Name}`)
51+
})
52+
})
53+
54+
afterAll(async () => {
55+
try {
56+
await deleteUnpublishedDatasetViaApi(testDatasetIds.numericId)
57+
} catch (error) {
58+
throw new Error('Tests afterAll(): Error while deleting test dataset')
59+
}
60+
try {
61+
await deleteCollectionViaApi(testCollectionAlias)
62+
} catch (error) {
63+
throw new Error('Tests afterAll(): Error while deleting test collection')
64+
}
3665
})
37-
test('should return ? when repository returns empty item subset', async () => {
66+
test('should return error message when repository returns empty item subset', async () => {
3867
expect.assertions(2)
3968
let readError: ReadError | undefined = undefined
4069
try {
4170
await getMyDataCollectionItems.execute(
4271
testRoleIds,
4372
testCollectionItemTypes,
44-
testPublishingStatuses,
73+
[PublicationStatus.Deaccessioned],
4574
undefined,
4675
undefined,
4776
undefined
@@ -56,122 +85,86 @@ describe('execute', () => {
5685
)
5786
}
5887
}),
59-
describe('test with created collection items', () => {
60-
const testCollectionAlias = 'collectionsRepositoryFunctionalTestCollection'
61-
let testDatasetIds: CreatedDatasetIdentifiers
62-
const testTextFile1Name = 'test-file-1.txt'
63-
64-
beforeAll(async () => {
65-
await createCollectionViaApi(testCollectionAlias)
66-
try {
67-
testDatasetIds = await createDataset.execute(
68-
TestConstants.TEST_NEW_DATASET_DTO,
69-
testCollectionAlias
70-
)
71-
} catch (error) {
72-
throw new Error('Tests beforeAll(): Error while creating test dataset')
73-
}
74-
await uploadFileViaApi(testDatasetIds.numericId, testTextFile1Name).catch(() => {
75-
throw new Error(`Tests beforeAll(): Error while uploading file ${testTextFile1Name}`)
76-
})
77-
})
78-
79-
afterAll(async () => {
80-
try {
81-
await deleteUnpublishedDatasetViaApi(testDatasetIds.numericId)
82-
} catch (error) {
83-
throw new Error('Tests afterAll(): Error while deleting test dataset')
84-
}
85-
try {
86-
await deleteCollectionViaApi(testCollectionAlias)
87-
} catch (error) {
88-
throw new Error('Tests afterAll(): Error while deleting test collection')
89-
}
90-
})
88+
test('should return items when valid roles,collection types, and publishingStatuses are provided', async () => {
89+
// Give enough time to Solr for indexing
90+
await new Promise((resolve) => setTimeout(resolve, 5000))
9191

92-
test('should return items when valid roles,collection types, and publishingStatuses are provided', async () => {
93-
// Give enough time to Solr for indexing
94-
await new Promise((resolve) => setTimeout(resolve, 5000))
92+
try {
93+
const actual = await getMyDataCollectionItems.execute(
94+
testRoleIds,
95+
testCollectionItemTypes,
96+
testPublishingStatuses
97+
)
9598

96-
try {
97-
const actual = await getMyDataCollectionItems.execute(
98-
testRoleIds,
99-
testCollectionItemTypes,
100-
testPublishingStatuses
101-
)
99+
const actualFilePreview = actual.items[1] as FilePreview
100+
const actualDatasetPreview = actual.items[0] as DatasetPreview
102101

103-
const actualFilePreview = actual.items[1] as FilePreview
104-
const actualDatasetPreview = actual.items[0] as DatasetPreview
102+
expect(actualFilePreview.name).toBe('test-file-1.txt')
103+
expect(actualDatasetPreview.title).toBe('Dataset created using the createDataset use case')
105104

106-
expect(actualFilePreview.name).toBe('test-file-1.txt')
107-
expect(actualDatasetPreview.title).toBe(
108-
'Dataset created using the createDataset use case'
109-
)
110-
111-
expect(actual.totalItemCount).toBe(2)
112-
} catch (error) {
113-
throw new Error('Item subset should be retrieved')
114-
}
115-
})
116-
117-
test('should return an error message when no role is specified', async () => {
118-
expect.assertions(2)
119-
let readError: ReadError | undefined = undefined
120-
try {
121-
await getMyDataCollectionItems.execute([], [], [], undefined, undefined, undefined)
122-
throw new Error('Use case should throw an error')
123-
} catch (error) {
124-
readError = error as ReadError
125-
} finally {
126-
expect(readError).toBeInstanceOf(ReadError)
127-
expect(readError?.message).toEqual(
128-
`There was an error when reading the resource. Reason was: No results. Please select at least one Role.`
129-
)
130-
}
131-
})
132-
test('should return an error message when no publication status is specified', async () => {
133-
expect.assertions(2)
134-
let readError: ReadError | undefined = undefined
135-
try {
136-
await getMyDataCollectionItems.execute(
137-
testRoleIds,
138-
testCollectionItemTypes,
139-
[],
140-
undefined,
141-
undefined,
142-
undefined
143-
)
144-
throw new Error('Use case should throw an error')
145-
} catch (error) {
146-
readError = error as ReadError
147-
} finally {
148-
expect(readError).toBeInstanceOf(ReadError)
149-
expect(readError?.message).toEqual(
150-
`There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
151-
)
152-
}
153-
})
154-
test('should an error message when no collection type is specified', async () => {
155-
expect.assertions(2)
156-
let readError: ReadError | undefined = undefined
157-
try {
158-
await getMyDataCollectionItems.execute(
159-
testRoleIds,
160-
testCollectionItemTypes,
161-
[],
162-
undefined,
163-
undefined,
164-
undefined
165-
)
166-
throw new Error('Use case should throw an error')
167-
} catch (error) {
168-
readError = error as ReadError
169-
} finally {
170-
expect(readError).toBeInstanceOf(ReadError)
171-
expect(readError?.message).toEqual(
172-
`There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
173-
)
174-
}
175-
})
105+
expect(actual.totalItemCount).toBe(2)
106+
} catch (error) {
107+
throw new Error('Item subset should be retrieved')
108+
}
176109
})
110+
111+
test('should return an error message when no role is specified', async () => {
112+
expect.assertions(2)
113+
let readError: ReadError | undefined = undefined
114+
try {
115+
await getMyDataCollectionItems.execute([], [], [], undefined, undefined, undefined)
116+
throw new Error('Use case should throw an error')
117+
} catch (error) {
118+
readError = error as ReadError
119+
} finally {
120+
expect(readError).toBeInstanceOf(ReadError)
121+
expect(readError?.message).toEqual(
122+
`There was an error when reading the resource. Reason was: No results. Please select at least one Role.`
123+
)
124+
}
125+
})
126+
test('should return an error message when no publication status is specified', async () => {
127+
expect.assertions(2)
128+
let readError: ReadError | undefined = undefined
129+
try {
130+
await getMyDataCollectionItems.execute(
131+
testRoleIds,
132+
testCollectionItemTypes,
133+
[],
134+
undefined,
135+
undefined,
136+
undefined
137+
)
138+
throw new Error('Use case should throw an error')
139+
} catch (error) {
140+
readError = error as ReadError
141+
} finally {
142+
expect(readError).toBeInstanceOf(ReadError)
143+
expect(readError?.message).toEqual(
144+
`There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
145+
)
146+
}
147+
})
148+
test('should an error message when no collection type is specified', async () => {
149+
expect.assertions(2)
150+
let readError: ReadError | undefined = undefined
151+
try {
152+
await getMyDataCollectionItems.execute(
153+
testRoleIds,
154+
testCollectionItemTypes,
155+
[],
156+
undefined,
157+
undefined,
158+
undefined
159+
)
160+
throw new Error('Use case should throw an error')
161+
} catch (error) {
162+
readError = error as ReadError
163+
} finally {
164+
expect(readError).toBeInstanceOf(ReadError)
165+
expect(readError?.message).toEqual(
166+
`There was an error when reading the resource. Reason was: No user found for: "Published, Unpublished, Draft, In Review, Deaccessioned"`
167+
)
168+
}
169+
})
177170
})

0 commit comments

Comments
 (0)