| /** |
| * @license |
| * Copyright (C) 2021 The Android Open Source Project |
| * |
| * 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 '../../test/common-test-setup-karma'; |
| import { |
| createComment, |
| createFixSuggestionInfo, |
| } from '../../test/test-data-generators'; |
| import {stubRestApi} from '../../test/test-utils'; |
| import { |
| NumericChangeId, |
| RobotId, |
| RobotRunId, |
| Timestamp, |
| UrlEncodedCommentId, |
| } from '../../types/common'; |
| import {appContext} from '../app-context'; |
| import {CommentsService} from './comments-service'; |
| |
| suite('change service tests', () => { |
| let commentsService: CommentsService; |
| |
| test('loads logged-out', () => { |
| const changeNum = 1234 as NumericChangeId; |
| commentsService = new CommentsService(appContext.restApiService); |
| stubRestApi('getLoggedIn').returns(Promise.resolve(false)); |
| const diffCommentsSpy = stubRestApi('getDiffComments').returns( |
| Promise.resolve({ |
| 'foo.c': [ |
| { |
| ...createComment(), |
| id: '123' as UrlEncodedCommentId, |
| message: 'Done', |
| updated: '2017-02-08 16:40:49' as Timestamp, |
| }, |
| ], |
| }) |
| ); |
| const diffRobotCommentsSpy = stubRestApi('getDiffRobotComments').returns( |
| Promise.resolve({ |
| 'foo.c': [ |
| { |
| ...createComment(), |
| id: '321' as UrlEncodedCommentId, |
| message: 'Done', |
| updated: '2017-02-08 16:40:49' as Timestamp, |
| robot_id: 'robot_1' as RobotId, |
| robot_run_id: 'run_1' as RobotRunId, |
| properties: {}, |
| fix_suggestions: [ |
| createFixSuggestionInfo('fix_1'), |
| createFixSuggestionInfo('fix_2'), |
| ], |
| }, |
| ], |
| }) |
| ); |
| const diffDraftsSpy = stubRestApi('getDiffDrafts').returns( |
| Promise.resolve({}) |
| ); |
| |
| commentsService.loadAll(changeNum); |
| assert.isTrue(diffCommentsSpy.calledWithExactly(changeNum)); |
| assert.isTrue(diffRobotCommentsSpy.calledWithExactly(changeNum)); |
| assert.isTrue(diffDraftsSpy.calledWithExactly(changeNum)); |
| }); |
| |
| test('loads logged-in', () => { |
| const changeNum = 1234 as NumericChangeId; |
| |
| stubRestApi('getLoggedIn').returns(Promise.resolve(true)); |
| const diffCommentsSpy = stubRestApi('getDiffComments').returns( |
| Promise.resolve({ |
| 'foo.c': [ |
| { |
| ...createComment(), |
| id: '123' as UrlEncodedCommentId, |
| message: 'Done', |
| updated: '2017-02-08 16:40:49' as Timestamp, |
| }, |
| ], |
| }) |
| ); |
| const diffRobotCommentsSpy = stubRestApi('getDiffRobotComments').returns( |
| Promise.resolve({ |
| 'foo.c': [ |
| { |
| ...createComment(), |
| id: '321' as UrlEncodedCommentId, |
| message: 'Done', |
| updated: '2017-02-08 16:40:49' as Timestamp, |
| robot_id: 'robot_1' as RobotId, |
| robot_run_id: 'run_1' as RobotRunId, |
| properties: {}, |
| fix_suggestions: [ |
| createFixSuggestionInfo('fix_1'), |
| createFixSuggestionInfo('fix_2'), |
| ], |
| }, |
| ], |
| }) |
| ); |
| const diffDraftsSpy = stubRestApi('getDiffDrafts').returns( |
| Promise.resolve({}) |
| ); |
| |
| commentsService.loadAll(changeNum); |
| assert.isTrue(diffCommentsSpy.calledWithExactly(changeNum)); |
| assert.isTrue(diffRobotCommentsSpy.calledWithExactly(changeNum)); |
| assert.isTrue(diffDraftsSpy.calledWithExactly(changeNum)); |
| }); |
| }); |