Convert gr-plugin-rest-api_test to Typescript
Compare to PS1 for code changes.
Release-Notes: skip
Change-Id: Iaed316aca360edf3132e912dd5c68dd95cbeb335
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-rest-api_test.js b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-rest-api_test.js
deleted file mode 100644
index c6e1fa4..0000000
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-rest-api_test.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * @license
- * Copyright 2017 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
-import '../../../test/common-test-setup';
-import './gr-js-api-interface';
-import {GrPluginRestApi} from './gr-plugin-rest-api';
-import {stubRestApi} from '../../../test/test-utils';
-import {assert} from '@open-wc/testing';
-
-suite('gr-plugin-rest-api tests', () => {
- let instance;
- let getResponseObjectStub;
- let sendStub;
-
- setup(() => {
- stubRestApi('getAccount').returns(Promise.resolve({name: 'Judy Hopps'}));
- getResponseObjectStub = stubRestApi('getResponseObject').returns(
- Promise.resolve());
- sendStub = stubRestApi('send').returns(Promise.resolve({status: 200}));
- window.Gerrit.install(p => {}, '0.1',
- 'http://test.com/plugins/testplugin/static/test.js');
- instance = new GrPluginRestApi();
- });
-
- test('fetch', () => {
- const payload = {foo: 'foo'};
- return instance.fetch('HTTP_METHOD', '/url', payload).then(r => {
- assert.isTrue(sendStub.calledWith('HTTP_METHOD', '/url', payload));
- assert.equal(r.status, 200);
- assert.isFalse(getResponseObjectStub.called);
- });
- });
-
- test('send', () => {
- const payload = {foo: 'foo'};
- const response = {bar: 'bar'};
- getResponseObjectStub.returns(Promise.resolve(response));
- return instance.send('HTTP_METHOD', '/url', payload).then(r => {
- assert.isTrue(sendStub.calledWith('HTTP_METHOD', '/url', payload));
- assert.strictEqual(r, response);
- });
- });
-
- test('get', () => {
- const response = {foo: 'foo'};
- getResponseObjectStub.returns(Promise.resolve(response));
- return instance.get('/url').then(r => {
- assert.isTrue(sendStub.calledWith('GET', '/url'));
- assert.strictEqual(r, response);
- });
- });
-
- test('post', () => {
- const payload = {foo: 'foo'};
- const response = {bar: 'bar'};
- getResponseObjectStub.returns(Promise.resolve(response));
- return instance.post('/url', payload).then(r => {
- assert.isTrue(sendStub.calledWith('POST', '/url', payload));
- assert.strictEqual(r, response);
- });
- });
-
- test('put', () => {
- const payload = {foo: 'foo'};
- const response = {bar: 'bar'};
- getResponseObjectStub.returns(Promise.resolve(response));
- return instance.put('/url', payload).then(r => {
- assert.isTrue(sendStub.calledWith('PUT', '/url', payload));
- assert.strictEqual(r, response);
- });
- });
-
- test('delete works', () => {
- const response = {status: 204};
- sendStub.returns(Promise.resolve(response));
- return instance.delete('/url').then(r => {
- assert.isTrue(sendStub.calledWith('DELETE', '/url'));
- assert.strictEqual(r, response);
- });
- });
-
- test('delete fails', () => {
- sendStub.returns(Promise.resolve(
- {status: 400, text() { return Promise.resolve('text'); }}));
- return instance.delete('/url').then(r => {
- throw new Error('Should not resolve');
- })
- .catch(err => {
- assert.isTrue(sendStub.calledWith('DELETE', '/url'));
- assert.equal('text', err.message);
- });
- });
-
- test('getLoggedIn', () => {
- const stub = stubRestApi('getLoggedIn').returns(Promise.resolve(true));
- return instance.getLoggedIn().then(result => {
- assert.isTrue(stub.calledOnce);
- assert.isTrue(result);
- });
- });
-
- test('getVersion', () => {
- const stub = stubRestApi('getVersion').returns(Promise.resolve('foo bar'));
- return instance.getVersion().then(result => {
- assert.isTrue(stub.calledOnce);
- assert.equal(result, 'foo bar');
- });
- });
-
- test('getConfig', () => {
- const stub = stubRestApi('getConfig').returns(Promise.resolve('foo bar'));
- return instance.getConfig().then(result => {
- assert.isTrue(stub.calledOnce);
- assert.equal(result, 'foo bar');
- });
- });
-});
-
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-rest-api_test.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-rest-api_test.ts
new file mode 100644
index 0000000..d6d7fc2
--- /dev/null
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-rest-api_test.ts
@@ -0,0 +1,122 @@
+/**
+ * @license
+ * Copyright 2017 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+import '../../../test/common-test-setup';
+import './gr-js-api-interface';
+import {GrPluginRestApi} from './gr-plugin-rest-api';
+import {assertFails, stubRestApi} from '../../../test/test-utils';
+import {assert} from '@open-wc/testing';
+import {PluginApi} from '../../../api/plugin';
+import {
+ createAccountDetailWithId,
+ createServerInfo,
+} from '../../../test/test-data-generators';
+import {HttpMethod} from '../../../api/rest-api';
+
+suite('gr-plugin-rest-api tests', () => {
+ let instance: GrPluginRestApi;
+ let getResponseObjectStub: sinon.SinonStub;
+ let sendStub: sinon.SinonStub;
+
+ setup(() => {
+ stubRestApi('getAccount').resolves(createAccountDetailWithId());
+ getResponseObjectStub = stubRestApi('getResponseObject').resolves();
+ sendStub = stubRestApi('send').resolves({...new Response(), status: 200});
+ let pluginApi: PluginApi;
+ window.Gerrit.install(
+ p => {
+ pluginApi = p;
+ },
+ '0.1',
+ 'http://test.com/plugins/testplugin/static/test.js'
+ );
+ instance = new GrPluginRestApi(pluginApi!);
+ });
+
+ test('fetch', async () => {
+ const payload = {foo: 'foo'};
+ const r = await instance.fetch(HttpMethod.POST, '/url', payload);
+ assert.isTrue(sendStub.calledWith(HttpMethod.POST, '/url', payload));
+ assert.equal(r.status, 200);
+ assert.isFalse(getResponseObjectStub.called);
+ });
+
+ test('send', async () => {
+ const payload = {foo: 'foo'};
+ const response = {bar: 'bar'};
+ getResponseObjectStub.resolves(response);
+ const r = await instance.send(HttpMethod.POST, '/url', payload);
+ assert.isTrue(sendStub.calledWith(HttpMethod.POST, '/url', payload));
+ assert.strictEqual(r, response);
+ });
+
+ test('get', async () => {
+ const response = {foo: 'foo'};
+ getResponseObjectStub.resolves(response);
+ const r = await instance.get('/url');
+ assert.isTrue(sendStub.calledWith('GET', '/url'));
+ assert.strictEqual(r, response);
+ });
+
+ test('post', async () => {
+ const payload = {foo: 'foo'};
+ const response = {bar: 'bar'};
+ getResponseObjectStub.resolves(response);
+ const r = await instance.post('/url', payload);
+ assert.isTrue(sendStub.calledWith('POST', '/url', payload));
+ assert.strictEqual(r, response);
+ });
+
+ test('put', async () => {
+ const payload = {foo: 'foo'};
+ const response = {bar: 'bar'};
+ getResponseObjectStub.resolves(response);
+ const r = await instance.put('/url', payload);
+ assert.isTrue(sendStub.calledWith('PUT', '/url', payload));
+ assert.strictEqual(r, response);
+ });
+
+ test('delete works', async () => {
+ const response = {status: 204};
+ sendStub.resolves(response);
+ const r = await instance.delete('/url');
+ assert.isTrue(sendStub.calledWith('DELETE', '/url'));
+ assert.strictEqual(r, response);
+ });
+
+ test('delete fails', async () => {
+ sendStub.resolves({
+ status: 400,
+ text() {
+ return Promise.resolve('text');
+ },
+ });
+ const error = await assertFails(instance.delete('/url'));
+ assert.equal('text', (error as Error).message);
+ assert.isTrue(sendStub.calledWith('DELETE', '/url'));
+ });
+
+ test('getLoggedIn', async () => {
+ const stub = stubRestApi('getLoggedIn').resolves(true);
+ const loggedIn = await instance.getLoggedIn();
+ assert.isTrue(stub.calledOnce);
+ assert.isTrue(loggedIn);
+ });
+
+ test('getVersion', async () => {
+ const stub = stubRestApi('getVersion').resolves('foo bar');
+ const version = await instance.getVersion();
+ assert.isTrue(stub.calledOnce);
+ assert.equal(version, 'foo bar');
+ });
+
+ test('getConfig', async () => {
+ const info = createServerInfo();
+ const stub = stubRestApi('getConfig').resolves(info);
+ const config = await instance.getConfig();
+ assert.isTrue(stub.calledOnce);
+ assert.equal(config, info);
+ });
+});
diff --git a/polygerrit-ui/app/test/test-utils.ts b/polygerrit-ui/app/test/test-utils.ts
index f4c0091..d6ad434 100644
--- a/polygerrit-ui/app/test/test-utils.ts
+++ b/polygerrit-ui/app/test/test-utils.ts
@@ -325,7 +325,7 @@
}
export function assertFails(promise: Promise<unknown>, error?: unknown) {
- promise
+ return promise
.then((_v: unknown) => {
assert.fail('Promise resolved but should have failed');
})
@@ -333,6 +333,7 @@
if (error) {
assert.equal(e, error);
}
+ return e;
});
}