[ACS-8398] Unit tests for agents and search ai (#9974)

* ACS-8398 Unit tests for search ai api and agents api

* ACS-8398 Unit tests for getAnswer function from SearchAiApi, corrections for unit tests for SearchAiApi and AgentsApi

* ACS-8398 Unit tests for SearchAiService and AgentService
This commit is contained in:
AleksanderSklorz
2024-07-22 15:56:28 +02:00
committed by Aleksander Sklorz
parent ad9c1a0ce0
commit 16e851e6b5
8 changed files with 648 additions and 3 deletions

View File

@@ -0,0 +1,71 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { AgentMock, EcmAuthMock } from '../mockObjects';
import { AgentsApi, AlfrescoApi } from '../../src';
import assert from 'assert';
describe('AgentsApi', () => {
let agentMock: AgentMock;
let agentsApi: AgentsApi;
beforeEach((done) => {
const hostEcm = 'https://127.0.0.1:8080';
const authResponseMock = new EcmAuthMock(hostEcm);
agentMock = new AgentMock(hostEcm);
authResponseMock.get201Response();
const alfrescoJsApi = new AlfrescoApi({
hostEcm
});
alfrescoJsApi.login('admin', 'admin').then(() => done());
agentsApi = new AgentsApi(alfrescoJsApi);
});
describe('getAgents', () => {
it('should load list of agents', (done) => {
agentMock.mockGetAgents200Response();
agentsApi.getAgents().then((paging) => {
assert.deepStrictEqual(paging, {
list: {
pagination: {
count: 2,
hasMoreItems: false,
skipCount: 0,
maxItems: 100
},
entries: [
{
entry: {
id: 'some id 1',
name: 'some name 1'
}
},
{
entry: {
id: 'some id 2',
name: 'some name 2'
}
}
]
}
});
done();
});
});
});
});

View File

@@ -0,0 +1,116 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { AlfrescoApi, SearchAiApi } from '../../src';
import { EcmAuthMock, SearchAiMock } from '../mockObjects';
import assert from 'assert';
describe('SearchAiApi', () => {
let searchAiApi: SearchAiApi;
let searchAiMock: SearchAiMock;
beforeEach((done) => {
const hostEcm = 'https://127.0.0.1:8080';
const authResponseMock = new EcmAuthMock(hostEcm);
searchAiMock = new SearchAiMock(hostEcm);
authResponseMock.get201Response();
const alfrescoJsApi = new AlfrescoApi({
hostEcm
});
alfrescoJsApi.login('admin', 'admin').then(() => done());
searchAiApi = new SearchAiApi(alfrescoJsApi);
});
describe('ask', () => {
it('should load question information', (done) => {
searchAiMock.mockGetAsk200Response();
searchAiApi
.ask([
{
question: 'some question 1',
nodeIds: ['some node id 1']
},
{
question: 'some question 2',
nodeIds: ['some node id 2', 'some node id 3']
}
])
.then((questions) => {
assert.deepStrictEqual(questions, [
{
questionId: 'some id 1',
question: 'some question 1',
restrictionQuery: 'some node id 1'
},
{
questionId: 'some id 2',
question: 'some question 2',
restrictionQuery: 'some node id 2,some node id 3'
}
]);
done();
});
});
});
describe('getAnswer', () => {
it('should load question answer', (done) => {
searchAiMock.mockGetAnswer200Response();
searchAiApi.getAnswer('id1').then((answer) => {
assert.deepStrictEqual(answer, {
list: {
pagination: {
count: 2,
hasMoreItems: false,
skipCount: 0,
maxItems: 100
},
entries: [
{
entry: {
answer: 'Some answer 1',
questionId: 'some id 1',
references: [
{
referenceId: 'some reference id 1',
referenceText: 'some reference text 1'
}
]
}
},
{
entry: {
answer: 'Some answer 2',
questionId: 'some id 2',
references: [
{
referenceId: 'some reference id 2',
referenceText: 'some reference text 2'
}
]
}
}
]
}
});
done();
});
});
});
});

View File

@@ -0,0 +1,50 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { BaseMock } from '../base.mock';
import nock from 'nock';
export class AgentMock extends BaseMock {
mockGetAgents200Response(): void {
nock(this.host, { encodedQueryParams: true })
.get('/alfresco/api/-default-/private/hxi/versions/1/agents')
.reply(200, {
list: {
pagination: {
count: 2,
hasMoreItems: false,
skipCount: 0,
maxItems: 100
},
entries: [
{
entry: {
id: 'some id 1',
name: 'some name 1'
}
},
{
entry: {
id: 'some id 2',
name: 'some name 2'
}
}
]
}
});
}
}

View File

@@ -0,0 +1,88 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { BaseMock } from '../base.mock';
import nock from 'nock';
export class SearchAiMock extends BaseMock {
mockGetAsk200Response(): void {
nock(this.host, { encodedQueryParams: true })
.get('/alfresco/api/-default-/private/hxi/versions/1/questions', [
{
question: 'some question 1',
restrictionQuery: 'some node id 1'
},
{
question: 'some question 2',
restrictionQuery: 'some node id 2,some node id 3'
}
])
.reply(200, [
{
question: 'some question 1',
questionId: 'some id 1',
restrictionQuery: 'some node id 1'
},
{
question: 'some question 2',
questionId: 'some id 2',
restrictionQuery: 'some node id 2,some node id 3'
}
]);
}
mockGetAnswer200Response(): void {
nock(this.host, { encodedQueryParams: true })
.get('/alfresco/api/-default-/private/hxi/versions/1/answers?questionId=id1')
.reply(200, {
list: {
pagination: {
count: 2,
hasMoreItems: false,
skipCount: 0,
maxItems: 100
},
entries: [
{
entry: {
answer: 'Some answer 1',
questionId: 'some id 1',
references: [
{
referenceId: 'some reference id 1',
referenceText: 'some reference text 1'
}
]
}
},
{
entry: {
answer: 'Some answer 2',
questionId: 'some id 2',
references: [
{
referenceId: 'some reference id 2',
referenceText: 'some reference text 2'
}
]
}
}
]
}
});
}
}

View File

@@ -15,6 +15,7 @@
* limitations under the License.
*/
export * from './content-services/agent.mock';
export * from './content-services/categories.mock';
export * from './content-services/comment.mock';
export * from './content-services/ecm-auth.mock';
@@ -26,6 +27,7 @@ export * from './content-services/groups.mock';
export * from './content-services/find-nodes.mock';
export * from './content-services/rendition.mock';
export * from './content-services/search.mock';
export * from './content-services/search-ai.mock';
export * from './content-services/tag.mock';
export * from './content-services/upload.mock';
export * from './content-services/version.mock';