Skip to content

Commit

Permalink
Using GitHub Actions for testing (#1)
Browse files Browse the repository at this point in the history
* Using GitHub Actions for testing

* Fixing the namespaces

* Removing the hard coded redirect provider
  • Loading branch information
arcanedev-maroc committed Feb 12, 2020
1 parent e801902 commit 1c3859d
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 14 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/run-tests.yml
@@ -0,0 +1,46 @@
name: run-tests

on: [push]

jobs:
tests:
runs-on: ubuntu-latest

strategy:
fail-fast: true
matrix:
php: [7.2, 7.3, 7.4]
laravel: [6.*]
dependency-version: [prefer-lowest, prefer-stable]

name: PHP ${{ matrix.php }} - ${{ matrix.dependency-version }}

steps:
- name: Checkout code
uses: actions/checkout@v1

- name: Cache dependencies
uses: actions/cache@v1
with:
path: ~/.composer/cache/files
key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}

- name: Setup PHP
uses: shivammathur/setup-php@v1
with:
php-version: ${{ matrix.php }}
extensions: curl, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, iconv
coverage: xdebug

- name: Install dependencies
run: composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest

- name: Execute tests
run: |
mkdir -p build/logs
vendor/bin/phpunit --coverage-text --coverage-clover=coverage.clover
- name: Scrutinizer CI
run: |
wget https://scrutinizer-ci.com/ocular.phar
php ocular.phar code-coverage:upload --format=php-clover coverage.clover
5 changes: 4 additions & 1 deletion _docs/2-Configuration.md
Expand Up @@ -21,7 +21,8 @@ return [
* The only requirement for the redirector is that it needs to implement the
* `Arcanedev\MissingUrlsRedirector\Contracts\RedirectorProvider` interface
*/
'provider' => Arcanedev\MissingUrlsRedirector\RedirectorProviders\ConfigProvider::class,

'provider' => Arcanedev\MissingUrlsRedirector\RedirectProviders\ConfigProvider::class,

/* -----------------------------------------------------------------
| Redirects
Expand All @@ -35,6 +36,7 @@ return [
* response codes, just add them to the array. Leave the array empty to redirect
* always no matter what the response code.
*/

'status-codes' => [
Symfony\Component\HttpFoundation\Response::HTTP_NOT_FOUND,
],
Expand All @@ -43,6 +45,7 @@ return [
* When using the `ConfigProvider` you can specify the redirects in this array.
* You can use Laravel's route parameters here.
*/

'urls' => [
// '/non-existing-page' => '/existing-page',
// '/old-blog/{url}' => '/new-blog/{url}',
Expand Down
7 changes: 4 additions & 3 deletions _docs/3-Usage.md
Expand Up @@ -62,7 +62,7 @@ return [

'redirects' => [
'status-codes' => [
\Symfony\Component\HttpFoundation\Response::HTTP_NOT_FOUND,
Symfony\Component\HttpFoundation\Response::HTTP_NOT_FOUND,
],

// ...
Expand Down Expand Up @@ -99,7 +99,7 @@ A `Arcanedev\MissingUrlsRedirector\Events\RedirectionNotFound` is fired when no

## Creating your own redirector

By default this package will use the `Arcanedev\MissingUrlsRedirector\RedirectorProviders\ConfigProvider` which will get its redirects from the config file.
By default this package will use the `Arcanedev\MissingUrlsRedirector\RedirectProviders\ConfigProvider` which will get its redirects from the config file.

If you want to use another source for your redirects (for example a database/eloquent) you can create your own redirector.

Expand All @@ -124,7 +124,7 @@ interface RedirectorProvider
*
* @param \Illuminate\Http\Request|mixed $request
*
* @return array
* @return \Arcanedev\MissingUrlsRedirector\Entities\Redirection[]|array
*/
public function redirectionsFor(Request $request): array;
}
Expand Down Expand Up @@ -173,6 +173,7 @@ class RedirectionsProvider implements RedirectorProvider
return [
Redirection::make('/old-url-1', '/new-url'),
Redirection::make('/old-url-2', '/new-url', Response::HTTP_FOUND),
new Redirection('/old-url-3', '/new-url', Response::HTTP_MOVED_PERMANENTLY),
];
}
}
Expand Down
5 changes: 4 additions & 1 deletion config/missing-urls.php
Expand Up @@ -12,7 +12,8 @@
* The only requirement for the redirector is that it needs to implement the
* `Arcanedev\MissingUrlsRedirector\Contracts\RedirectorProvider` interface
*/
'provider' => Arcanedev\MissingUrlsRedirector\RedirectorProviders\ConfigProvider::class,

'provider' => Arcanedev\MissingUrlsRedirector\RedirectProviders\ConfigProvider::class,

/* -----------------------------------------------------------------
| Redirects
Expand All @@ -26,6 +27,7 @@
* response codes, just add them to the array. Leave the array empty to redirect
* always no matter what the response code.
*/

'status-codes' => [
Symfony\Component\HttpFoundation\Response::HTTP_NOT_FOUND,
],
Expand All @@ -34,6 +36,7 @@
* When using the `ConfigProvider` you can specify the redirects in this array.
* You can use Laravel's route parameters here.
*/

'urls' => [
// '/non-existing-page' => '/existing-page',
// '/old-blog/{url}' => '/new-blog/{url}',
Expand Down
2 changes: 1 addition & 1 deletion src/Contracts/RedirectorProvider.php
Expand Up @@ -31,7 +31,7 @@ public function statusCodes(): array;
*
* @param \Illuminate\Http\Request|mixed $request
*
* @return array
* @return \Arcanedev\MissingUrlsRedirector\Entities\Redirection[]|array
*/
public function redirectionsFor(Request $request): array;
}
6 changes: 2 additions & 4 deletions src/MissingUrlsRedirector.php
Expand Up @@ -4,12 +4,10 @@

namespace Arcanedev\MissingUrlsRedirector;

use Arcanedev\MissingUrlsRedirector\Entities\Redirection;
use Arcanedev\MissingUrlsRedirector\Contracts\{RedirectorManager, RedirectorProvider};
use Arcanedev\MissingUrlsRedirector\Entities\RedirectionCollection;
use Arcanedev\MissingUrlsRedirector\Entities\{Redirection, RedirectionCollection};
use Arcanedev\MissingUrlsRedirector\Events\RedirectionNotFound;
use Arcanedev\MissingUrlsRedirector\Helpers\RouteMaker;
use Arcanedev\MissingUrlsRedirector\RedirectorProviders\ConfigProvider;
use Illuminate\Http\{Request, Response};
use Illuminate\Support\Arr;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
Expand Down Expand Up @@ -111,7 +109,7 @@ public function setRedirector(RedirectorProvider $redirector): self
*/
protected function getRedirector(): RedirectorProvider
{
return $this->redirector ?? new ConfigProvider;
return $this->redirector;
}

/* -----------------------------------------------------------------
Expand Down
6 changes: 3 additions & 3 deletions src/RedirectProviders/ConfigProvider.php
Expand Up @@ -2,15 +2,15 @@

declare(strict_types=1);

namespace Arcanedev\MissingUrlsRedirector\RedirectorProviders;
namespace Arcanedev\MissingUrlsRedirector\RedirectProviders;

use Arcanedev\MissingUrlsRedirector\Contracts\RedirectorProvider;
use Illuminate\Contracts\Config\Repository;

/**
* Class ConfigProvider
*
* @package Arcanedev\MissingUrlsRedirector\RedirectorProviders
* @package Arcanedev\MissingUrlsRedirector\RedirectProviders
* @author ARCANEDEV <arcanedev.maroc@gmail.com>
*/
class ConfigProvider implements RedirectorProvider
Expand Down Expand Up @@ -58,7 +58,7 @@ public function statusCodes(): array
*
* @param \Illuminate\Http\Request|mixed $request
*
* @return array
* @return \Arcanedev\MissingUrlsRedirector\Entities\Redirection[]|array
*/
public function redirectionsFor($request): array
{
Expand Down
2 changes: 1 addition & 1 deletion tests/Stubs/RedirectorProviders/RedirectionsProvider.php
Expand Up @@ -33,7 +33,7 @@ public function statusCodes(): array
*
* @param \Illuminate\Http\Request|mixed $request
*
* @return \Arcanedev\MissingUrlsRedirector\Entities\Redirection[]
* @return \Arcanedev\MissingUrlsRedirector\Entities\Redirection[]|array
*/
public function redirectionsFor(Request $request): array
{
Expand Down

0 comments on commit 1c3859d

Please sign in to comment.