Skip to content

Commit

Permalink
assess unit and functional tests for laravel package
Browse files Browse the repository at this point in the history
  • Loading branch information
2amjsouza committed Dec 7, 2023
1 parent b2f344c commit 814c4eb
Show file tree
Hide file tree
Showing 33 changed files with 361 additions and 76 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"yiisoft/yii2": "^2.0",
"codeception/module-filesystem": "^1.0",
"codeception/module-yii2": "^1.0",
"codeception/module-asserts": "^1.1",
"codeception/module-asserts": "2.0.1",
"codeception/module-laravel": "^2.1",
"laravel/framework": "^8.83"
},
Expand Down
2 changes: 1 addition & 1 deletion config/2am-qrcode.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,6 @@
'label' => [
'fontPath' => null,
'size' => 16,
'align' => \Da\QrCode\Enums\Label::AlignCenter,
'align' => \Da\QrCode\Enums\Label::ALIGN_CENTER,
]
];
8 changes: 7 additions & 1 deletion src/Controllers/LaravelResourceController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@

final class LaravelResourceController
{
/**
* @param Request $request
* @return \Illuminate\Http\Response
* @throws Exception
* @throws \Da\QrCode\Exception\ValidationException
*/
public function __invoke(Request $request)
{
$data = $request->only([
Expand All @@ -17,7 +23,7 @@ public function __invoke(Request $request)
'size',
]);

if (is_null($data['content'])) {
if (! isset($data['content'])) {
throw new Exception('The param `content` is required');
}

Expand Down
14 changes: 14 additions & 0 deletions src/Enums/Gradient.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Da\QrCode\Enums;

use MabeEnum\Enum;

class Gradient extends Enum
{
public const GRADIENT_VERTICAL = 'vertical';
public const GRADIENT_HORIZONTAL = 'horizontal';
public const GRADIENT_RADIAL = 'radial';
public const GRADIENT_DIAGONAL = 'diagonal';
public const GRADIENT_INVERSE_DIAGONAL = 'diagonal_inverse';
}
6 changes: 3 additions & 3 deletions src/Enums/Label.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

final class Label extends Enum
{
const AlignLeft = 'left';
const AlignRight = 'right';
const AlignCenter = 'center';
const ALIGN_LEFT = 'left';
const ALIGN_RIGHT = 'right';
const ALIGN_CENTER = 'center';
}
12 changes: 12 additions & 0 deletions src/Enums/Path.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Da\QrCode\Enums;

use MabeEnum\Enum;

class Path extends Enum
{
const DOTS = 'dots';
const SQUARE = 'square';
const ROUNDED = 'rounded';
}
12 changes: 8 additions & 4 deletions src/Factory/LaravelQrCodeFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@

class LaravelQrCodeFactory
{
private function __construct()
{
}

/**
* @param $content
* @param string|null $format
Expand All @@ -30,6 +26,7 @@ private function __construct()
* @param bool|null $scaleLogoHeight
* @param string|null $gradientType
* @param string|null $label
* @throws Exception
* @return QrCode
*/
public static function make(
Expand Down Expand Up @@ -198,10 +195,13 @@ protected static function applyLogo(QrCodeInterface $qrCode, ?string $logoPath,
/**
* @param string|array $content
* @param string|null $format
* @throws Exception
* @return QrCode
*/
protected static function buildQrCode($content, ?string $format): QrCodeInterface
{
self::validate($content, $format);

if (is_null($format) || $format === Format::Text) {
return is_array($content)
? new QrCode($content['text'])
Expand Down Expand Up @@ -237,6 +237,10 @@ protected static function validate($content, ?string $format): void
throw new Exception('Invalid content. It should be String or Array, ' . gettype($content) . ' given');
}

if (! is_null($format) && $format !== 'text' && ! class_exists($format)) {
throw new Exception('Invalid format. The given format class , `' . $format . '` does not exists');
}

if (! is_null($format) && $format !== 'text' && ! (new $format($content)) instanceof AbstractFormat) {
throw new Exception('Invalid format. It should be instance of Enum or null, ' . gettype($format) . ' given');
}
Expand Down
13 changes: 7 additions & 6 deletions src/StyleManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use BaconQrCode\Renderer\RendererStyle\Gradient;
use BaconQrCode\Renderer\RendererStyle\GradientType;
use Da\QrCode\Contracts\ColorsInterface;
use Da\QrCode\Enums\Gradient as GradientEnum;
use Da\QrCode\Contracts\PathStyleInterface;
use Exception;

Expand Down Expand Up @@ -59,7 +60,7 @@ public function __construct($foregroundColor, $backgroundColor, string $pathStyl

$this->pathStyle = $pathStyle ?: PathStyleInterface::SQUARE;
$this->styleIntensity = $styleIntensity ?: 1;
$this->gradientType = $gradientType ?: ColorsInterface::GRADIENT_VERTICAL;
$this->gradientType = $gradientType ?: GradientEnum::GRADIENT_VERTICAL;
}

/**
Expand Down Expand Up @@ -174,19 +175,19 @@ public function setGradientType(string $type): void
public function getGradientTye()
{
switch ($this->gradientType) {
case ColorsInterface::GRADIENT_VERTICAL: {
case GradientEnum::GRADIENT_VERTICAL: {
return GradientType::VERTICAL();
}
case ColorsInterface::GRADIENT_DIAGONAL: {
case GradientEnum::GRADIENT_DIAGONAL: {
return GradientType::DIAGONAL();
}
case ColorsInterface::GRADIENT_INVERSE_DIAGONAL: {
case GradientEnum::GRADIENT_INVERSE_DIAGONAL: {
return GradientType::INVERSE_DIAGONAL();
}
case ColorsInterface::GRADIENT_HORIZONTAL: {
case GradientEnum::GRADIENT_HORIZONTAL: {
return GradientType::HORIZONTAL();
}
case ColorsInterface::GRADIENT_RADIAL: {
case GradientEnum::GRADIENT_RADIAL: {
return GradientType::RADIAL();
}
default: return GradientType::VERTICAL();
Expand Down
Binary file added tests/_data/blade/endpoint4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-blade.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-dots.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-foreground.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-gradient-radial.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-gradient.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-label.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-logo2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_data/blade/qrcode-rounded.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion tests/_laravel/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.54",
"laravel/sanctum": "^2.11",
"laravel/tinker": "^2.5"
"laravel/tinker": "^2.5",
"marc-mabe/php-enum": "^4.7"
},
"require-dev": {
"facade/ignition": "^2.5",
Expand Down
1 change: 0 additions & 1 deletion tests/_laravel/public/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
| into the script here so we don't need to manually load our classes.
|
*/
require __DIR__.'/../../../vendor/autoload.php';
require __DIR__.'/../vendor/autoload.php';

/*
Expand Down
Binary file added tests/_laravel/public/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/_laravel/public/logo2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 0 additions & 21 deletions tests/_laravel/resources/views/blade-components.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,10 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Laravel</title>

<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">

<!-- Styles -->
<style>
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}}
</style>

<style>
body {
font-family: 'Nunito', sans-serif;
}
</style>
</head>
<body class="antialiased">
@php $font = public_path('media/poppins-bold.ttf') @endphp
<x-2am-qrcode
:content="'2am. Technologies'"
:label="'2am. Technologies'"
:font="$font"
:fontSize="14"
:fontAlign="\Da\QrCode\Enums\Label::AlignCenter"
/>
</body>
</html>
37 changes: 37 additions & 0 deletions tests/_laravel/resources/views/colors.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body class="antialiased">
@php
$background = [
'r' => 255,
'g' => 10,
'b' => 10,
];
$foreground = [
'r' => 255,
'g' => 0,
'b' => 0,
];
$content = [
'title' => '2am. Technologies',
'url' => 'https://2am.tech',
];
@endphp
<x-2am-qrcode
:content="$content"
:format="\Da\QrCode\Enums\Format::BookMark"
:background="$background"
/>

<x-2am-qrcode
:content="'2am. Technologies'"
:foreground="$background"
/>
</body>
</html>
26 changes: 26 additions & 0 deletions tests/_laravel/resources/views/logo.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body class="antialiased">
@php $logoPath = public_path('logo.png'); @endphp
<x-2am-qrcode
:content="'2am. Technologies'"
:logoPath="$logoPath"
:logoSize="50"
/>

@php
$logoPath2 = public_path('logo2.png');
$content = ['text' => '2am. Technologies'];
@endphp
<x-2am-qrcode
:content="$content"
:logoPath="$logoPath2"
:logoSize="50"
:scaleLogoHeight="true"
/>
</body>
</html>
20 changes: 20 additions & 0 deletions tests/_laravel/resources/views/path.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body class="antialiased">
<x-2am-qrcode
:content="'2am. Technologies'"
:pathStyle="\Da\QrCode\Enums\Path::DOTS"
:intensity="0.9"
/>

<x-2am-qrcode
:content="'2am. Technologies'"
:pathStyle="\Da\QrCode\Enums\Path::ROUNDED"
:intensity="0.9"
/>
</body>
</html>
17 changes: 16 additions & 1 deletion tests/_laravel/routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,22 @@
*/

Route::name('app.')->prefix('/')->group(function () {
Route::name('blade')->get('/', function () {
Route::name('blade')->get('/', function() {
return view('blade-components');
});
Route::name('label')->get('/label', function() {
return view('label');
});
Route::name('logo')->get('/logo', function() {
return view('logo');
});
Route::name('path')->get('/path', function() {
return view('path');
});
Route::name('colors')->get('/colors', function() {
return view('colors');
});
Route::name('gradient')->get('/gradient', function() {
return view('gradient');
});
});
3 changes: 2 additions & 1 deletion tests/laravel-functional.suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ modules:
enabled:
- Filesystem
- \Helper\Functional
- Laravel
- Laravel
- Asserts
Loading

0 comments on commit 814c4eb

Please sign in to comment.