Skip to content

Commit

Permalink
fix: fix comments and improve the test
Browse files Browse the repository at this point in the history
  • Loading branch information
ihexxa committed Feb 13, 2025
1 parent 5224eab commit bad8163
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 30 deletions.
18 changes: 15 additions & 3 deletions packages/insomnia-sdk/src/objects/folders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,27 @@ export class ParentFolders {
constructor(private folders: Folder[]) { }

get = (idOrName: string) => {
return this.folders.find(folder => folder.name === idOrName || folder.id === idOrName);
const folder = this.folders.find(folder => folder.name === idOrName || folder.id === idOrName);
if (!folder) {
throw Error(`Folder "${idOrName}" not found`);
}
return folder;
};

getById = (id: string) => {
return this.folders.find(folder => folder.id === id);
const folder = this.folders.find(folder => folder.id === id);
if (!folder) {
throw Error(`Folder "${id}" not found`);
}
return folder;
};

getByName = (folderName: string) => {
return this.folders.find(folder => folder.name === folderName);
const folder = this.folders.find(folder => folder.name === folderName);
if (!folder) {
throw Error(`Folder "${folderName}" not found`);
}
return folder;
};

findValue = (valueKey: string) => {
Expand Down
64 changes: 49 additions & 15 deletions packages/insomnia-smoke-test/fixtures/pre-request-collection.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1330,8 +1330,19 @@ resources:
environmentPropertyOrder: null
metaSortKey: -1668533312225
_type: request_group
preRequestScript: ""
afterResponseScript: ""
preRequestScript: |-
const folder1ValByFolder1 = insomnia.parentFolders.get('folder1').environment.get('val');
const folder1ValByFolder1ByName = insomnia.parentFolders.getByName('folder1').environment.get('val');
const folder2ValByFolder1 = insomnia.parentFolders.get('folder2').environment.get('val');
const folder2ValByFolder1ByName = insomnia.parentFolders.getByName('folder2').environment.get('val');
const valFoundByFolder1 = insomnia.parentFolders.findValue('val');
insomnia.environment.set('folder1ValByFolder1', folder1ValByFolder1);
insomnia.environment.set('folder1ValByFolder1ByName', folder1ValByFolder1ByName);
insomnia.environment.set('folder2ValByFolder1', folder2ValByFolder1);
insomnia.environment.set('folder2ValByFolder1ByName', folder2ValByFolder1ByName);
insomnia.environment.set('valFoundByFolder1', valFoundByFolder1);
- _id: fld_01de564274824ecaad272330339ea6b4
parentId: fld_01de564274824ecaad272330339ea6b3
modified: 1668533312225
Expand All @@ -1343,8 +1354,19 @@ resources:
environmentPropertyOrder: null
metaSortKey: -1668533312225
_type: request_group
preRequestScript: ""
afterResponseScript: ""
preRequestScript: |-
const folder1ValByFolder2 = insomnia.parentFolders.get('folder1').environment.get('val');
const folder1ValByFolder2ByName = insomnia.parentFolders.getByName('folder1').environment.get('val');
const folder2ValByFolder2 = insomnia.parentFolders.get('folder2').environment.get('val');
const folder2ValByFolder2ByName = insomnia.parentFolders.getByName('folder2').environment.get('val');
const valFoundByFolder2 = insomnia.parentFolders.findValue('val');
insomnia.environment.set('folder1ValByFolder2', folder1ValByFolder2);
insomnia.environment.set('folder1ValByFolder2ByName', folder1ValByFolder2ByName);
insomnia.environment.set('folder2ValByFolder2', folder2ValByFolder2);
insomnia.environment.set('folder2ValByFolder2ByName', folder2ValByFolder2ByName);
insomnia.environment.set('valFoundByFolder2', valFoundByFolder2);
- _id: req_89dade2ee9ee42fbb22d588783a9df21
parentId: fld_01de564274824ecaad272330339ea6b4
modified: 1636707449231
Expand All @@ -1367,25 +1389,37 @@ resources:
settingRebuildPath: true
settingFollowRedirects: global
preRequestScript: |-
const valFromFolder1 = insomnia.parentFolders.get('folder1').environment.get('val');
const valFromFolder1ByName = insomnia.parentFolders.getByName('folder1').environment.get('val');
const valFromFolder2 = insomnia.parentFolders.get('folder2').environment.get('val');
const valFromFolder2ByName = insomnia.parentFolders.getByName('folder2').environment.get('val');
const folder1ValByReq = insomnia.parentFolders.get('folder1').environment.get('val');
const folder1ValByReqByName = insomnia.parentFolders.getByName('folder1').environment.get('val');
const folder2ValByReq = insomnia.parentFolders.get('folder2').environment.get('val');
const folder2ValByReqByName = insomnia.parentFolders.getByName('folder2').environment.get('val');
const valFound = insomnia.parentFolders.findValue('val');
insomnia.environment.set('valFromFolder1', valFromFolder1);
insomnia.environment.set('valFromFolder1ByName', valFromFolder1ByName);
insomnia.environment.set('valFromFolder2', valFromFolder2);
insomnia.environment.set('valFromFolder2ByName', valFromFolder2ByName);
insomnia.environment.set('folder1ValByReq', folder1ValByReq);
insomnia.environment.set('folder1ValByReqByName', folder1ValByReqByName);
insomnia.environment.set('folder2ValByReq', folder2ValByReq);
insomnia.environment.set('folder2ValByReqByName', folder2ValByReqByName);
insomnia.environment.set('valFound', valFound);
body:
mimeType: "application/json"
text: |-
{
"valFromFolder1": {{ valFromFolder1 }},
"valFromFolder1ByName": {{ valFromFolder1ByName }},
"valFromFolder2": {{ valFromFolder2 }},
"valFromFolder2ByName": {{ valFromFolder2ByName }},
"valFound": {{ valFound }}
"folder1ValByReq": {{ folder1ValByReq }},
"folder1ValByReqByName": {{ folder1ValByReqByName }},
"folder2ValByReq": {{ folder2ValByReq }},
"folder2ValByReqByName": {{ folder2ValByReqByName }},
"valFound": {{ valFound }},
"folder1ValByFolder1": {{ folder1ValByFolder1 }},
"folder1ValByFolder1ByName": {{ folder1ValByFolder1ByName }},
"folder2ValByFolder1": {{ folder2ValByFolder1 }},
"folder2ValByFolder1ByName": {{ folder2ValByFolder1ByName }},
"valFoundByFolder1": {{ valFoundByFolder1 }},
"folder1ValByFolder2": {{ folder1ValByFolder2 }},
"folder1ValByFolder2ByName": {{ folder1ValByFolder2ByName }},
"folder2ValByFolder2": {{ folder2ValByFolder2 }},
"folder2ValByFolder2ByName": {{ folder2ValByFolder2ByName }},
"valFoundByFolder2": {{ valFoundByFolder2 }}
}
_type: request
Original file line number Diff line number Diff line change
Expand Up @@ -182,11 +182,23 @@ test.describe('pre-request features tests', async () => {
{
name: 'manipulate folder envs',
expectedBody: {
'valFromFolder1': 1,
'valFromFolder1ByName': 1,
'valFromFolder2': 2,
'valFromFolder2ByName': 2,
'folder1ValByReq': 1,
'folder1ValByReqByName': 1,
'folder2ValByReq': 2,
'folder2ValByReqByName': 2,
'valFound': 2,

'folder1ValByFolder1': 1,
'folder1ValByFolder1ByName': 1,
'folder2ValByFolder1': 2,
'folder2ValByFolder1ByName': 2,
'valFoundByFolder1': 2,

'folder1ValByFolder2': 1,
'folder1ValByFolder2ByName': 1,
'folder2ValByFolder2': 2,
'folder2ValByFolder2ByName': 2,
'valFoundByFolder2': 2,
},
},
];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@ const unsetEnvVar = 'insomnia.environment.unset("variable_name");';
const unsetGlbVar = 'insomnia.globals.unset("variable_name");';
const unsetCollectionVar = 'insomnia.collectionVariables.unset("variable_name");';
const sendReq =
`const resp = await new Promise((resolve, reject) => {
insomnia.sendRequest(
'https://httpbin.org/anything',
(err, resp) => {
err != null ? reject(err) : resolve(resp);
}
);
});`;
`const resp = await insomnia.sendRequest(
'https://insomnia.rest/',
(err, resp) => {
if (err != null) {
throw err;
}
}
);`;

const logValue = 'console.log("log", variableName);';
const addHeader = "insomnia.request.addHeader({key: 'X-Header-Name', value: 'header_value' });";
const removeHeader = "insomnia.request.removeHeader('X-Header-Name');";
Expand Down Expand Up @@ -97,6 +98,19 @@ const expectToHaveProperty = "insomnia.expect({a: 1}).to.have.property('a');";
const expectToBeAnObjectThatHasAllKeys =
"insomnia.expect({a: 1, b: 2}).to.be.an('object').that.has.all.keys('a', 'b');";

const findFolderEnvValue = `const myEnv = insomnia.parentFolders.findValue('envKey');
console.log(myEnv);`;
const getFolderEnvValue = `const myFolder = insomnia.parentFolders.get('folderName');
if (myFolder === undefined) {
throw Error('myFolder not found');
}
console.log(myFolder.environment.get('val'));`;
const setFolderEnvValue = `const myFolder = insomnia.parentFolders.get('myFolder');
if (myFolder === undefined) {
throw Error('myFolder not found');
}
myFolder.environment.set('newEnvKey', 'newEnvValue');`;

const lintOptions = {
globals: {
// https://jshint.com/docs/options/
Expand Down Expand Up @@ -212,6 +226,16 @@ const variableSnippetsMenu: SnippetMenuItem = {
'name': 'Get a collection variable',
'snippet': getCollectionVar,
},
{
'id': 'get-folder-var',
'name': 'Get a folder-level variable',
'snippet': getFolderEnvValue,
},
{
'id': 'find-folder-var',
'name': 'Find a folder-level variable',
'snippet': findFolderEnvValue,
},
],
},
{
Expand All @@ -238,6 +262,11 @@ const variableSnippetsMenu: SnippetMenuItem = {
'name': 'Set a collection variable',
'snippet': setCollectionVar,
},
{
'id': 'set-folder-var',
'name': 'Set a folder-level variable',
'snippet': setFolderEnvValue,
},
],
},
{
Expand Down

0 comments on commit bad8163

Please sign in to comment.