What is a good project setup for developing Directus extensions such as hooks and custom endpoint, while using unit testing with PHPUnit?
Directus extensions live under the same codebase as the core project itself. That's a problem for having the extension code under version control. So what I have now is a symlink from directus/public/extensions/custom/hooks to a directory outside. In there, I have the usual src/ and tests/, and I've done composer install --dev phpunit ^8 and I PHPUnit is in place, and is loading my own classes. Now, how do I bring Directus in here, because Directus is not, AFAIK, on Composer. Maybe make a lib/, checkout Directus from GitHub in there, and have it included in autoload/classmap in composer.json?
Or would it alternatively be better to fork the whole Directus, and use a close of the whole Directus repo for extension dev? How to develop more than one extension?
Or something else?
There is not native testing for directus, the only way is to have the unit testing for php and for vue. Could be so great to have like a integration testing for the modules that uses custom api points. But the idea of directus is that all is modular so nope don't think that's gonna be around soon.
Related
We are working on a Magento payment module, let's call it ABC. We are using Docker for the development. So, for development, we are using a Magento image and adding the module code to the htdocs/app/code via volumes from docker-compose.yml. Our Github repo contains the module code only. We have added some tests for the module under app/code/ABC/Payment/Test folder. We want to setup a Github workflow that will run the test automatically on pull request.
The issue is some of the code depends on the Magento core classes like Magento\Framework\App\Config\ScopeConfigInterface, Magento\Store\Model\StoreManagerInterface and so on which won't be available in our Github repo. Is there any Github actions with which we can setup Magento, copy the module codes into it and run the module's tests?
Any help would be greatly appreciated. We are unable to figure this out.
You could require magento using composer within your github workflow. https://github.com/marketplace/actions/composer-php-actions
If you use grumphp (https://github.com/phpro/grumphp) you can have a look at this example: https://github.com/phpro/phpro-mage2-module-translations/blob/master/.github/workflows/grumphp.yml
You have not shared much about what precisely is making you unable to figure it out for Github Actions, however reading your question it looks to me like you already have figured out for development: Using Docker.
Now Github Actions as well supports Docker. All you need is to run the setup script for the development environment that establishes that Docker setup within the Github Action before running your tests.
You may want to add an additional environment for it, so that you can branch between the development system and Github Actions, but theoretically it should already work without.
Then after you have cloned the code, and then setup the Docker environment, execute the tests in the Github Action. The tests should run now.
Is it possible to install B2B Suite in Shopware 6 with Composer?
My approach so far has been
composer require shopware/b2b
php bin/console plugin:install SwagB2bPlatform
But this leads to an error when I try to install the plugin
The class "SwagB2bPlatform\SwagB2bPlatform" is not found. Probably an class loader error. Check your plugin composer.json
Does anyone have any experience with this? Do I have to run any scripts to make sure the plugin has all the necessary resources?
Shopware has no way to simple way to require proprietary plugins. You should not use SwagB2bPlatform as composer repository via vcs as all needed assets get packed before the release.
You can setup packages.friendsofshopware.com for your projects. This is a community driven project which provides a repository of all plugins in the community story. You are limited to plugins that you bought in the community store. Using this repository needs an extra entry in the repositories in your composer.json. After that you can just require any plugin that is assigned to your project. In the search you can find the plugin you look out for: https://packages.friendsofshopware.com/?producers=shopware%20AG&term=b2b
I'm trying to add a missing feature to a bundle. Here is what I've done so far:
Spoke to the project owner and got their approval
Created a fork and cloned it locally into a directory outside of my project
Made a feature branch
Ran composer install
Now, the question is, how can I include this into my own Symfony project so that it would be autoloaded? I want to test my changes inside my own project before I send a pull request.
See How to require a fork with composer, to be specific, require a VCS repository as described in Composer docs
Or a bit faster way for improving developing process (which is independent on Github), try using local repositories.
You can archive in two manner:
You can hack the vendor folder replacing the folder of the bundle with a symlink of the third-party bundle
[RECOMENDED] Put in the composer.json file of your project the reference of your personal github project instead of the official version
I'm writing an app using Laravel 4.2. This time, I needed some extra functionality and I decided to create a package. I used the workbench functionality as described in Laravel's docs.
Currently (and locally), the package is very small but it suits my app very well. I don't think this should be published to the community because it is still very green. I'll put a few hours into it when I finish with my app but I can't right now.
Now, I know the workbench/ directory is not to be pushed to production. Then, how do I use my package on production?
So far, I heard I have to push the package to GitHub (which I already did), and then publish it on Packagist. But I feel that publishing the script as is won't be helpful to others and might as well harm those in search of this functionality (like me a few days ago) on this so under developed package.
Is there a way to add my package to my app's composer.json and have it installed without publishing it to the community while it's under development?
What you are looking for is "private repository". Inside your composer.json file you can define an object repositories where you can define other locations to search for this repository
Detailed explanation can be found on Autoload bitbucket repository. The same principal is true for github.
We created a ZF2 project with skeleton app and it works fine for a simple test application. Now we are working on a real project. My question is what we should store in the repository (SVN), the whole project structure or just the new source code? ZF2 comes with a vendor directory which is almost 31MB in size (which has the ZF libraries). Should we store the whole vendor folder in SVN?
This is the first time we are using PHP and ZF so are not clear in how we will deliver the complete project to production from SVN. Also what is the build process if at all exists. Any clues/links to "ZF2 project packaging" is appreciated.
No, don't include dependencies in your repository! Putting your dependencies under version control doesn't do any good, it just blows up your repo for no reason.
You want to add the skeleton to your repository and your own library but definitely not the framework or any other dependencies.
The way to go is to use composer for dependency installation and some kind of build tool like Phing to automate installation of your project.
See the relevant chapter on phptherightway for more information on how to build your application.
The most simple build process doesn't even need a build tool
checkout your project from SVN/git
run php composer.phar install to install the needed dependencies (defined in your composer.json)
But most probably you want to do some more stuff like setup up the environment, deleting some files, etc.
A word about ZF packages. They're not available from packagist but you can install them with composer anyways. You just have to add the dedicated repository to your composer.json as described here: http://framework.zend.com/downloads/composer