118 lines
2.7 KiB
JavaScript
118 lines
2.7 KiB
JavaScript
|
import fetchbindableProperties from "../src/builderStore/fetchBindableProperties"
|
||
|
|
||
|
describe("fetch bindable properties", () => {
|
||
|
|
||
|
it("should return bindable properties from screen components", () => {
|
||
|
const result = fetchbindableProperties({
|
||
|
componentInstanceId: "heading-id",
|
||
|
...testData()
|
||
|
})
|
||
|
const componentBinding = result.find(r => r.instance._id === "search-input-id")
|
||
|
expect(componentBinding).toBeDefined()
|
||
|
expect(componentBinding.type).toBe("instance")
|
||
|
expect(componentBinding.runtimeBinding).toBe("state.search-input-id.value")
|
||
|
})
|
||
|
|
||
|
it("should not return bindable components when not in their context", () => {
|
||
|
|
||
|
})
|
||
|
|
||
|
it("should return model schema, when inside a context", () => {
|
||
|
|
||
|
})
|
||
|
|
||
|
it("should return model schema, for grantparent context", () => {
|
||
|
|
||
|
})
|
||
|
|
||
|
it("should return bindable component props, from components in same context", () => {
|
||
|
|
||
|
})
|
||
|
|
||
|
it("should not return model props from child context", () => {
|
||
|
|
||
|
})
|
||
|
|
||
|
|
||
|
|
||
|
})
|
||
|
|
||
|
const testData = () => {
|
||
|
|
||
|
const screen = {
|
||
|
instanceName: "test screen",
|
||
|
name: "screen-id",
|
||
|
route: "/",
|
||
|
props: {
|
||
|
_id:"screent-root-id",
|
||
|
_component: "@budibase/standard-components/container",
|
||
|
_children: [
|
||
|
{
|
||
|
_id: "heading-id",
|
||
|
_instanceName: "list item heading",
|
||
|
_component: "@budibase/standard-components/heading",
|
||
|
text: "Screen Title"
|
||
|
},
|
||
|
{
|
||
|
_id: "search-input-id",
|
||
|
_instanceName: "Search Input",
|
||
|
_component: "@budibase/standard-components/input",
|
||
|
value: "search phrase"
|
||
|
},
|
||
|
{
|
||
|
_id: "list-id",
|
||
|
_component: "@budibase/standard-components/list",
|
||
|
_instanceName: "list-name",
|
||
|
model: "test-model-id",
|
||
|
_children: [
|
||
|
{
|
||
|
_id: "list-item-heading-id",
|
||
|
_instanceName: "list item heading",
|
||
|
_component: "@budibase/standard-components/heading",
|
||
|
text: "hello"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const models = [{
|
||
|
id: "test-model-id",
|
||
|
name: "Test Model",
|
||
|
schema: {
|
||
|
name: {
|
||
|
type: "string"
|
||
|
},
|
||
|
description: {
|
||
|
type: "string"
|
||
|
}
|
||
|
}
|
||
|
}]
|
||
|
|
||
|
const components = {
|
||
|
"@budibase/standard-components/container" : {
|
||
|
props: {},
|
||
|
},
|
||
|
"@budibase/standard-components/list" : {
|
||
|
context: "model",
|
||
|
props: {
|
||
|
model: "string"
|
||
|
},
|
||
|
},
|
||
|
"@budibase/standard-components/input" : {
|
||
|
bindable: "value",
|
||
|
props: {
|
||
|
value: "string"
|
||
|
},
|
||
|
},
|
||
|
"@budibase/standard-components/heading" : {
|
||
|
props: {
|
||
|
text: "string"
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
return { screen, models, components }
|
||
|
|
||
|
}
|