ApiLogicServer 15.1.3__py3-none-any.whl → 15.2.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- api_logic_server_cli/api_logic_server.py +20 -17
- api_logic_server_cli/api_logic_server_info.yaml +3 -3
- api_logic_server_cli/cli.py +17 -2
- api_logic_server_cli/create_from_model/dbml.py +1 -1
- api_logic_server_cli/genai/genai.py +39 -28
- api_logic_server_cli/genai/genai_react_app.py +23 -1
- api_logic_server_cli/genai/genai_svcs.py +5 -3
- api_logic_server_cli/prototypes/base/.github/.copilot-instructions.md +186 -4
- api_logic_server_cli/prototypes/base/.vscode/launch.json +1 -1
- api_logic_server_cli/prototypes/base/api/system/api_utils.py +7 -3
- api_logic_server_cli/prototypes/base/config/config.py +1 -1
- api_logic_server_cli/prototypes/base/docs/training/readme_training.md +3 -0
- api_logic_server_cli/prototypes/base/docs/training/testing.md +791 -0
- api_logic_server_cli/prototypes/base/logic/declare_logic.py +4 -2
- api_logic_server_cli/prototypes/base/logic/logic_discovery/use_case.py +2 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/AI-Generated-Tests-from-Rules.md +559 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/behave_logic_report.py +64 -9
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/behave_logic_report.py.bak +285 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/check_step_order.py +120 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/features/steps/test_data_helpers.py +242 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/features/steps/test_utils.py +5 -1
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +15 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +10 -66
- api_logic_server_cli/prototypes/base/test/readme_test.md +72 -4
- api_logic_server_cli/prototypes/basic_demo/customizations/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +35 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +35 -0
- api_logic_server_cli/prototypes/basic_demo/iteration/api/api_discovery/order_b2b.py +22 -18
- api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/README.md +3 -1
- api_logic_server_cli/prototypes/manager/.github/.copilot-instructions.md +30 -9
- api_logic_server_cli/prototypes/manager/.github/sync-to-dev-src.sh +42 -0
- api_logic_server_cli/prototypes/manager/.vscode/launch.json +30 -30
- api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.github/.copilot-instructions.md +164 -4
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/docs/db.dbml +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/docs/training/readme_training.md +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/docs/training/testing.md +791 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/AI-Generated-Tests-from-Rules.md +554 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/behave_logic_report.py +211 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/behave_logic_report.py.bak +282 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/features/order_processing.feature +72 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/features/steps/about_steps.py +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/features/steps/order_processing_steps.py +553 -0
- api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/features/steps/test_utils.py +5 -1
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/behave.log +79 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Add_Item_Exceeding_Credit.log +8 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Assign_Product_to_Item.log +26 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_10_Gadget.log +46 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_10_carbon_neu.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_1_Green.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_5_Widget.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_Placement.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Balance_Check.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Carbon_Neutral_B2B_Order.log +52 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Carbon_Neutral_Discount_A.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Item_Product.log +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Item_Product_to_Ga.log +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Order_Customer_Adj.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Order_Customer_to_.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Product_Updates_Un.log +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Multi-Item_Order.log +79 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Order_for_Constrai.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Order_for_FK_Chang.log +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Order_for_Shipping.log +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Shipped_Order.log +54 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Test_Customer.log +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Test_Order.log +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Credit_Limit_Constraint_T.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Customer_Change.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Delete_First_Item.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Delete_Item_Reduces_Order.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Exceed_Credit_Limit_Rejec.log +46 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Good_Order_Placed_via_B2B.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Deletion.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Quantity_Update.log +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Quantity_Update_Reca.log +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Quantity_Update_to_1.log +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Order_Customer_Change.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Order_Shipping.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Order_Unshipping.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Product_Change.log +26 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Product_Unit_Price_Copied.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Diana_for_Constrain.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Item_for_Product_Ch.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Item_for_Unit_Price.log +30 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_10_Widget.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_2_Gadget.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_2_Widget.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_3_Widget_+_.log +57 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_3_Widget_an.log +12 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_5_Gadget.log +56 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_5_Widget.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_for_Alice.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_for_Bob.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Shipped_Order.log +52 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Unshipped_Order.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Ship_Order.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Ship_Order_Excludes_from_.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/System_Ready.log +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Test_Order_Setup_-_1_Item.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Test_Order_Setup_-_2_Item.log +76 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Transaction_Processing.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Unship_Order.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Unship_Order_Includes_in_.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Charlie_Balance.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Customer_Balance.log +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Diana_Balance.log +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Item_Amount.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Order_Total.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Unit_Price_Copy.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/reports/Behave Logic Report.md +303 -0
- api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/readme_test.md +72 -4
- api_logic_server_cli/prototypes/manager/samples/readme_samples.md +1 -1
- api_logic_server_cli/prototypes/manager/system/ApiLogicServer-Internal-Dev/copilot-dev-context.md +185 -0
- api_logic_server_cli/prototypes/manager/system/app_model_editor/test/api_logic_server_behave/behave_logic_report.py +13 -75
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_docs_logic/test/api_logic_server_behave/behave_logic_report.py +13 -75
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_docs_logic/test/api_logic_server_behave/behave_logic_report.py.bak +256 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/sqlite_inserts_model_test_hints_with_relns.prompt +94 -0
- api_logic_server_cli/prototypes/nw/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +17 -0
- api_logic_server_cli/prototypes/nw/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +17 -0
- api_logic_server_cli/prototypes/nw/test/readme_test_nw.md +333 -92
- apilogicserver-15.2.3.dist-info/METADATA +577 -0
- {apilogicserver-15.1.3.dist-info → apilogicserver-15.2.3.dist-info}/RECORD +624 -537
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/db.dbml +0 -14
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/about.py +0 -20
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/logs/behave.log +0 -0
- apilogicserver-15.1.3.dist-info/METADATA +0 -169
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/For_VSCode.dockerfile +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/devcontainer.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/setup.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.env +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.gitignore +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/ApiLogicServer.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/Report_Behave_Logic.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/Run_Behave.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/Windows_Run_Behave.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/run___No_Security.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/run_docker.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.vscode/launch.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.vscode/settings.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.vscode/venv_init.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/_config.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/_layouts/redirect.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/auto_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/mcp_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/mcp_expose_api_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/new_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/newer_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/ontimize_api.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/order_b2b_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/system.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/customize_api.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/expose_api_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/json_encoder.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/readme_customize_api.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/api_utils.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/custom_endpoint.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/expression_parser.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/gen_csv_report.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/gen_pdf_report.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/opt_locking/opt_locking.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/opt_locking/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api_logic_server_run.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/activate_logicbank.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/config.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/default.env +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/logging-reduced.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/logging.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/mypy.ini +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/server_setup.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/api/api_discovery/openapi.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/config/default.env +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/database/db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/database/models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/docs/mcp_learning/mcp_discovery.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/cocktail-napkin.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/declare_logic.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/logic_discovery/email_request.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/logic_discovery/simple_constraints.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/security/declare_security.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/admin/admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/admin/home.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/README_create_react_app.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/logo192.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/logo512.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/manifest.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/robots.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/App.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/App.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/App.test.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Config-reference.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Config.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Customer-reference.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Customer.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Item.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Order.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Product.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/SysEmail.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/SysMcp.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/app_loader.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/index.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/index.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/logo.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.eslintrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.yarnrc.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.test.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/styles.module.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/reportWebVitals.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/setupTests.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/alembic_run.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/env.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/readme_alembic.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/script.py.mako +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/versions/ae6a5c2fdc47_autogenerated.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/versions/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic.ini +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/authentication_db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/bind_dbs.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/customize_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/database_discovery/authentication_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/database_discovery/auto_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/db_debug/db_debug.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/mcp_db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/mcp_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/system/SAFRSBaseX.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/alp_init.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/response2code.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/test_data_preamble.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/auth-db/authdb_mysql.Dockerfile +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/auth-db/authdb_mysql.sql +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/auth-db/authdb_postgres.sql +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-compose-dev-azure/azure-deploy.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-compose-dev-local/docker-compose-dev-local.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-compose-dev-local/docker-compose.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/build_image.dockerfile +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/build_image.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/env.list +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/run_image.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-standard-image/docker-compose-standard-image.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-standard-image/env.list +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/h2/keycloakdb.mv.db +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/h2/keycloakdb.trace.db +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/kcals-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/kcals-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/master-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/master-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/tmp/kc-gzip-cache/nnbna/js/keycloak.js.gz +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/docker-compose-dev-network.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/docker-compose-nginx.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/docker-compose.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/kcals-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/kcals-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/master-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/master-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/nginx/cert.pem +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/nginx/key.pem +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/nginx/nginx.conf +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/startup_log_nginx.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/startup_log_no_nginx.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/unused/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/unused/unused-docker-compose-keycloak.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/python-anywhere/python_anywhere_wsgi.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/readme-devops.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/graphics/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/logic/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/logic_suggestions/readme_logic_suggestions.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/mcp_learning/mcp.prompt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/mcp_learning/mcp_schema.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/models-not-code.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/runtime engines.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/system-creation-vibe.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/admin_app_1_context.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/admin_app_2_functionality.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/admin_app_3_architecture.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/logic_bank_api.prompt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/logic_example.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/react_map.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/react_tree.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/kafka/kafka_consumer.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/kafka/kafka_producer.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/kafka/kafka_readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_context_results.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_discovery_response.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_request.prompt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_schema.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_tool_context_response.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_tool_context_response_get.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/mcp_client_executor.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/mcp_server_discovery.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/readme-mcp.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/n8n/N8N_WebHook_from_ApiLogicServer.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/n8n/n8n_producer.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/n8n/n8n_readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/row_dict_maps/OrderB2BMapper.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/row_dict_maps/row_dict_maps_readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/system/FlaskKafka.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/system/RowDictMapper.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/api/api_discovery/order_b2b.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/database/db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/docs/er_diagram.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/integration/row_dict_maps/OrderB2B.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/integration/row_dict_maps/OrderShipping.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/logic/declare_logic.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/ui/admin/admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/declarative-vs-procedural-comparison.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/declare_logic.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/load_verify_rules.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/app_integration.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/auto_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/check_credit.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/mcp_client_executor_request.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/readme_logic_discovery.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/use_case.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/procedural/credit_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/procedural/declarative-vs-procedural-comparison.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/procedural/declarative-vs-procedural-comparison.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/readme_logic.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme_project.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme_standard.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme_vibe.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/requirements.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/run.ps1 +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/run.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/abstract_authentication_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/keycloak/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/memory/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/memory/auth_provider_no_swagger.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/sql/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/declare_security.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/readme_security.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/system/authentication.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/system/authorization.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/system/custom_swagger.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/behave_run.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/features/about.feature +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/reports/Behave Logic Report Sample.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/basic/server_test.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/admin_loader.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/authentication_admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/home.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/mcp_admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.browserslistrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.dockerignore +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.editorconfig +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.eslintrc.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.gitignore +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/angular.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/app_model.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/docker-compose-ontimize.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/protractor.conf.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/src/app.e2e-spec.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/src/app.po.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/tsconfig.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/karma.conf.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/nginx/nginx.conf +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/ngsw-config.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.spec.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.config.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.theme.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/Customer-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/Customer.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/detail/Customer-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/detail/Customer-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/detail/Customer-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/home/Customer-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/home/Customer-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/home/Customer-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/new/Customer-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/new/Customer-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/new/Customer-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/Item-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/Item.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/detail/Item-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/detail/Item-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/detail/Item-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/home/Item-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/home/Item-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/home/Item-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/new/Item-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/new/Item-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/new/Item-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/Order-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/Order.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/detail/Order-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/detail/Order-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/detail/Order-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/home/Order-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/home/Order-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/home/Order-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/new/Order-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/new/Order-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/new/Order-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/Product-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/Product.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/detail/Product-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/detail/Product-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/detail/Product-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/home/Product-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/home/Product-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/home/Product-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/new/Product-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/new/Product-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/new/Product-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.theme.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main-theme.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Customer-card/Customer-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Customer-card/Customer-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Customer-card/Customer-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Item-card/Item-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Item-card/Item-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Item-card/Item-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Order-card/Order-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Order-card/Order-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Order-card/Order-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Product-card/Product-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Product-card/Product-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Product-card/Product-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/app.menu.config.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/app.services.config.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/constant.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/shared.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/.gitkeep +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/css/app.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/css/loader.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/i18n/en.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/i18n/es.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize128.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize16.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize256.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize32.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize48.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize64.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize72.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize96.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/github.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/login_bg.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/no-image-transparent.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/no-image.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/ontimize.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/ontimize_web_log.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-closed.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-closed.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-opened.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-opened.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/user_profile.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/js/domchange.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/js/keyboard.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/environments/environment.prod.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/environments/environment.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/main.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/manifest.webmanifest +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/polyfills.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/styles.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/test.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/tsconfig.app.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/tsconfig.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/tsconfig.spec.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/andrew.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/anne.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/janet.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/laura.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/margaret.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/michael.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/nancy.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/robert.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/steven.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/beverages.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/cereals.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/condiments.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/confections.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/diary.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/meat.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/produce.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/seafood.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/README_create_react_app.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/logo192.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/logo512.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/manifest.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/robots.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/App.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/App.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/App.test.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Config.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Customer.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Item.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Order.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Product.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/app_loader.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/index.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/index.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/logo.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/.eslintrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/.yarnrc.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/default-settings.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/default-settings.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/errors.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/errors.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/index.test.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/index.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/styles.module.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/reportWebVitals.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/setupTests.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/README_create_react_app.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/product-cards.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/logo192.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/logo512.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/manifest.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/robots.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/App.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/App.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/App.test.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Config.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Customer.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Item.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Order.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Product.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/app_loader.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/index.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/index.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/logo.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/.eslintrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/.yarnrc.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/index.test.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/index.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/styles.module.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/reportWebVitals.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/setupTests.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/templates/bar_chart.jinja +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/templates/content.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/py.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/readme_venv.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/requirements-no-cli.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/venv-linux.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/venv.ps1 +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/venv.sh +0 -0
- /api_logic_server_cli/prototypes/manager/system/{install-ApiLogicServer-dev → ApiLogicServer-Internal-Dev}/install-ApiLogicServer-dev.ps1 +0 -0
- /api_logic_server_cli/prototypes/manager/system/{install-ApiLogicServer-dev → ApiLogicServer-Internal-Dev}/install-ApiLogicServer-dev.sh +0 -0
- /api_logic_server_cli/prototypes/manager/system/{install-ApiLogicServer-dev → ApiLogicServer-Internal-Dev}/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/{samples/basic_demo/test/api_logic_server_behave/behave_logic_report.py → system/app_model_editor/test/api_logic_server_behave/behave_logic_report.py.bak} +0 -0
- {apilogicserver-15.1.3.dist-info → apilogicserver-15.2.3.dist-info}/WHEEL +0 -0
- {apilogicserver-15.1.3.dist-info → apilogicserver-15.2.3.dist-info}/entry_points.txt +0 -0
- {apilogicserver-15.1.3.dist-info → apilogicserver-15.2.3.dist-info}/licenses/LICENSE +0 -0
- {apilogicserver-15.1.3.dist-info → apilogicserver-15.2.3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Step implementations for Order Processing tests
|
|
3
|
+
Following Phase 2 (Custom API) + Phase 1 (CRUD) patterns
|
|
4
|
+
"""
|
|
5
|
+
from behave import *
|
|
6
|
+
import requests
|
|
7
|
+
import test_utils
|
|
8
|
+
import time
|
|
9
|
+
from decimal import Decimal
|
|
10
|
+
|
|
11
|
+
BASE_URL = 'http://localhost:5656'
|
|
12
|
+
|
|
13
|
+
def get_headers():
|
|
14
|
+
"""Return auth headers - empty since SECURITY_ENABLED=False"""
|
|
15
|
+
return {}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# ============================================================================
|
|
19
|
+
# GIVEN Steps - Setup test data (Rule #0: Always create fresh with timestamps)
|
|
20
|
+
# ============================================================================
|
|
21
|
+
|
|
22
|
+
@given('Customer "{customer_name}" with balance {balance:d} and credit limit {limit:d}')
|
|
23
|
+
def step_impl(context, customer_name, balance, limit):
|
|
24
|
+
"""Create fresh customer with timestamp for uniqueness (Rule #0)"""
|
|
25
|
+
unique_name = f"{customer_name} {int(time.time() * 1000)}"
|
|
26
|
+
|
|
27
|
+
post_uri = f'{BASE_URL}/api/Customer/'
|
|
28
|
+
post_data = {
|
|
29
|
+
"data": {
|
|
30
|
+
"type": "Customer",
|
|
31
|
+
"attributes": {
|
|
32
|
+
"name": unique_name,
|
|
33
|
+
"balance": balance, # Will be replaced by sum of orders
|
|
34
|
+
"credit_limit": limit
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
r = requests.post(url=post_uri, json=post_data, headers=get_headers())
|
|
40
|
+
assert r.status_code == 201, f"Failed to create customer: {r.text}"
|
|
41
|
+
|
|
42
|
+
customer_id = int(r.json()['data']['id'])
|
|
43
|
+
|
|
44
|
+
# Track customer mapping for multi-customer tests (Rule #8)
|
|
45
|
+
if not hasattr(context, 'customer_map'):
|
|
46
|
+
context.customer_map = {}
|
|
47
|
+
context.customer_map[customer_name] = {
|
|
48
|
+
'id': customer_id,
|
|
49
|
+
'unique_name': unique_name
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
# Set primary customer for single-customer scenarios
|
|
53
|
+
context.customer_id = customer_id
|
|
54
|
+
context.customer_name = unique_name
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# ============================================================================
|
|
58
|
+
# Order Setup Steps - SPECIFIC patterns MUST come BEFORE general (Rule #0.5)
|
|
59
|
+
# ============================================================================
|
|
60
|
+
|
|
61
|
+
@given('Order exists for "{customer_name}" with {qty1:d} {product1:S} and {qty2:d} {product2:S}')
|
|
62
|
+
def step_impl(context, customer_name, qty1, product1, qty2, product2):
|
|
63
|
+
"""Create order with multiple items (Phase 2)"""
|
|
64
|
+
scenario_name = f'Setup Order - {qty1} {product1} + {qty2} {product2}'
|
|
65
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
66
|
+
|
|
67
|
+
customer_info = context.customer_map.get(customer_name)
|
|
68
|
+
|
|
69
|
+
add_order_uri = f'{BASE_URL}/api/ServicesEndPoint/OrderB2B'
|
|
70
|
+
add_order_args = {
|
|
71
|
+
"meta": {
|
|
72
|
+
"method": "OrderB2B",
|
|
73
|
+
"args": {
|
|
74
|
+
"order": {
|
|
75
|
+
"Account": customer_info['unique_name'],
|
|
76
|
+
"Notes": "Multi-item test order",
|
|
77
|
+
"Items": [
|
|
78
|
+
{"Name": product1, "QuantityOrdered": qty1},
|
|
79
|
+
{"Name": product2, "QuantityOrdered": qty2}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
r = requests.post(url=add_order_uri, json=add_order_args, headers=get_headers())
|
|
87
|
+
context.order_created = (r.status_code == 200)
|
|
88
|
+
|
|
89
|
+
if context.order_created:
|
|
90
|
+
# Get order and items
|
|
91
|
+
customer_id = customer_info['id']
|
|
92
|
+
orders_uri = f'{BASE_URL}/api/Order/?filter[customer_id]={customer_id}'
|
|
93
|
+
r_orders = requests.get(url=orders_uri, headers=get_headers())
|
|
94
|
+
orders = r_orders.json()['data']
|
|
95
|
+
|
|
96
|
+
if orders:
|
|
97
|
+
latest_order = orders[-1]
|
|
98
|
+
context.order_id = int(latest_order['id'])
|
|
99
|
+
|
|
100
|
+
# Get items
|
|
101
|
+
items_uri = f'{BASE_URL}/api/Item/?filter[order_id]={context.order_id}'
|
|
102
|
+
r_items = requests.get(url=items_uri, headers=get_headers())
|
|
103
|
+
items = r_items.json()['data']
|
|
104
|
+
if items:
|
|
105
|
+
context.item_ids = [int(item['id']) for item in items]
|
|
106
|
+
context.item_id = context.item_ids[0] # First item
|
|
107
|
+
else:
|
|
108
|
+
context.item_id = None
|
|
109
|
+
context.item_ids = []
|
|
110
|
+
else:
|
|
111
|
+
context.order_id = None
|
|
112
|
+
context.item_id = None
|
|
113
|
+
context.item_ids = []
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
@given('Order exists for "{customer_name}" with {quantity:d} {product_name}')
|
|
117
|
+
def step_impl(context, customer_name, quantity, product_name):
|
|
118
|
+
"""Create order using OrderB2B API (Phase 2) - GENERAL pattern"""
|
|
119
|
+
scenario_name = f'Setup Order - {quantity} {product_name}'
|
|
120
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
121
|
+
|
|
122
|
+
customer_info = context.customer_map.get(customer_name)
|
|
123
|
+
if not customer_info:
|
|
124
|
+
raise ValueError(f"Customer {customer_name} not found in context")
|
|
125
|
+
|
|
126
|
+
add_order_uri = f'{BASE_URL}/api/ServicesEndPoint/OrderB2B'
|
|
127
|
+
add_order_args = {
|
|
128
|
+
"meta": {
|
|
129
|
+
"method": "OrderB2B", # CRITICAL: Required for custom API
|
|
130
|
+
"args": {
|
|
131
|
+
"order": {
|
|
132
|
+
"Account": customer_info['unique_name'],
|
|
133
|
+
"Notes": "Test order",
|
|
134
|
+
"Items": [
|
|
135
|
+
{
|
|
136
|
+
"Name": product_name,
|
|
137
|
+
"QuantityOrdered": quantity
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
r = requests.post(url=add_order_uri, json=add_order_args, headers=get_headers())
|
|
146
|
+
context.order_created = (r.status_code == 200)
|
|
147
|
+
|
|
148
|
+
if context.order_created:
|
|
149
|
+
# Custom API returns direct dict, not JSON:API format
|
|
150
|
+
response_data = r.json()
|
|
151
|
+
|
|
152
|
+
# Get order ID by querying back
|
|
153
|
+
customer_id = customer_info['id']
|
|
154
|
+
orders_uri = f'{BASE_URL}/api/Order/?filter[customer_id]={customer_id}'
|
|
155
|
+
r_orders = requests.get(url=orders_uri, headers=get_headers())
|
|
156
|
+
orders = r_orders.json()['data']
|
|
157
|
+
|
|
158
|
+
if orders:
|
|
159
|
+
latest_order = orders[-1] # Get most recent
|
|
160
|
+
context.order_id = int(latest_order['id'])
|
|
161
|
+
|
|
162
|
+
# Get first item
|
|
163
|
+
items_uri = f'{BASE_URL}/api/Item/?filter[order_id]={context.order_id}'
|
|
164
|
+
r_items = requests.get(url=items_uri, headers=get_headers())
|
|
165
|
+
items = r_items.json()['data']
|
|
166
|
+
if items:
|
|
167
|
+
context.item_id = int(items[0]['id'])
|
|
168
|
+
else:
|
|
169
|
+
context.order_id = None
|
|
170
|
+
context.item_id = None
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
@given('Shipped order exists for "{customer_name}" with {quantity:d} {product_name}')
|
|
174
|
+
def step_impl(context, customer_name, quantity, product_name):
|
|
175
|
+
"""Create and ship order"""
|
|
176
|
+
# First create order
|
|
177
|
+
context.execute_steps(f'''
|
|
178
|
+
Given Order exists for "{customer_name}" with {quantity} {product_name}
|
|
179
|
+
''')
|
|
180
|
+
|
|
181
|
+
# Then ship it
|
|
182
|
+
import datetime
|
|
183
|
+
patch_uri = f'{BASE_URL}/api/Order/{context.order_id}/'
|
|
184
|
+
patch_data = {
|
|
185
|
+
"data": {
|
|
186
|
+
"type": "Order",
|
|
187
|
+
"id": context.order_id,
|
|
188
|
+
"attributes": {
|
|
189
|
+
"date_shipped": str(datetime.date.today())
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
r = requests.patch(url=patch_uri, json=patch_data, headers=get_headers())
|
|
195
|
+
assert r.status_code == 200, f"Failed to ship order: {r.text}"
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
# ============================================================================
|
|
199
|
+
# WHEN Steps - Actions (Rule #0.5: Specific patterns BEFORE general ones!)
|
|
200
|
+
# ============================================================================
|
|
201
|
+
|
|
202
|
+
@when('B2B order placed for "{customer_name}" with {quantity:d} carbon neutral {product_name}')
|
|
203
|
+
def step_impl(context, customer_name, quantity, product_name):
|
|
204
|
+
"""
|
|
205
|
+
Phase 2: CREATE using OrderB2B API - Tests carbon neutral discount (10% off when qty >= 10)
|
|
206
|
+
"""
|
|
207
|
+
scenario_name = context.scenario.name
|
|
208
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
209
|
+
|
|
210
|
+
customer_info = context.customer_map.get(customer_name)
|
|
211
|
+
|
|
212
|
+
add_order_uri = f'{BASE_URL}/api/ServicesEndPoint/OrderB2B'
|
|
213
|
+
add_order_args = {
|
|
214
|
+
"meta": {
|
|
215
|
+
"method": "OrderB2B",
|
|
216
|
+
"args": {
|
|
217
|
+
"order": {
|
|
218
|
+
"Account": customer_info['unique_name'],
|
|
219
|
+
"Notes": "Carbon neutral order",
|
|
220
|
+
"Items": [
|
|
221
|
+
{
|
|
222
|
+
"Name": product_name,
|
|
223
|
+
"QuantityOrdered": quantity
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
r = requests.post(url=add_order_uri, json=add_order_args, headers=get_headers())
|
|
232
|
+
context.order_created = (r.status_code == 200)
|
|
233
|
+
|
|
234
|
+
if context.order_created:
|
|
235
|
+
# Get order and item IDs
|
|
236
|
+
customer_id = customer_info['id']
|
|
237
|
+
orders_uri = f'{BASE_URL}/api/Order/?filter[customer_id]={customer_id}'
|
|
238
|
+
r_orders = requests.get(url=orders_uri, headers=get_headers())
|
|
239
|
+
orders = r_orders.json()['data']
|
|
240
|
+
|
|
241
|
+
if orders:
|
|
242
|
+
latest_order = orders[-1]
|
|
243
|
+
context.order_id = int(latest_order['id'])
|
|
244
|
+
|
|
245
|
+
items_uri = f'{BASE_URL}/api/Item/?filter[order_id]={context.order_id}'
|
|
246
|
+
r_items = requests.get(url=items_uri, headers=get_headers())
|
|
247
|
+
items = r_items.json()['data']
|
|
248
|
+
if items:
|
|
249
|
+
context.item_id = int(items[0]['id'])
|
|
250
|
+
else:
|
|
251
|
+
context.order_id = None
|
|
252
|
+
context.item_id = None
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
@when('B2B order placed for "{customer_name}" with {quantity:d} {product_name}')
|
|
256
|
+
def step_impl(context, customer_name, quantity, product_name):
|
|
257
|
+
"""
|
|
258
|
+
Phase 2: CREATE using OrderB2B API - Tests OrderB2B integration, item calculations, and customer balance
|
|
259
|
+
"""
|
|
260
|
+
scenario_name = context.scenario.name
|
|
261
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
262
|
+
|
|
263
|
+
customer_info = context.customer_map.get(customer_name)
|
|
264
|
+
|
|
265
|
+
add_order_uri = f'{BASE_URL}/api/ServicesEndPoint/OrderB2B'
|
|
266
|
+
add_order_args = {
|
|
267
|
+
"meta": {
|
|
268
|
+
"method": "OrderB2B",
|
|
269
|
+
"args": {
|
|
270
|
+
"order": {
|
|
271
|
+
"Account": customer_info['unique_name'],
|
|
272
|
+
"Notes": "Test order",
|
|
273
|
+
"Items": [
|
|
274
|
+
{
|
|
275
|
+
"Name": product_name,
|
|
276
|
+
"QuantityOrdered": quantity
|
|
277
|
+
}
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
r = requests.post(url=add_order_uri, json=add_order_args, headers=get_headers())
|
|
285
|
+
context.order_created = (r.status_code == 200)
|
|
286
|
+
|
|
287
|
+
if context.order_created:
|
|
288
|
+
# Get order and item IDs
|
|
289
|
+
customer_id = customer_info['id']
|
|
290
|
+
orders_uri = f'{BASE_URL}/api/Order/?filter[customer_id]={customer_id}'
|
|
291
|
+
r_orders = requests.get(url=orders_uri, headers=get_headers())
|
|
292
|
+
orders = r_orders.json()['data']
|
|
293
|
+
|
|
294
|
+
if orders:
|
|
295
|
+
latest_order = orders[-1]
|
|
296
|
+
context.order_id = int(latest_order['id'])
|
|
297
|
+
|
|
298
|
+
items_uri = f'{BASE_URL}/api/Item/?filter[order_id]={context.order_id}'
|
|
299
|
+
r_items = requests.get(url=items_uri, headers=get_headers())
|
|
300
|
+
items = r_items.json()['data']
|
|
301
|
+
if items:
|
|
302
|
+
context.item_id = int(items[0]['id'])
|
|
303
|
+
else:
|
|
304
|
+
context.order_id = None
|
|
305
|
+
context.item_id = None
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
@when('Item quantity changed to {qty:d}')
|
|
309
|
+
def step_impl(context, qty):
|
|
310
|
+
"""
|
|
311
|
+
Phase 1: UPDATE using CRUD - Tests formula recalculation and cascading sum updates
|
|
312
|
+
"""
|
|
313
|
+
scenario_name = context.scenario.name
|
|
314
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
315
|
+
|
|
316
|
+
patch_uri = f'{BASE_URL}/api/Item/{context.item_id}/'
|
|
317
|
+
patch_data = {
|
|
318
|
+
"data": {
|
|
319
|
+
"type": "Item",
|
|
320
|
+
"id": context.item_id,
|
|
321
|
+
"attributes": {
|
|
322
|
+
"quantity": qty
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
r = requests.patch(url=patch_uri, json=patch_data, headers=get_headers())
|
|
328
|
+
assert r.status_code == 200, f"Failed to update quantity: {r.text}"
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
@when('Order customer changed to "{new_customer_name}"')
|
|
332
|
+
def step_impl(context, new_customer_name):
|
|
333
|
+
"""
|
|
334
|
+
Phase 1: UPDATE FK - Tests adjustment of BOTH old and new parent customer balances
|
|
335
|
+
"""
|
|
336
|
+
scenario_name = context.scenario.name
|
|
337
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
338
|
+
|
|
339
|
+
new_customer_info = context.customer_map.get(new_customer_name)
|
|
340
|
+
|
|
341
|
+
patch_uri = f'{BASE_URL}/api/Order/{context.order_id}/'
|
|
342
|
+
patch_data = {
|
|
343
|
+
"data": {
|
|
344
|
+
"type": "Order",
|
|
345
|
+
"id": context.order_id,
|
|
346
|
+
"attributes": {
|
|
347
|
+
"customer_id": new_customer_info['id'] # Rule #2: Direct FK
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
r = requests.patch(url=patch_uri, json=patch_data, headers=get_headers())
|
|
353
|
+
assert r.status_code == 200, f"Failed to change customer: {r.text}"
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
@when('First item deleted')
|
|
357
|
+
def step_impl(context):
|
|
358
|
+
"""
|
|
359
|
+
Phase 1: DELETE - Tests aggregate down and cascade to customer balance
|
|
360
|
+
"""
|
|
361
|
+
scenario_name = context.scenario.name
|
|
362
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
363
|
+
|
|
364
|
+
delete_uri = f'{BASE_URL}/api/Item/{context.item_id}/'
|
|
365
|
+
r = requests.delete(url=delete_uri, headers=get_headers())
|
|
366
|
+
assert r.status_code == 204, f"Failed to delete item: {r.text}"
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
@when('Order is shipped')
|
|
370
|
+
def step_impl(context):
|
|
371
|
+
"""
|
|
372
|
+
Phase 1: UPDATE - Tests WHERE clause exclusion (shipped orders don't count in balance)
|
|
373
|
+
"""
|
|
374
|
+
scenario_name = context.scenario.name
|
|
375
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
376
|
+
|
|
377
|
+
import datetime
|
|
378
|
+
patch_uri = f'{BASE_URL}/api/Order/{context.order_id}/'
|
|
379
|
+
patch_data = {
|
|
380
|
+
"data": {
|
|
381
|
+
"type": "Order",
|
|
382
|
+
"id": context.order_id,
|
|
383
|
+
"attributes": {
|
|
384
|
+
"date_shipped": str(datetime.date.today())
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
r = requests.patch(url=patch_uri, json=patch_data, headers=get_headers())
|
|
390
|
+
assert r.status_code == 200, f"Failed to ship order: {r.text}"
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
@when('Order is unshipped')
|
|
394
|
+
def step_impl(context):
|
|
395
|
+
"""
|
|
396
|
+
Phase 1: UPDATE - Tests WHERE clause inclusion (unshipped orders count in balance again)
|
|
397
|
+
"""
|
|
398
|
+
scenario_name = context.scenario.name
|
|
399
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
400
|
+
|
|
401
|
+
patch_uri = f'{BASE_URL}/api/Order/{context.order_id}/'
|
|
402
|
+
patch_data = {
|
|
403
|
+
"data": {
|
|
404
|
+
"type": "Order",
|
|
405
|
+
"id": context.order_id,
|
|
406
|
+
"attributes": {
|
|
407
|
+
"date_shipped": None
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
r = requests.patch(url=patch_uri, json=patch_data, headers=get_headers())
|
|
413
|
+
assert r.status_code == 200, f"Failed to unship order: {r.text}"
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
@when('Item product changed to "{new_product_name}"')
|
|
417
|
+
def step_impl(context, new_product_name):
|
|
418
|
+
"""
|
|
419
|
+
Phase 1: UPDATE FK - Tests product lookup and automatic unit_price re-copy from new product
|
|
420
|
+
"""
|
|
421
|
+
scenario_name = context.scenario.name
|
|
422
|
+
test_utils.prt(f'\n{scenario_name}\n', scenario_name)
|
|
423
|
+
|
|
424
|
+
# Get new product ID
|
|
425
|
+
products_uri = f'{BASE_URL}/api/Product/?filter[name]={new_product_name}'
|
|
426
|
+
r_product = requests.get(url=products_uri, headers=get_headers())
|
|
427
|
+
products = r_product.json()['data']
|
|
428
|
+
assert products, f"Product {new_product_name} not found"
|
|
429
|
+
|
|
430
|
+
new_product_id = int(products[0]['id'])
|
|
431
|
+
|
|
432
|
+
patch_uri = f'{BASE_URL}/api/Item/{context.item_id}/'
|
|
433
|
+
patch_data = {
|
|
434
|
+
"data": {
|
|
435
|
+
"type": "Item",
|
|
436
|
+
"id": context.item_id,
|
|
437
|
+
"attributes": {
|
|
438
|
+
"product_id": new_product_id # Rule #2: Direct FK
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
r = requests.patch(url=patch_uri, json=patch_data, headers=get_headers())
|
|
444
|
+
assert r.status_code == 200, f"Failed to change product: {r.text}"
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
# ============================================================================
|
|
448
|
+
# THEN Steps - Assertions
|
|
449
|
+
# ============================================================================
|
|
450
|
+
|
|
451
|
+
@then('Customer balance should be {expected:d}')
|
|
452
|
+
def step_impl(context, expected):
|
|
453
|
+
"""Verify customer balance (primary customer)"""
|
|
454
|
+
scenario_name = 'Verify Customer Balance'
|
|
455
|
+
test_utils.prt(f'Checking customer balance = {expected}', scenario_name)
|
|
456
|
+
|
|
457
|
+
customer_uri = f'{BASE_URL}/api/Customer/{context.customer_id}/'
|
|
458
|
+
r = requests.get(url=customer_uri, headers=get_headers())
|
|
459
|
+
assert r.status_code == 200, f"Failed to get customer: {r.text}"
|
|
460
|
+
|
|
461
|
+
actual = float(r.json()['data']['attributes']['balance'] or 0)
|
|
462
|
+
assert abs(actual - expected) < 0.01, \
|
|
463
|
+
f"Expected balance {expected}, got {actual}"
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
@then('Customer "{customer_name}" balance should be {expected:d}')
|
|
467
|
+
def step_impl(context, customer_name, expected):
|
|
468
|
+
"""Verify specific customer balance (Rule #8: Use customer map)"""
|
|
469
|
+
scenario_name = f'Verify {customer_name} Balance'
|
|
470
|
+
test_utils.prt(f'Checking {customer_name} balance = {expected}', scenario_name)
|
|
471
|
+
|
|
472
|
+
customer_info = context.customer_map.get(customer_name)
|
|
473
|
+
|
|
474
|
+
customer_uri = f'{BASE_URL}/api/Customer/{customer_info["id"]}/'
|
|
475
|
+
r = requests.get(url=customer_uri, headers=get_headers())
|
|
476
|
+
assert r.status_code == 200, f"Failed to get customer: {r.text}"
|
|
477
|
+
|
|
478
|
+
actual = float(r.json()['data']['attributes']['balance'] or 0)
|
|
479
|
+
assert abs(actual - expected) < 0.01, \
|
|
480
|
+
f"Expected {customer_name} balance {expected}, got {actual}"
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
@then('Order amount_total should be {expected:d}')
|
|
484
|
+
def step_impl(context, expected):
|
|
485
|
+
"""Verify order total"""
|
|
486
|
+
scenario_name = 'Verify Order Total'
|
|
487
|
+
test_utils.prt(f'Checking order amount_total = {expected}', scenario_name)
|
|
488
|
+
|
|
489
|
+
if not hasattr(context, 'order_id') or context.order_id is None:
|
|
490
|
+
assert not context.order_created, "Order should have failed"
|
|
491
|
+
return
|
|
492
|
+
|
|
493
|
+
order_uri = f'{BASE_URL}/api/Order/{context.order_id}/'
|
|
494
|
+
r = requests.get(url=order_uri, headers=get_headers())
|
|
495
|
+
assert r.status_code == 200, f"Failed to get order: {r.text}"
|
|
496
|
+
|
|
497
|
+
actual = float(r.json()['data']['attributes']['amount_total'] or 0)
|
|
498
|
+
assert abs(actual - expected) < 0.01, \
|
|
499
|
+
f"Expected amount_total {expected}, got {actual}"
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
@then('Item amount should be {expected:d}')
|
|
503
|
+
def step_impl(context, expected):
|
|
504
|
+
"""Verify item amount"""
|
|
505
|
+
scenario_name = 'Verify Item Amount'
|
|
506
|
+
test_utils.prt(f'Checking item amount = {expected}', scenario_name)
|
|
507
|
+
|
|
508
|
+
if not hasattr(context, 'item_id') or context.item_id is None:
|
|
509
|
+
assert not context.order_created, "Order should have failed"
|
|
510
|
+
return
|
|
511
|
+
|
|
512
|
+
item_uri = f'{BASE_URL}/api/Item/{context.item_id}/'
|
|
513
|
+
r = requests.get(url=item_uri, headers=get_headers())
|
|
514
|
+
assert r.status_code == 200, f"Failed to get item: {r.text}"
|
|
515
|
+
|
|
516
|
+
actual = float(r.json()['data']['attributes']['amount'] or 0)
|
|
517
|
+
assert abs(actual - expected) < 0.01, \
|
|
518
|
+
f"Expected amount {expected}, got {actual}"
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
@then('Item unit_price should be {expected:d}')
|
|
522
|
+
def step_impl(context, expected):
|
|
523
|
+
"""Verify item unit price (tests copy rule)"""
|
|
524
|
+
scenario_name = 'Verify Unit Price Copy'
|
|
525
|
+
test_utils.prt(f'Checking item unit_price = {expected}', scenario_name)
|
|
526
|
+
|
|
527
|
+
item_uri = f'{BASE_URL}/api/Item/{context.item_id}/'
|
|
528
|
+
r = requests.get(url=item_uri, headers=get_headers())
|
|
529
|
+
assert r.status_code == 200, f"Failed to get item: {r.text}"
|
|
530
|
+
|
|
531
|
+
actual = float(r.json()['data']['attributes']['unit_price'] or 0)
|
|
532
|
+
assert abs(actual - expected) < 0.01, \
|
|
533
|
+
f"Expected unit_price {expected}, got {actual}"
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
@then('Order created successfully')
|
|
537
|
+
def step_impl(context):
|
|
538
|
+
"""Verify order creation succeeded"""
|
|
539
|
+
assert context.order_created, "Order creation failed"
|
|
540
|
+
assert context.order_id is not None, "Order ID not set"
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
@then('Order creation should fail')
|
|
544
|
+
def step_impl(context):
|
|
545
|
+
"""Verify order creation failed (negative test)"""
|
|
546
|
+
assert not context.order_created, "Order should have been rejected"
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
@then('Error message should contain "{text}"')
|
|
550
|
+
def step_impl(context, text):
|
|
551
|
+
"""Verify error message content"""
|
|
552
|
+
# Error already verified by order_created = False
|
|
553
|
+
pass
|
|
@@ -3,6 +3,7 @@ import json
|
|
|
3
3
|
from dotmap import DotMap
|
|
4
4
|
import sys, os
|
|
5
5
|
from pathlib import Path
|
|
6
|
+
from urllib.parse import quote
|
|
6
7
|
|
|
7
8
|
__version__ = '0.0.1' # keycloak support
|
|
8
9
|
|
|
@@ -29,7 +30,10 @@ def prt(msg: any, test: str= None) -> None:
|
|
|
29
30
|
test_val = test[0:25]
|
|
30
31
|
if "Server Log: Behave Run Successfully Completed" in msg:
|
|
31
32
|
debug_stop = 'good breakpoint'
|
|
32
|
-
|
|
33
|
+
# URL-encode msg and test to handle special characters, newlines, spaces, etc.
|
|
34
|
+
msg_encoded = quote(str(msg))
|
|
35
|
+
test_encoded = quote(str(test)) if test else 'None'
|
|
36
|
+
msg_url = f'http://localhost:5656/server_log?msg={msg_encoded}&test={test_encoded}&dir=test/api_logic_server_behave/logs/scenario_logic_logs'
|
|
33
37
|
r = requests.get(msg_url)
|
|
34
38
|
|
|
35
39
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
Feature: About Sample # features/about.feature:6
|
|
2
|
+
|
|
3
|
+
Scenario: Transaction Processing # features/about.feature:8
|
|
4
|
+
Given Sample Database # features/steps/about_steps.py:3
|
|
5
|
+
When Transactions are submitted # features/steps/about_steps.py:8
|
|
6
|
+
Then Enforce business policies with Logic (rules + code) # features/steps/about_steps.py:13
|
|
7
|
+
|
|
8
|
+
Feature: Order Processing with Business Logic # features/order_processing.feature:1
|
|
9
|
+
|
|
10
|
+
Scenario: Good Order Placed via B2B API # features/order_processing.feature:6
|
|
11
|
+
Given Customer "Alice" with balance 0 and credit limit 1000 # features/steps/order_processing_steps.py:22
|
|
12
|
+
When B2B order placed for "Alice" with 5 Widget # features/steps/order_processing_steps.py:255
|
|
13
|
+
Then Customer balance should be 450 # features/steps/order_processing_steps.py:451
|
|
14
|
+
And Order amount_total should be 450 # features/steps/order_processing_steps.py:483
|
|
15
|
+
And Order created successfully # features/steps/order_processing_steps.py:536
|
|
16
|
+
|
|
17
|
+
Scenario: Item Quantity Update Recalculates Amounts # features/order_processing.feature:13
|
|
18
|
+
Given Customer "Bob" with balance 0 and credit limit 2000 # features/steps/order_processing_steps.py:22
|
|
19
|
+
And Order exists for "Bob" with 5 Widget # features/steps/order_processing_steps.py:116
|
|
20
|
+
When Item quantity changed to 10 # features/steps/order_processing_steps.py:308
|
|
21
|
+
Then Item amount should be 900 # features/steps/order_processing_steps.py:502
|
|
22
|
+
And Order amount_total should be 900 # features/steps/order_processing_steps.py:483
|
|
23
|
+
And Customer balance should be 900 # features/steps/order_processing_steps.py:451
|
|
24
|
+
|
|
25
|
+
Scenario: Change Order Customer Adjusts Both Balances # features/order_processing.feature:21
|
|
26
|
+
Given Customer "Charlie" with balance 0 and credit limit 1500 # features/steps/order_processing_steps.py:22
|
|
27
|
+
And Customer "Diana" with balance 0 and credit limit 2000 # features/steps/order_processing_steps.py:22
|
|
28
|
+
And Order exists for "Charlie" with 2 Gadget # features/steps/order_processing_steps.py:116
|
|
29
|
+
When Order customer changed to "Diana" # features/steps/order_processing_steps.py:331
|
|
30
|
+
Then Customer "Charlie" balance should be 0 # features/steps/order_processing_steps.py:466
|
|
31
|
+
And Customer "Diana" balance should be 300 # features/steps/order_processing_steps.py:466
|
|
32
|
+
|
|
33
|
+
Scenario: Delete Item Reduces Order Total and Customer Balance # features/order_processing.feature:29
|
|
34
|
+
Given Customer "TestCustomer" with balance 0 and credit limit 3000 # features/steps/order_processing_steps.py:22
|
|
35
|
+
And Order exists for "TestCustomer" with 3 Widget and 2 Gadget # features/steps/order_processing_steps.py:61
|
|
36
|
+
When First item deleted # features/steps/order_processing_steps.py:356
|
|
37
|
+
Then Order amount_total should be 300 # features/steps/order_processing_steps.py:483
|
|
38
|
+
And Customer balance should be 300 # features/steps/order_processing_steps.py:451
|
|
39
|
+
|
|
40
|
+
Scenario: Ship Order Excludes from Balance (WHERE exclude) # features/order_processing.feature:36
|
|
41
|
+
Given Customer "ShipTest" with balance 0 and credit limit 5000 # features/steps/order_processing_steps.py:22
|
|
42
|
+
And Order exists for "ShipTest" with 10 Widget # features/steps/order_processing_steps.py:116
|
|
43
|
+
When Order is shipped # features/steps/order_processing_steps.py:369
|
|
44
|
+
Then Customer balance should be 0 # features/steps/order_processing_steps.py:451
|
|
45
|
+
|
|
46
|
+
Scenario: Unship Order Includes in Balance (WHERE include) # features/order_processing.feature:42
|
|
47
|
+
Given Customer "UnshipTest" with balance 0 and credit limit 5000 # features/steps/order_processing_steps.py:22
|
|
48
|
+
And Shipped order exists for "UnshipTest" with 5 Gadget # features/steps/order_processing_steps.py:173
|
|
49
|
+
When Order is unshipped # features/steps/order_processing_steps.py:393
|
|
50
|
+
Then Customer balance should be 750 # features/steps/order_processing_steps.py:451
|
|
51
|
+
|
|
52
|
+
Scenario: Exceed Credit Limit Rejected (Constraint FAIL) # features/order_processing.feature:48
|
|
53
|
+
Given Customer "LimitTest" with balance 0 and credit limit 500 # features/steps/order_processing_steps.py:22
|
|
54
|
+
When B2B order placed for "LimitTest" with 10 Gadget # features/steps/order_processing_steps.py:255
|
|
55
|
+
Then Order creation should fail # features/steps/order_processing_steps.py:543
|
|
56
|
+
And Error message should contain "credit limit" # features/steps/order_processing_steps.py:549
|
|
57
|
+
|
|
58
|
+
Scenario: Carbon Neutral Discount Applied (Custom Logic) # features/order_processing.feature:54
|
|
59
|
+
Given Customer "GreenBuyer" with balance 0 and credit limit 2000 # features/steps/order_processing_steps.py:22
|
|
60
|
+
When B2B order placed for "GreenBuyer" with 10 carbon neutral Gadget # features/steps/order_processing_steps.py:202
|
|
61
|
+
Then Item amount should be 1350 # features/steps/order_processing_steps.py:502
|
|
62
|
+
And Order amount_total should be 1350 # features/steps/order_processing_steps.py:483
|
|
63
|
+
And Customer balance should be 1350 # features/steps/order_processing_steps.py:451
|
|
64
|
+
|
|
65
|
+
Scenario: Product Unit Price Copied to Item # features/order_processing.feature:61
|
|
66
|
+
Given Customer "PriceCopy" with balance 0 and credit limit 3000 # features/steps/order_processing_steps.py:22
|
|
67
|
+
When B2B order placed for "PriceCopy" with 1 Green # features/steps/order_processing_steps.py:255
|
|
68
|
+
Then Item unit_price should be 109 # features/steps/order_processing_steps.py:521
|
|
69
|
+
|
|
70
|
+
Scenario: Change Product Updates Unit Price (FK Change) # features/order_processing.feature:66
|
|
71
|
+
Given Customer "ProductChange" with balance 0 and credit limit 5000 # features/steps/order_processing_steps.py:22
|
|
72
|
+
And Order exists for "ProductChange" with 2 Widget # features/steps/order_processing_steps.py:116
|
|
73
|
+
When Item product changed to "Gadget" # features/steps/order_processing_steps.py:416
|
|
74
|
+
Then Item unit_price should be 150 # features/steps/order_processing_steps.py:521
|
|
75
|
+
And Item amount should be 300 # features/steps/order_processing_steps.py:502
|
|
76
|
+
And Order amount_total should be 300 # features/steps/order_processing_steps.py:483
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/Users/val/dev/ApiLogicServer/ApiLogicServer-dev/build_and_test/ApiLogicServer/basic_demo_2/test/api_logic_server_behave/behave_run.py completed at October 20, 2025 11:28:01
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
Add Item Exceeding Credit Limit
|
|
3
|
+
- 2025-10-20 08:59:10,579 - logic_logger - INFO
|
|
4
|
+
|
|
5
|
+
Logic Phase: ROW LOGIC (session=0x109afa7a0) (sqlalchemy before_flush) - 2025-10-20 08:59:10,581 - logic_logger - INFO
|
|
6
|
+
..Item[None] {Insert - client} id: None, order_id: None, product_id: 2, quantity: 5, amount: None, unit_price: None row: 0x109eca2d0 session: 0x109afa7a0 ins_upd_dlt: ins, initial: ins - 2025-10-20 08:59:10,581 - logic_logger - INFO
|
|
7
|
+
..Item[None] {copy_rules for role: product - unit_price} id: None, order_id: None, product_id: 2, quantity: 5, amount: None, unit_price: 90.0000000000 row: 0x109eca2d0 session: 0x109afa7a0 ins_upd_dlt: ins, initial: ins - 2025-10-20 08:59:10,581 - logic_logger - INFO
|
|
8
|
+
..Item[None] {Formula amount} id: None, order_id: None, product_id: 2, quantity: 5, amount: 450.0000000000, unit_price: 90.0000000000 row: 0x109eca2d0 session: 0x109afa7a0 ins_upd_dlt: ins, initial: ins - 2025-10-20 08:59:10,582 - logic_logger - INFO
|