Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
jarektkaczyk committed Dec 5, 2020
1 parent 334f057 commit 3c0dda2
Show file tree
Hide file tree
Showing 7 changed files with 175 additions and 49 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Tests

on: [push, pull_request]

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest]
php: [7.4]
dependency-version: [prefer-stable]

name: P${{ matrix.php }} - ${{ matrix.dependency-version }} - ${{ matrix.os }}
env:
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}

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

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

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: pcov

- name: Install dependencies
run: |
composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest
mkdir -p build/logs
- name: Execute tests
run: |
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
composer global require php-coveralls/php-coveralls
php-coveralls --coverage_clover=build/logs/clover.xml -v
71 changes: 71 additions & 0 deletions .php_cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<?php


$finder = PhpCsFixer\Finder::create()
->in(__DIR__ . '/src/');

return PhpCsFixer\Config::create()
->setFinder($finder)
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
'combine_consecutive_unsets' => true,
'method_separation' => true,
'no_multiline_whitespace_before_semicolons' => true,
'single_quote' => true,
'blank_line_before_return' => true,
'combine_consecutive_issets' => true,
'compact_nullable_typehint' => true,
'concat_space' => array('spacing' => 'one'),
'declare_equal_normalize' => true,
'function_typehint_space' => true,
'hash_to_slash_comment' => true,
'include' => true,
'lowercase_cast' => true,
'no_multiline_whitespace_around_double_arrow' => true,
'no_spaces_around_offset' => true,
'no_unused_imports' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'object_operator_without_whitespace' => true,
'php_unit_fqcn_annotation' => true,
'phpdoc_no_package' => true,
'phpdoc_scalar' => true,
'phpdoc_single_line_var_spacing' => true,
'protected_to_private' => true,
'return_assignment' => true,
'single_blank_line_before_namespace' => true,
'single_line_after_imports' => true,
'single_class_element_per_statement' => true,
'ternary_operator_spaces' => true,
'trailing_comma_in_multiline_array' => true,
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'whitespace_after_comma_in_array' => true,
'no_null_property_initialization' => true,
'binary_operator_spaces' => [
'default' => 'single_space',
],
'class_attributes_separation' => [
'elements' => ['method'],
],
'method_argument_space' => [
'keep_multiple_spaces_after_comma' => true,
],
'braces' => [
'allow_single_line_closure' => false,
'position_after_anonymous_constructs' => 'same',
'position_after_control_structures' => 'same',
'position_after_functions_and_oop_constructs' => 'next',
],
'no_extra_consecutive_blank_lines' => [
'curly_brace_block',
'extra',
'parenthesis_brace_block',
'square_brace_block',
'throw',
'use',
],
])
->setLineEnding("\n")
;
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Sofa/Eloquence

