Budibase is an open-source low-code platform for creating internal apps in minutes. Supports PostgreSQL, MySQL, MSSQL, MongoDB, Rest API, Docker, K8s 🚀
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
2.0 KiB

import {
searchAllComponents,
getExactComponent,
getAncestorProps,
} from "../src/components/userInterface/pagesParsing/searchComponents"
import { componentsAndScreens } from "./testData"
describe("searchAllComponents", () => {
it("should match component by name", () => {
const results = searchAllComponents(
componentsAndScreens().components,
"Textbox"
)
expect(results.length).toBe(1)
expect(results[0].name).toBe("budibase-components/TextBox")
})
it("should match component by tag", () => {
const results = searchAllComponents(
componentsAndScreens().components,
"record"
)
expect(results.length).toBe(1)
expect(results[0].name).toBe("budibase-components/RecordView")
})
})
describe("getExactComponent", () => {
it("should get component by name", () => {
const { components, screens } = componentsAndScreens()
const result = getExactComponent(
[...components, ...screens],
"common/SmallTextbox"
)
expect(result).toBeDefined()
expect(result.name).toBe("common/SmallTextbox")
})
it("should return nothing when no result (should not fail)", () => {
const { components, screens } = componentsAndScreens()
const result = getExactComponent([...components, ...screens], "bla/bla/bla")
expect(result).not.toBeDefined()
})
})
describe("getAncestorProps", () => {
it("should return props of root component", () => {
const result = getAncestorProps(
componentsAndScreens().components,
"budibase-components/TextBox"
)
expect(result).toEqual([componentsAndScreens().components[0].props])
})
it("should return props of inherited and current component, in order", () => {
const { components, screens } = componentsAndScreens()
const allComponentsAndScreens = [...components, ...screens]
const result = getAncestorProps(
allComponentsAndScreens,
"common/PasswordBox"
)
expect(result).toEqual([
allComponentsAndScreens[0].props,
{ ...allComponentsAndScreens[5].props },
])
})
})