Skip to content

Commit

Permalink
Merge pull request #405 from FalkorDB/settingsConfig
Browse files Browse the repository at this point in the history
Settings config
  • Loading branch information
AviAvni authored Sep 10, 2024
2 parents 2ec27d2 + 31bf2c1 commit 0ef68f4
Show file tree
Hide file tree
Showing 8 changed files with 89 additions and 5 deletions.
4 changes: 2 additions & 2 deletions app/settings/Configurations.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,8 @@ export default function Configurations() {
<TableBody>
{
configs.map(({ name, description, value }, index) => (
<TableRow key={name} className={cn("border-none", !(index % 2) && "bg-[#57577B]")}>
<TableCell className="py-8">{name}</TableCell>
<TableRow key={name} data-id={name} className={cn("border-none", !(index % 2) && "bg-[#57577B] hover:bg-[#57577B]")}>
<TableCell className="w-[20%] py-8">{name}</TableCell>
<TableCell className="w-[70%]">{description}</TableCell>
<TableCell className="w-[15%]">
{
Expand Down
13 changes: 13 additions & 0 deletions e2e/config/roles.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"roles":{
"maxQueuedQueries": "MAX_QUEUED_QUERIES",
"TimeOut": "TIMEOUT",
"maxTimeOut":"TIMEOUT_MAX",
"defaultTimeOut":"TIMEOUT_DEFAULT",
"resultSetSize": "RESULTSET_SIZE",
"queryMemCapacity": "QUERY_MEM_CAPACITY",
"vKeyMaxEntityCount": "VKEY_MAX_ENTITY_COUNT",
"cmdInfo": "CMD_INFO",
"maxInfoQueries": "MAX_INFO_QUERIES"
}
}
3 changes: 2 additions & 1 deletion e2e/config/urls.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"api": {
"addGraphUrl": "http://localhost:3000/api/graph/",
"LoginApiUrl": "http://localhost:3000/api/auth/providers",
"deleteGraphUrl": "http://localhost:3000/api/graph/"
"deleteGraphUrl": "http://localhost:3000/api/graph/",
"settingsConfig": "http://localhost:3000/api/graph?config="
},

"falkorDBWeb": "https://www.falkordb.com/",
Expand Down
12 changes: 11 additions & 1 deletion e2e/infra/api/apiRequests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ const getRequest = async (url: string, body: any, availableRequest?: APIRequestC
const requestContext = availableRequest || (await request.newContext());
return await requestContext.get(url, requestOptions);
};

const postRequest = async (url: string, body: any, availableRequest?: APIRequestContext, headers?: Record<string, string>) => {
const requestOptions = {
data: body,
headers: headers || undefined,
};

const requestContext = availableRequest || (await request.newContext());
return await requestContext.post(url, requestOptions);
};

const deleteRequest = async (url: string, headers?: Record<string, string>) => {
const requestOptions = {
Expand All @@ -22,4 +32,4 @@ const deleteRequest = async (url: string, headers?: Record<string, string>) => {



export{ getRequest, deleteRequest }
export{ getRequest, deleteRequest, postRequest }
13 changes: 13 additions & 0 deletions e2e/logic/POM/settingsConfigPage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { Locator, Page } from "@playwright/test";
import BasePage from "@/e2e/infra/ui/basePage";

export default class SettingsConfigPage extends BasePage {

private get roleContentValue() : (role : string) => Locator {
return (role : string) => this.page.locator(`//tbody/tr[@data-id='${role}']/td/button/p`)
}

async getRoleContentValue(role : string): Promise<string | null>{
return await this.roleContentValue(role).textContent()
}
}
9 changes: 8 additions & 1 deletion e2e/logic/api/apiCalls.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { deleteRequest, getRequest } from "../../infra/api/apiRequests";
import { deleteRequest, getRequest, postRequest } from "../../infra/api/apiRequests";
import urls from '../../config/urls.json'
import { AddGraphResponse } from "./responses/addGraphResponse";
import { RemoveGraphResponse } from "./responses/removeGraphResponse";
import { ModifySettingsRoleResponse } from "./responses/modifySettingsRoleResponse";

export class ApiCalls{

Expand All @@ -16,4 +17,10 @@ export class ApiCalls{
const jsonData = await result.json();
return jsonData
}

async modifySettingsRole(roleName: string, roleValue : string, data? :any): Promise<ModifySettingsRoleResponse>{
const result = await postRequest(urls.api.settingsConfig + roleName + "&value=" + roleValue, data)
const jsonData = await result.json();
return jsonData
}
}
3 changes: 3 additions & 0 deletions e2e/logic/api/responses/modifySettingsRoleResponse.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export interface ModifySettingsRoleResponse {
config: string;
}
37 changes: 37 additions & 0 deletions e2e/tests/settingsConfig.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { expect, test } from "@playwright/test";
import urls from '../config/urls.json'
import { roles } from '../config/roles.json'
import BrowserWrapper from "../infra/ui/browserWrapper";
import SettingsConfigPage from "../logic/POM/settingsConfigPage";
import { ApiCalls } from "../logic/api/apiCalls";

test.describe('Settings Tests', () => {
let browser : BrowserWrapper;

test.beforeAll(async () => {
browser = new BrowserWrapper();
})

test.afterAll(async () => {
await browser.closeBrowser();
})

const inputData = [
{ input: 'aa', description: "invalid input - character", expected: false},
{ input: "-3", description: "invalid input - negative number", expected: false},
{ input: "0", description: "invalid input - zero value", expected: false},
{ input: "12", description: "without lowercase letters", expected: true},

];

inputData.forEach(({ input, description, expected }) => {
test(`Modify ${roles.maxQueuedQueries} via API validation via UI: Input value: ${input} description: ${description}`, async () => {
const settingsConfigPage = await browser.createNewPage(SettingsConfigPage, urls.settingsUrl)
const apiCall = new ApiCalls()
await apiCall.modifySettingsRole(roles.maxQueuedQueries, input)
await settingsConfigPage.refreshPage()
const value = await settingsConfigPage.getRoleContentValue(roles.maxQueuedQueries)
expect(value === input).toBe(expected)
});
})
})

0 comments on commit 0ef68f4

Please sign in to comment.