2017 © Pedro Peláez
 

library presenter-test-coverage

Presenter test coverage

image

adt/presenter-test-coverage

Presenter test coverage

  • Saturday, September 2, 2017
  • by michallohnisky
  • Repository
  • 14 Watchers
  • 0 Stars
  • 55 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Component test coverage

Command pro Nette, který hlídá, že programátor nezapomněl přidat akceptační test k nově vytvořenému presenteru, gridu, formuláři a jiným komponentám. Umí také hlídat chybějící testy k nově přidaným akcím u presenterů a nově přidaným render* metodám u gridů a formulářů., (*1)

Typicky se command spouští před akceptačními testy (např. od Codeception) v rámci CI případně již dřív před pushnutím do repozitáře. Jde o to, aby se programátor včas dozvěděl, že něco chybí a že má test vytvořit., (*2)

Konfigurace umožňuje přizpůsobení i pro další komponenty a pro jiný framework než je Codeception., (*3)

1 Instalace do aplikace

Composer:, (*4)

composer require --dev adt/presenter-test-coverage

1.1 Registrace extension

# app/config/config.neon
extensions:
    componentTestCoverage: ADT\PresenterTestCoverage\DI\ComponentTestCoverageExtension

1.2 Nastavení

# app/config/config.neon
componentTestCoverage:
    tempDir: %appDir%/../temp

    # Složka s akceptačními testy. V této složce se kontroluje, zda nechybí nějaké testy oproti složkám s aplikací, které se definují dále.
    # V této složce mohou být testy navíc, to ničemu nevadí. Struktura v této složce musí odpovídat struktuře ve složkách s aplikací.
    testDir: %appDir%/../tests/Acceptance

    componentCoverage:
        clientModulePresenters:    # Název kategorie testovaných věcí. Libovolný název.
            componentDir: %appDir%/Modules/ClientModule    # Složka s implementací daných komponent
            appFileMask: '(.*)Presenter.php'    # Regulární výraz: pro které soubory v app složce se má kontrolovat existence testů
            testFileMask: '{$1}PresenterCest.php'    # Maska souborů v test složce, pokud testovací framework potřebuje speciální suffix. Např.: Pokud je presenter v `%appDir%/Modules/ClientModule/ClientPresenter.php`, bude se k němu hledat soubor s testem v `<testDir>/Modules/ClientModule/ClientPresenterCest.php`.
            methodMask: action.*    # Regulární výraz: pro které metody se mají hledat metody v testech. Aktuálně se jména musí shodovat 1:1.
        grids:
            componentDir: %appDir%/Components/Grids
            appFileMask: '(.*)Grid.php'
            testFileMask: '{$1}GridCest.php'
            methodMask: render.*
    ...

2 Spuštění commandu

$ php bin/console adt:component-test-coverage

2.1 Přepínače

--psr4 - provede kontrolu zda se nevyskytují soubory, které nejsou kompatibilni s PSR4 standardem pokdu se vyskytnou je vrácena hodnota 1. Na obrazovce se vypíše seznam souborů neplnících PSR-4.

--missing-tests - provede kontrolu zda se v projektu nenecházejí metody pro které nejsou vytvořeny testy. Pokud jsou takové nalezeny, je vrácena hodnota 1 a na obrazovce se vypíší chybějící testy.

3 Příklad

3.1 Testovaná komponenta

namespace App\Modules\ClientModule;

class ClientPresenter extends BasePresenter
{
    public function actionNew()
    {
        // some code
    }
}

3.2 Testovací třída

namespace Tests\Acceptance\Modules\ClientModule;

class ClientPresenterCest extends BasePresenterCest
{
    public function actionNew(AcceptanceTester $I)
    {
        $I->crawl([
            '/client/new',
        ]);
    }
}

Kde implementace funkce crawl už je mimo tuto komponentu a každý projekt si řeší implementaci samotného testu sám. Příklad by mohl být:, (*5)

public function crawl(array $urls)
{
    $I = $this;
    foreach ($urls as $url) {
        $I->amOnPage($url);
        $I->dontSee('chyba 404');
        $I->dontSee('chyba 500');
        $I->dontSee('Nedostatečná práva');
    }
}

U složitějších komponent se pak typicky píšou složitější testy. U gridů například na nastavení filtrů a odeslání filtrace, proklikání stránkování, apod. U formulářů pak například na otestování změny hodnoty a uložení, apod., (*6)

The Versions

02/09 2017

dev-master

9999999-dev

Presenter test coverage

  Sources   Download

MIT

The Requires

 

nette adt

02/09 2017

v1.1

1.1.0.0

Presenter test coverage

  Sources   Download

MIT

The Requires

 

nette adt

02/09 2017

dev-f-crawler

dev-f-crawler

Presenter test coverage

  Sources   Download

MIT

The Requires

 

nette adt

29/08 2017

v1.0

1.0.0.0

Presenter test coverage

  Sources   Download

MIT

The Requires

 

nette adt