import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__ from "react/jsx-runtime";
import "react";
import * as __WEBPACK_EXTERNAL_MODULE__tachybase_client__ from "@tachybase/client";
import * as __WEBPACK_EXTERNAL_MODULE__tachybase_test_client__ from "@tachybase/test/client";
var collections_namespaceObject = JSON.parse('[{"key":"h7b9i8khc3q","name":"users","inherit":false,"hidden":false,"description":null,"category":[],"namespace":"users.users","duplicator":{"dumpable":"optional","with":"rolesUsers"},"sortable":"sort","model":"UserModel","createdBy":true,"updatedBy":true,"logging":true,"from":"db2cm","title":"{{t(\\"Users\\")}}","rawTitle":"{{t(\\"Users\\")}}","fields":[{"uiSchema":{"type":"number","title":"{{t(\\"ID\\")}}","x-component":"InputNumber","x-read-pretty":true,"rawTitle":"{{t(\\"ID\\")}}"},"key":"ffp1f2sula0","name":"id","type":"bigInt","interface":"id","description":null,"collectionName":"users","parentKey":null,"reverseKey":null,"autoIncrement":true,"primaryKey":true,"allowNull":false},{"uiSchema":{"type":"string","title":"{{t(\\"Nickname\\")}}","x-component":"Input","rawTitle":"{{t(\\"Nickname\\")}}"},"key":"vrv7yjue90g","name":"nickname","type":"string","interface":"input","description":null,"collectionName":"users","parentKey":null,"reverseKey":null},{"uiSchema":{"type":"string","title":"{{t(\\"Username\\")}}","x-component":"Input","x-validator":{"username":true},"required":true,"rawTitle":"{{t(\\"Username\\")}}"},"key":"2ccs6evyrub","name":"username","type":"string","interface":"input","description":null,"collectionName":"users","parentKey":null,"reverseKey":null,"unique":true},{"uiSchema":{"type":"string","title":"{{t(\\"Email\\")}}","x-component":"Input","x-validator":"email","required":true,"rawTitle":"{{t(\\"Email\\")}}"},"key":"rrskwjl5wt1","name":"email","type":"string","interface":"email","description":null,"collectionName":"users","parentKey":null,"reverseKey":null,"unique":true},{"key":"t09bauwm0wb","name":"roles","type":"belongsToMany","interface":"m2m","description":null,"collectionName":"users","parentKey":null,"reverseKey":null,"target":"roles","foreignKey":"userId","otherKey":"roleName","onDelete":"CASCADE","sourceKey":"id","targetKey":"name","through":"rolesUsers","uiSchema":{"type":"array","title":"{{t(\\"Roles\\")}}","x-component":"AssociationField","x-component-props":{"multiple":true,"fieldNames":{"label":"title","value":"name"}}}},{"key":"1pz0art9mt7","name":"f_n2fu6hvprct","type":"string","interface":"select","description":null,"collectionName":"t_vwpds9fs4xs","parentKey":null,"reverseKey":null,"uiSchema":{"enum":[{"value":"test1","label":"test1"},{"value":"test2","label":"test2"}],"type":"string","x-component":"Select","title":"test"}}]},{"key":"pqnenvqrzxr","name":"roles","inherit":false,"hidden":false,"description":null,"category":[],"namespace":"acl.acl","duplicator":{"dumpable":"required","with":"uiSchemas"},"autoGenId":false,"model":"RoleModel","filterTargetKey":"name","sortable":true,"from":"db2cm","title":"{{t(\\"Roles\\")}}","rawTitle":"{{t(\\"Roles\\")}}","fields":[{"uiSchema":{"type":"string","title":"{{t(\\"Role UID\\")}}","x-component":"Input","rawTitle":"{{t(\\"Role UID\\")}}"},"key":"jbz9m80bxmp","name":"name","type":"uid","interface":"input","description":null,"collectionName":"roles","parentKey":null,"reverseKey":null,"prefix":"r_","primaryKey":true},{"uiSchema":{"type":"string","title":"{{t(\\"Role name\\")}}","x-component":"Input","rawTitle":"{{t(\\"Role name\\")}}"},"key":"faywtz4sf3u","name":"title","type":"string","interface":"input","description":null,"collectionName":"roles","parentKey":null,"reverseKey":null,"unique":true,"translation":true},{"key":"1enkovm9sye","name":"description","type":"string","interface":null,"description":null,"collectionName":"roles","parentKey":null,"reverseKey":null}]}]');
function renderApp(Demo) {
    let props = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
    const app = new __WEBPACK_EXTERNAL_MODULE__tachybase_client__.Application({
        dataSourceManager: {
            collections: collections_namespaceObject,
            dataSources: [
                {
                    key: 'a',
                    displayName: 'a',
                    collections: collections_namespaceObject
                }
            ]
        }
    });
    const schema = {
        name: 'root',
        type: 'void',
        'x-component': 'Demo',
        'x-decorator': 'AssociationProvider',
        'x-decorator-props': props
    };
    return (0, __WEBPACK_EXTERNAL_MODULE__tachybase_test_client__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
        "data-testid": "app",
        children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)(__WEBPACK_EXTERNAL_MODULE__tachybase_client__.SchemaComponentProvider, {
            designable: true,
            children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)(__WEBPACK_EXTERNAL_MODULE__tachybase_client__.DataSourceApplicationProvider, {
                dataSourceManager: app.dataSourceManager,
                children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)(__WEBPACK_EXTERNAL_MODULE__tachybase_client__.SchemaComponent, {
                    schema: schema,
                    components: {
                        Demo,
                        AssociationProvider: __WEBPACK_EXTERNAL_MODULE__tachybase_client__.AssociationProvider
                    }
                })
            })
        })
    }));
}
describe('AssociationProvider', ()=>{
    test('should render', ()=>{
        const Demo = ()=>{
            const collection = (0, __WEBPACK_EXTERNAL_MODULE__tachybase_client__.useCollection)();
            const parentCollection = (0, __WEBPACK_EXTERNAL_MODULE__tachybase_client__.useParentCollection)();
            const collectionFiled = (0, __WEBPACK_EXTERNAL_MODULE__tachybase_client__.useCollectionField)();
            return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsxs)(__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.Fragment, {
                children: [
                    /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
                        "data-testid": "collection",
                        children: collection.name
                    }),
                    /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
                        "data-testid": "parent-collection",
                        children: parentCollection.name
                    }),
                    /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
                        "data-testid": "field",
                        children: collectionFiled.name
                    })
                ]
            });
        };
        renderApp(Demo, {
            name: 'users.roles'
        });
        expect(__WEBPACK_EXTERNAL_MODULE__tachybase_test_client__.screen.getByTestId('collection')).toHaveTextContent('roles');
        expect(__WEBPACK_EXTERNAL_MODULE__tachybase_test_client__.screen.getByTestId('parent-collection')).toHaveTextContent('users');
        expect(__WEBPACK_EXTERNAL_MODULE__tachybase_test_client__.screen.getByTestId('field')).toHaveTextContent('roles');
    });
    test('should render with dataSource', ()=>{
        const Demo = ()=>{
            const collection = (0, __WEBPACK_EXTERNAL_MODULE__tachybase_client__.useCollection)();
            const parentCollection = (0, __WEBPACK_EXTERNAL_MODULE__tachybase_client__.useParentCollection)();
            const collectionFiled = (0, __WEBPACK_EXTERNAL_MODULE__tachybase_client__.useCollectionField)();
            return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsxs)(__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.Fragment, {
                children: [
                    /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
                        "data-testid": "collection",
                        children: collection.name
                    }),
                    /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
                        "data-testid": "parent-collection",
                        children: parentCollection.name
                    }),
                    /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
                        "data-testid": "field",
                        children: collectionFiled.name
                    })
                ]
            });
        };
        renderApp(Demo, {
            name: 'users.roles',
            dataSource: 'a'
        });
        expect(__WEBPACK_EXTERNAL_MODULE__tachybase_test_client__.screen.getByTestId('collection')).toHaveTextContent('roles');
        expect(__WEBPACK_EXTERNAL_MODULE__tachybase_test_client__.screen.getByTestId('parent-collection')).toHaveTextContent('users');
        expect(__WEBPACK_EXTERNAL_MODULE__tachybase_test_client__.screen.getByTestId('field')).toHaveTextContent('roles');
    });
    test('not exists, should render `CollectionDeletedPlaceholder`', ()=>{
        const Demo = ()=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx)("div", {
                children: "Demo"
            });
        renderApp(Demo, {
            name: 'users.not-exists'
        });
        expect(document.body.innerHTML).toContain('ant-result');
    });
});
