From ebe956f57927e85aabbd169c66e80282d5a118de Mon Sep 17 00:00:00 2001 From: Krzysztof Marczak Date: Sun, 11 Aug 2024 21:39:35 +0200 Subject: [PATCH] github flows --- .env.test | 1 + .github/workflows/main.yaml | 47 +- .php-cs-fixer.dist.php | 2 + assets/Evenets/controller-connected_event.js | 25 +- assets/app.js | 41 +- assets/bootstrap.js | 10 +- assets/components/custom_select.js | 130 +- assets/controllers/filters_controller.js | 137 +- assets/controllers/order-row_controller.js | 116 +- assets/controllers/order_create_controller.js | 12 + .../controllers/orders-mid-col_controller.js | 74 +- assets/controllers/popup_controller.js | 104 +- assets/controllers/search-popup_controller.js | 68 +- assets/controllers/search_controller.js | 66 +- assets/controllers/sidebar_controller.js | 22 +- assets/controllers/table_controller.js | 14 +- assets/login.js | 6 +- assets/orders.js | 2 +- .../@hotwired/stimulus/stimulus.index.js | 2 +- assets/vendor/jquery/jquery.index.js | 4 +- composer.json | 2 +- package-lock.json | 3024 ++++++++++++++++- package.json | 10 + phpunit.xml.dist | 1 + .../{Orders => Order}/ApiController.php | 61 +- .../{Orders => Order}/IndexController.php | 6 +- src/DataFixtures/UserFixtures.php | 4 +- src/DataFixtures/orders.yaml | 100 +- src/Form/OrderForm.php | 114 + src/Preferences/Form/OrderFiltersForm.php | 4 +- src/Repository/ClientRepository.php | 9 +- src/Repository/OrderRepository.php | 2 +- src/Repository/StaffRepository.php | 9 +- src/Service/OrderService.php | 14 +- templates/orders/order_form.html.twig | 6 +- tests/AppWebTestCase.php | 43 + tests/Order/OrdersListingTest.php | 100 +- tests/User/PreferencesTest.php | 10 +- tests/User/UserTest.php | 4 +- tests/bootstrap.php | 21 +- v1/public/js/base.js | 172 +- v1/public/js/clients-controller.js | 210 +- v1/public/js/content-table-controller.js | 372 +- v1/public/js/details-controller.js | 223 +- v1/public/js/filters-controller.js | 72 +- v1/public/js/index-controller.js | 444 +-- v1/public/js/interface/custom-select.js | 138 +- v1/public/js/invoices-controller.js | 481 ++- v1/public/js/lib/jquery.query-object.js | 438 ++- v1/public/js/popup-manager.js | 78 +- v1/public/js/repertory-controller.js | 232 +- v1/public/js/reports-controller.js | 244 +- v1/public/js/search-controller.js | 174 +- v1/public/js/tasks-controller.js | 322 +- v1/src/Controller/IndexController.php | 63 +- v1/src/Form/OrderForm.php | 18 +- webpack.config.js | 93 +- yarn.lock | 1502 +++++++- 58 files changed, 7206 insertions(+), 2497 deletions(-) create mode 100644 assets/controllers/order_create_controller.js rename src/Controller/{Orders => Order}/ApiController.php (68%) rename src/Controller/{Orders => Order}/IndexController.php (92%) create mode 100644 src/Form/OrderForm.php create mode 100644 tests/AppWebTestCase.php diff --git a/.env.test b/.env.test index e0cc3c4..7264373 100644 --- a/.env.test +++ b/.env.test @@ -2,6 +2,7 @@ KERNEL_CLASS='App\Kernel' APP_SECRET='$ecretf0rt3st' APP_DEBUG=false +APP_ENV=test SYMFONY_DEPRECATIONS_HELPER=999999 PANTHER_APP_ENV=panther PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 94ae999..81a81e1 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -3,6 +3,7 @@ on: pull_request env: DATABASE_URL: "sqlite:///%kernel.project_dir%/var/data.db" + APP_ENV: test jobs: php-cs-fixer: @@ -11,12 +12,8 @@ jobs: - uses: shivammathur/setup-php@v2 with: php-version: '8.3' - - - name: Checkout Repository - uses: actions/checkout@v1 - - - name: Check - run: | + - uses: actions/checkout@v1 + - run: | composer install ./vendor/bin/php-cs-fixer fix --dry-run --diff @@ -26,24 +23,20 @@ jobs: - uses: shivammathur/setup-php@v2 with: php-version: '8.3' - - - name: Checkout Repository - uses: actions/checkout@v1 - - - name: Install Dependencies - run: composer install --no-interaction - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 20.16 - cache: 'npm' - - - run: npm install - - - run: npm run build - - - run: npm ci - - - name: PHPUnit - run: ./vendor/bin/phpunit + - uses: actions/checkout@v1 + - run: composer install --no-interaction + - run: | + ./bin/console doctrine:database:create + ./bin/console doctrine:schema:create + - run: ./vendor/bin/phpunit + +# standard-js: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/setup-node@v4 +# with: +# node-version: 20.16 +# cache: 'npm' +# - run: npm install +# - run: npm run build +# - run: npm ci diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index b02440c..417d6b1 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -8,7 +8,9 @@ return (new PhpCsFixer\Config()) ->setRules([ '@Symfony' => true, + 'no_whitespace_in_blank_line' => false, ]) ->setFinder($finder) ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()) + ->setCacheFile('./var/cache/php-cs-fixer.cache') ; diff --git a/assets/Evenets/controller-connected_event.js b/assets/Evenets/controller-connected_event.js index a1a4eb4..f1781c3 100644 --- a/assets/Evenets/controller-connected_event.js +++ b/assets/Evenets/controller-connected_event.js @@ -1,15 +1,14 @@ -import {Controller} from "@hotwired/stimulus"; +import { Controller } from '@hotwired/stimulus' -export default class ControllerConnectedEvent extends CustomEvent -{ - constructor(controller) { - if (!(controller instanceof Controller)) { - throw new Error('Controller must be instance of stimulus controller.'); - } - - super(controller.identifier + ':connected', { - controller: controller, - bubbles: true - }); +export default class ControllerConnectedEvent extends CustomEvent { + constructor (controller) { + if (!(controller instanceof Controller)) { + throw new Error('Controller must be instance of stimulus controller.') } -} \ No newline at end of file + + super(controller.identifier + ':connected', { + controller, + bubbles: true + }) + } +} diff --git a/assets/app.js b/assets/app.js index 4f71bb4..e02d02b 100644 --- a/assets/app.js +++ b/assets/app.js @@ -1,27 +1,26 @@ -import 'bootstrap'; -import './bootstrap.js'; -import './styles/app.css'; -import $ from "jquery"; -import "tablesorter" +import 'bootstrap' +import './bootstrap.js' +import './styles/app.css' +import $ from 'jquery' +import 'tablesorter' -export const ajaxDelay = 300; -export function executeAfter(executable, stamp) { - if (stamp === undefined) { - stamp = Date.now() + ajaxDelay; - } - setTimeout( - executable, - (stamp - Date.now()) > 0 ? (stamp - Date.now()) : 0 - ); +export const ajaxDelay = 300 +export function executeAfter (executable, stamp) { + if (stamp === undefined) { + stamp = Date.now() + ajaxDelay + } + setTimeout( + executable, + (stamp - Date.now()) > 0 ? (stamp - Date.now()) : 0 + ) } -$.tablesorter.defaults.dateFormat = 'ddmmyyyy'; +$.tablesorter.defaults.dateFormat = 'ddmmyyyy' -let sidebar = $("#sidebar"); +const sidebar = $('#sidebar') sidebar.mouseover(function () { - sidebar.toggleClass("active", false); -}); + sidebar.toggleClass('active', false) +}) sidebar.mouseout(function () { - sidebar.toggleClass("active", true); - -}); + sidebar.toggleClass('active', true) +}) diff --git a/assets/bootstrap.js b/assets/bootstrap.js index c26293e..3d56010 100644 --- a/assets/bootstrap.js +++ b/assets/bootstrap.js @@ -1,10 +1,10 @@ -import { startStimulusApp } from '@symfony/stimulus-bridge'; +import { startStimulusApp } from '@symfony/stimulus-bridge' // Registers Stimulus controllers from controllers.json and in the controllers/ directory export const app = startStimulusApp(require.context( - '@symfony/stimulus-bridge/lazy-controller-loader!./controllers', - true, - /\.[jt]sx?$/ -)); + '@symfony/stimulus-bridge/lazy-controller-loader!./controllers', + true, + /\.[jt]sx?$/ +)) // register any custom, 3rd party controllers here // app.register('some_controller_name', SomeImportedController); diff --git a/assets/components/custom_select.js b/assets/components/custom_select.js index 0bce879..1de2e9e 100644 --- a/assets/components/custom_select.js +++ b/assets/components/custom_select.js @@ -1,78 +1,78 @@ -import $ from "jquery"; +import $ from 'jquery' -$(".filters-form select").each(function () { - if ($(this).hasClass("js-no-transformation")) { - return; - } +$('.filters-form select').each(function () { + if ($(this).hasClass('js-no-transformation')) { + return + } - let self = this; - let boundListener = scrollToElement.bind(self); - $.extend(self, { - removeListener: function () { - document.body.removeEventListener("keypress", boundListener); - } - }); + const self = this + const boundListener = scrollToElement.bind(self) + $.extend(self, { + removeListener: function () { + document.body.removeEventListener('keypress', boundListener) + } + }) - let $this = $(this); - let numberOfOptions = $(this).children("option").length; - let currentText = $(this).find(":selected").text(); + const $this = $(this) + const numberOfOptions = $(this).children('option').length + const currentText = $(this).find(':selected').text() - $this.addClass("hidden"); - $this.wrap("
"); - $this.after("
"); + $this.addClass('hidden') + $this.wrap('
') + $this.after('
') - let $styledSelect = $this.next("div.select-styled"); - $styledSelect.text($this.children("option").eq(0).text()); + const $styledSelect = $this.next('div.select-styled') + $styledSelect.text($this.children('option').eq(0).text()) - let $list = $("