mirror of
https://github.com/Kong/insomnia
synced 2024-11-08 06:39:48 +00:00
Save a GrpcRequest after protofile selection (#2785)
This commit is contained in:
parent
33ef367f3f
commit
d1e1da53e5
@ -6,6 +6,7 @@ describe('init()', () => {
|
|||||||
it('contains all required fields', async () => {
|
it('contains all required fields', async () => {
|
||||||
expect(models.grpcRequestMeta.init()).toEqual({
|
expect(models.grpcRequestMeta.init()).toEqual({
|
||||||
pinned: false,
|
pinned: false,
|
||||||
|
lastActive: 0,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -26,6 +27,7 @@ describe('create()', () => {
|
|||||||
parentId: 'greq_124',
|
parentId: 'greq_124',
|
||||||
pinned: true,
|
pinned: true,
|
||||||
type: 'GrpcRequestMeta',
|
type: 'GrpcRequestMeta',
|
||||||
|
lastActive: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(request).toEqual(expected);
|
expect(request).toEqual(expected);
|
||||||
@ -43,15 +45,21 @@ describe('create()', () => {
|
|||||||
parentId: 'greq_124',
|
parentId: 'greq_124',
|
||||||
pinned: false,
|
pinned: false,
|
||||||
type: 'GrpcRequestMeta',
|
type: 'GrpcRequestMeta',
|
||||||
|
lastActive: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
expect(request).toEqual(expected);
|
expect(request).toEqual(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('fails when missing parentId', async () => {
|
it('fails when missing parentId', async () => {
|
||||||
Date.now = jest.fn().mockReturnValue(1478795580200);
|
|
||||||
expect(() => models.grpcRequestMeta.create({ pinned: true })).toThrow(
|
expect(() => models.grpcRequestMeta.create({ pinned: true })).toThrow(
|
||||||
'New GrpcRequestMeta missing `parentId`',
|
'New GrpcRequestMeta missing `parentId`',
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('fails when parentId prefix is not that of a GrpcRequest', async () => {
|
||||||
|
expect(() => models.grpcRequestMeta.create({ parentId: 'req_123' })).toThrow(
|
||||||
|
'Expected the parent of GrpcRequestMeta to be a GrpcRequest',
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
import * as models from '../index';
|
||||||
|
import { globalBeforeEach } from '../../__jest__/before-each';
|
||||||
|
|
||||||
|
describe('create()', () => {
|
||||||
|
beforeEach(globalBeforeEach);
|
||||||
|
|
||||||
|
it('fails when missing parentId', async () => {
|
||||||
|
expect(() => models.requestMeta.create({ pinned: true })).toThrow(
|
||||||
|
'New RequestMeta missing `parentId`',
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('fails when parentId prefix is not that of a Request', async () => {
|
||||||
|
expect(() => models.requestMeta.create({ parentId: 'greq_123' })).toThrow(
|
||||||
|
'Expected the parent of RequestMeta to be a Request',
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
@ -1,6 +1,7 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import * as db from '../common/database';
|
import * as db from '../common/database';
|
||||||
import type { BaseModel } from './index';
|
import type { BaseModel } from './index';
|
||||||
|
import { prefix as grpcRequestPrefix } from './grpc-request';
|
||||||
|
|
||||||
export const name = 'gRPC Request Meta';
|
export const name = 'gRPC Request Meta';
|
||||||
export const type = 'GrpcRequestMeta';
|
export const type = 'GrpcRequestMeta';
|
||||||
@ -10,6 +11,7 @@ export const canSync = false;
|
|||||||
|
|
||||||
type BaseGrpcRequestMeta = {
|
type BaseGrpcRequestMeta = {
|
||||||
pinned: boolean,
|
pinned: boolean,
|
||||||
|
lastActive: number,
|
||||||
};
|
};
|
||||||
|
|
||||||
export type GrpcRequestMeta = BaseModel & BaseGrpcRequestMeta;
|
export type GrpcRequestMeta = BaseModel & BaseGrpcRequestMeta;
|
||||||
@ -17,6 +19,7 @@ export type GrpcRequestMeta = BaseModel & BaseGrpcRequestMeta;
|
|||||||
export function init() {
|
export function init() {
|
||||||
return {
|
return {
|
||||||
pinned: false,
|
pinned: false,
|
||||||
|
lastActive: 0,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,6 +32,10 @@ export function create(patch: $Shape<GrpcRequestMeta> = {}): Promise<GrpcRequest
|
|||||||
throw new Error('New GrpcRequestMeta missing `parentId`');
|
throw new Error('New GrpcRequestMeta missing `parentId`');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!patch.parentId.startsWith(`${grpcRequestPrefix}_`)) {
|
||||||
|
throw new Error('Expected the parent of GrpcRequestMeta to be a GrpcRequest');
|
||||||
|
}
|
||||||
|
|
||||||
return db.docCreate(type, patch);
|
return db.docCreate(type, patch);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,6 +60,17 @@ export async function getOrCreateByParentId(parentId: string): Promise<GrpcReque
|
|||||||
return create({ parentId });
|
return create({ parentId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function updateOrCreateByParentId(parentId: string, patch: $Shape<GrpcRequestMeta>) {
|
||||||
|
const requestMeta = await getByParentId(parentId);
|
||||||
|
|
||||||
|
if (requestMeta) {
|
||||||
|
return update(requestMeta, patch);
|
||||||
|
} else {
|
||||||
|
const newPatch = Object.assign({ parentId }, patch);
|
||||||
|
return create(newPatch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function all(): Promise<Array<GrpcRequestMeta>> {
|
export function all(): Promise<Array<GrpcRequestMeta>> {
|
||||||
return db.all(type);
|
return db.all(type);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
import * as db from '../common/database';
|
import * as db from '../common/database';
|
||||||
import { PREVIEW_MODE_FRIENDLY } from '../common/constants';
|
import { PREVIEW_MODE_FRIENDLY } from '../common/constants';
|
||||||
import type { BaseModel } from './index';
|
import type { BaseModel } from './index';
|
||||||
|
import { prefix as requestPrefix } from './request';
|
||||||
|
|
||||||
export const name = 'Request Meta';
|
export const name = 'Request Meta';
|
||||||
export const type = 'RequestMeta';
|
export const type = 'RequestMeta';
|
||||||
@ -46,6 +47,10 @@ export function create(patch: $Shape<RequestMeta> = {}) {
|
|||||||
throw new Error('New RequestMeta missing `parentId` ' + JSON.stringify(patch));
|
throw new Error('New RequestMeta missing `parentId` ' + JSON.stringify(patch));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!patch.parentId.startsWith(`${requestPrefix}_`)) {
|
||||||
|
throw new Error('Expected the parent of RequestMeta to be a Request');
|
||||||
|
}
|
||||||
|
|
||||||
return db.docCreate(type, patch);
|
return db.docCreate(type, patch);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,6 +72,17 @@ export async function getOrCreateByParentId(parentId: string) {
|
|||||||
return create({ parentId });
|
return create({ parentId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function updateOrCreateByParentId(parentId: string, patch: $Shape<RequestMeta>) {
|
||||||
|
const requestMeta = await getByParentId(parentId);
|
||||||
|
|
||||||
|
if (requestMeta) {
|
||||||
|
return update(requestMeta, patch);
|
||||||
|
} else {
|
||||||
|
const newPatch = Object.assign({ parentId }, patch);
|
||||||
|
return create(newPatch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function all(): Promise<Array<RequestMeta>> {
|
export function all(): Promise<Array<RequestMeta>> {
|
||||||
return db.all(type);
|
return db.all(type);
|
||||||
}
|
}
|
||||||
|
@ -56,12 +56,14 @@ class RequestCreateModal extends PureComponent {
|
|||||||
const requestName = this._input.value;
|
const requestName = this._input.value;
|
||||||
if (selectedMethod === METHOD_GRPC) {
|
if (selectedMethod === METHOD_GRPC) {
|
||||||
showModal(ProtoFilesModal, {
|
showModal(ProtoFilesModal, {
|
||||||
onSave: async protofileId => {
|
onSave: async (protoFileId: string) => {
|
||||||
// TODO: Create new grpc request with the name and selected proto file - INS-198
|
const createdRequest = await models.grpcRequest.create({
|
||||||
console.log(`Create request name: [${requestName}], and protofileId: [${protofileId}]`);
|
parentId,
|
||||||
|
name: requestName,
|
||||||
|
protoFileId,
|
||||||
|
});
|
||||||
|
|
||||||
const createdRequestId = 'gr_123';
|
this._onComplete(createdRequest._id);
|
||||||
this._onComplete(createdRequestId);
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -27,7 +27,7 @@ const ProtoFileList = ({
|
|||||||
{!protoFiles.length && <ListGroupItem>No proto files exist for this workspace</ListGroupItem>}
|
{!protoFiles.length && <ListGroupItem>No proto files exist for this workspace</ListGroupItem>}
|
||||||
{protoFiles.map(p => (
|
{protoFiles.map(p => (
|
||||||
<ProtoFileListItem
|
<ProtoFileListItem
|
||||||
key={p.id}
|
key={p._id}
|
||||||
protoFile={p}
|
protoFile={p}
|
||||||
isSelected={p._id === selectedId}
|
isSelected={p._id === selectedId}
|
||||||
handleSelect={handleSelect}
|
handleSelect={handleSelect}
|
||||||
|
@ -497,12 +497,12 @@ class App extends PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static async _updateRequestMetaByParentId(requestId, patch) {
|
static async _updateRequestMetaByParentId(requestId, patch) {
|
||||||
const requestMeta = await models.requestMeta.getByParentId(requestId);
|
const isGrpcRequest = requestId.startsWith(`${models.grpcRequest.prefix}_`);
|
||||||
if (requestMeta) {
|
|
||||||
return models.requestMeta.update(requestMeta, patch);
|
if (isGrpcRequest) {
|
||||||
|
return models.grpcRequestMeta.updateOrCreateByParentId(requestId, patch);
|
||||||
} else {
|
} else {
|
||||||
const newPatch = Object.assign({ parentId: requestId }, patch);
|
return models.requestMeta.updateOrCreateByParentId(requestId, patch);
|
||||||
return models.requestMeta.create(newPatch);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user