| /** | 
 |  * @license | 
 |  * Copyright (C) 2019 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.js'; | 
 | import '../../elements/shared/gr-rest-api-interface/gr-rest-api-interface.js'; | 
 | import {GrGroupSuggestionsProvider} from './gr-group-suggestions-provider.js'; | 
 | import {html} from '@polymer/polymer/lib/utils/html-tag.js'; | 
 |  | 
 | const basicFixture = fixtureFromTemplate(html` | 
 | <gr-rest-api-interface id="restAPI"></gr-rest-api-interface> | 
 | `); | 
 |  | 
 | suite('GrGroupSuggestionsProvider tests', () => { | 
 |   let restAPI; | 
 |   let provider; | 
 |   const group1 = { | 
 |     name: 'Some name', | 
 |     id: 1, | 
 |   }; | 
 |   const group2 = { | 
 |     name: 'Other name', | 
 |     id: 3, | 
 |     url: 'abcd', | 
 |   }; | 
 |  | 
 |   setup(() => { | 
 |     stub('gr-rest-api-interface', { | 
 |       getConfig() { return Promise.resolve({}); }, | 
 |     }); | 
 |     restAPI = basicFixture.instantiate(); | 
 |     provider = new GrGroupSuggestionsProvider(restAPI); | 
 |   }); | 
 |  | 
 |   test('getSuggestions', done => { | 
 |     const getSuggestedAccountsStub = | 
 |         sinon.stub(restAPI, 'getSuggestedGroups') | 
 |             .returns(Promise.resolve({ | 
 |               'Some name': {id: 1}, | 
 |               'Other name': {id: 3, url: 'abcd'}, | 
 |             })); | 
 |  | 
 |     provider.getSuggestions('Some input').then(res => { | 
 |       assert.deepEqual(res, [group1, group2]); | 
 |       assert.isTrue(getSuggestedAccountsStub.calledOnce); | 
 |       assert.equal(getSuggestedAccountsStub.lastCall.args[0], 'Some input'); | 
 |       done(); | 
 |     }); | 
 |   }); | 
 |  | 
 |   test('makeSuggestionItem', () => { | 
 |     assert.deepEqual(provider.makeSuggestionItem(group1), { | 
 |       name: 'Some name', | 
 |       value: { | 
 |         group: { | 
 |           name: 'Some name', | 
 |           id: 1, | 
 |         }, | 
 |       }, | 
 |     }); | 
 |  | 
 |     assert.deepEqual(provider.makeSuggestionItem(group2), { | 
 |       name: 'Other name', | 
 |       value: { | 
 |         group: { | 
 |           name: 'Other name', | 
 |           id: 3, | 
 |         }, | 
 |       }, | 
 |     }); | 
 |   }); | 
 | }); | 
 |  |