[![Build Status](https://travis-ci.org/jarektkaczyk/eloquence-mutable.svg)](https://travis-ci.org/jarektkaczyk/eloquence-mutable) [![Coverage Status](https://coveralls.io/repos/jarektkaczyk/eloquence-mutable/badge.svg)](https://coveralls.io/r/jarektkaczyk/eloquence-mutable) [![Code Quality](https://scrutinizer-ci.com/g/jarektkaczyk/eloquence-mutable/badges/quality-score.png)](https://scrutinizer-ci.com/g/jarektkaczyk/eloquence-mutable) [![Downloads](https://poser.pugx.org/sofa/eloquence-mutable/downloads)](https://packagist.org/packages/sofa/eloquence-mutable) [![stable](https://poser.pugx.org/sofa/eloquence-mutable/v/stable.svg)](https://packagist.org/packages/sofa/eloquence-mutable)
[![GitHub Tests Action Status](https://github.com/jarektkaczyk/eloquence-mutable/workflows/Tests/badge.svg)](https://github.com/jarektkaczyk/eloquence-mutable/actions?query=workflow%3Atests+branch%3Amaster) [![Coverage Status](https://coveralls.io/repos/jarektkaczyk/eloquence-mutable/badge.svg)](https://coveralls.io/r/jarektkaczyk/eloquence-mutable) [![Code Quality](https://scrutinizer-ci.com/g/jarektkaczyk/eloquence-mutable/badges/quality-score.png)](https://scrutinizer-ci.com/g/jarektkaczyk/eloquence-mutable) [![Downloads](https://poser.pugx.org/sofa/eloquence-mutable/downloads)](https://packagist.org/packages/sofa/eloquence-mutable) [![stable](https://poser.pugx.org/sofa/eloquence-mutable/v/stable.svg)](https://packagist.org/packages/sofa/eloquence-mutable)

Easy and flexible extensions for the [Eloquent ORM](https://laravel.com/docs/eloquent).

Expand Down
7 changes: 4 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@
}
],
"require": {
"php": ">=7.0.0",
"php": ">=7.1.0",
"sofa/eloquence-base": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "4.5.0",
"phpunit/phpunit": "^9.0",
"squizlabs/php_codesniffer": "2.3.3",
"mockery/mockery": "0.9.4"
"mockery/mockery": "^1.0",
"friendsofphp/php-cs-fixer": "^2.0"
},
"autoload": {
"psr-4": {
Expand Down
31 changes: 18 additions & 13 deletions phpunit.xml
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.0/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false">
verbose="true"
cacheResultFile=".phpunit.cache/test-results"
failOnRisky="true"
failOnWarning="true">
<testsuites>
<testsuite name="Eloquence">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./src</directory>
</whitelist>
</filter>

<coverage cacheDirectory=".phpunit.cache/code-coverage"
processUncoveredFiles="true"
ignoreDeprecatedCodeUnits="true">
<include>
<directory suffix=".php">src</directory>
</include>
</coverage>

<php>
<const name="PHPUNIT_TESTSUITE" value="true"/>
</php>
</phpunit>
22 changes: 10 additions & 12 deletions tests/MutableTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@

namespace Sofa\Eloquence\Tests;

use Mockery as m;
use Illuminate\Database\Eloquent\Model;
use Mockery;
use PHPUnit\Framework\TestCase;
use Sofa\Eloquence\Eloquence;
use Sofa\Eloquence\Mutable;

class MutableTest extends \PHPUnit_Framework_TestCase
class MutableTest extends TestCase
{
public function tearDown()
protected function tearDown(): void
{
m::close();
$this->addToAssertionCount(Mockery::getContainer()->mockery_getExpectationCount());
Mockery::close();
parent::tearDown();
}

/**
* @test
*/
/** @test */
public function it_mutates_attributes_on_set()
{
$model = $this->getModel();
Expand All @@ -28,10 +29,7 @@ public function it_mutates_attributes_on_set()
$this->assertEquals('email@domain.com', $model->getAttributes()['email']);
}

/**
* @test
*/
public function it_mutates_attributes_to_array()
/** @test */public function it_mutates_attributes_to_array()
{
$model = $this->getModel();
$mutator = $model->getAttributeMutator();
Expand All @@ -45,7 +43,7 @@ public function it_mutates_attributes_to_array()

protected function getModel()
{
$mutator = m::mock('\Sofa\Eloquence\Contracts\Mutator');
$mutator = Mockery::mock('\Sofa\Eloquence\Contracts\Mutator');

$model = new MutableEloquentStub;
$model->setRawAttributes(['first_name' => 'jarek', 'last_name' => 'tkaczyk', 'email' => 'JAREK@SOFTONSOFA.COM']);
Expand Down
47 changes: 27 additions & 20 deletions tests/MutatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,61 +2,66 @@

namespace Sofa\Eloquence\Tests;

use LogicException;
use PHPUnit\Framework\TestCase;
use Sofa\Eloquence\Mutator\Mutator;

class MutatorTest extends \PHPUnit_Framework_TestCase {
class MutatorTest extends TestCase
{
private $mutator;

public function setUp()
protected function setUp(): void
{
$this->m = new MutatorStub;
parent::setUp();
$this->mutator = new MutatorStub;
}

/** @test */
public function it_accepts_internal_function()
{
$callable = 'strtoupper';

$this->assertEquals('FOO', $this->m->mutate('foo', $callable));
$this->assertEquals('FOO', $this->mutator->mutate('foo', $callable));
}

/** @test */
public function it_accepts_mutator_class_method()
{
$callable = 'clip';

$this->assertEquals('quick', $this->m->mutate('quick red fox', $callable));
$this->assertEquals('quick', $this->mutator->mutate('quick red fox', $callable));
}

/** @test */
public function it_accepts_other_class_static_method()
{
$callable = 'Sofa\Eloquence\Tests\MutatorDummyInstantiable@multiply';

$this->assertEquals(4, $this->m->mutate(2, $callable));
$this->assertEquals(4, $this->mutator->mutate(2, $callable));
}

/** @test */
public function it_accepts_other_class_instance_method()
{
$callable = 'Sofa\Eloquence\Tests\MutatorDummyInstantiable@divide';

$this->assertEquals(5, $this->m->mutate(10, $callable));
$this->assertEquals(5, $this->mutator->mutate(10, $callable));
}

/** @test */
public function it_accepts_additional_parameters()
{
$callable = 'substr:2,3';

$this->assertEquals('ick', $this->m->mutate('quick red fox', $callable));
$this->assertEquals('ick', $this->mutator->mutate('quick red fox', $callable));
}

/** @test */
public function it_accepts_pipe_separated_multiple_methods()
{
$callable = 'substr:0,5|strtoupper';

$this->assertEquals('QUICK', $this->m->mutate('quick red fox', $callable));
$this->assertEquals('QUICK', $this->mutator->mutate('quick red fox', $callable));
}

/** @test */
Expand All @@ -69,7 +74,7 @@ public function it_accepts_array_of_methods()
'Sofa\Eloquence\Tests\MutatorDummyInstantiable@repeat:3',
];

$this->assertEquals(' RED RED RED', $this->m->mutate('quick red fox', $callable));
$this->assertEquals(' RED RED RED', $this->mutator->mutate('quick red fox', $callable));
}

/** @test */
Expand All @@ -79,22 +84,21 @@ public function it_can_be_extended_with_macros()
'custom_uppercase',
];

$this->m->macro('custom_uppercase', function ($value) {
$this->mutator->macro('custom_uppercase', function ($value) {
return strtoupper($value);
});

$this->assertEquals('QUICK RED FOX', $this->m->mutate('quick red fox', $callable));
$this->assertEquals('QUICK RED FOX', $this->mutator->mutate('quick red fox', $callable));
}

/**
* @test
*
* @dataProvider wrongCallables
* @expectedException \LogicException
*/
public function wrong_callable($callable)
{
$this->m->mutate('quick red fox', $callable);
$this->expectException(LogicException::class);
$this->mutator->mutate('quick red fox', $callable);
}

public function wrongCallables()
Expand All @@ -110,14 +114,16 @@ public function wrongCallables()
}
}

class MutatorStub extends Mutator {
class MutatorStub extends Mutator
{
public function clip($string, $length = 5)
{
return substr($string, 0, $length);
}
}

class MutatorDummyInstantiable {
class MutatorDummyInstantiable
{
public static function multiply($value, $multiplier = 2)
{
return $value * $multiplier;
Expand All @@ -139,17 +145,18 @@ protected function protectedMethod($value)
}
}

abstract class MutatorDummyNotInstantiable {
abstract class MutatorDummyNotInstantiable
{
public function repeat($value, $multiplier = 2)
{
return $value * $multiplier;
}
}

class MutatorDummyRequiredArgs {
class MutatorDummyRequiredArgs
{
public function __construct($arg)
{

}

public function repeat($value, $multiplier = 2)
Expand Down

0 comments on commit 3c0dda2

Please sign in to comment.