<commit_before><?php

namespace AppBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\HttpFoundation\Response;

class CartControllerTest extends WebTestCase
{
    public function testBuyProductByRegisteredCustomer()
    {
        $client = static::createClient();

        //dodaję produkty, sprawdzam czy przekierował do cartmenu
        $client->request('GET', '/addtocart/978-0010465284');
        $this->assertTrue($client->getResponse()->isRedirect('/cartmenu'));
        $client->request('GET', '/addtocart/978-0040892976');

        //testuję od razu CartController:cartcontentAction(), czyli liczba produktów w koszyku.
        $crawler = $client->request('GET', '/cartmenu');
        $this->assertTrue($crawler->filter('div.quantityKosz:contains("2")')->count() > 0);

        //testuję od razu usuwanie jednego produktu CartController:cartmenuAction() gdy kliknięto "usuń" przy produkcie.
        $crawler = $client->request('GET', '/cartmenu/978-0040892976');
        $this->assertTrue($crawler->filter('div.quantityKosz:contains("1")')->count() > 0);
        $this->assertTrue($crawler->filter('td > a:contains("978-0010465284")')->count() > 0);
        $this->assertTrue($crawler->filter('td > a:contains("978-0040892976")')->count() == 0);

        //wybiera "zamawiam" i zostaję przekierowany do wyboru autoryzacji.
        $link = $crawler->filter('a:contains("zamawiam")')->link();
        $crawler = $client->click($link);
        $this->assertTrue($crawler->filter('html:contains("Wybierz sposób autoryzacji")')->count() > 0);

        //wybieram "zaloguj"
        $link = $crawler->filter('a:contains("zaloguj")')->link();
        $client->click($link);
        $crawler = $client->followRedirect();
        $this->assertTrue($crawler->filter('html:contains("Login")')->count() > 0);

        //Podaje dane logowania i zosaję przekierowany do formularza dostawy.
        $form = $crawler->selectButton('_submit')->form();
        $client->submit($form,[
            '_username'=>'chinczyk',
            '_password'=>'<PASSWORD>',
        ]);
        $client->followRedirect();
        $crawler = $client->followRedirect();
        $this->assertTrue($crawler->filter('html:contains("Dostawa - formularz")')->count() > 0);

        //wypełniam dane, zatwierdzam i dostaję przekierowany do podsumowania zamówienia.
        $form = $crawler->selectButton('dostawa[zapisz]')->form();
        $client->submit($form);
        $crawler = $client->followRedirect();
        $this->assertTrue($crawler->filter('html:contains("zamówione produkty:")')->count() > 0);

        //Testuję od razu CartController:cartclearAction()
        $crawler = $client->request('GET', '/cartclear');
        $this->assertTrue($crawler->filter('h3.szaryKlocek:contains("Koszyk pusty")')->count() > 0);
        $this->assertTrue($crawler->filter('div.quantityKosz:contains("0")')->count() > 0);
    }

    public function testAutoryzacja()
    {
        $client = static::createClient();
        $crawler = $client->request('GET', '/autoryzacja');

        $this->assertTrue($crawler->filter('h3:contains("Wybierz sposób autoryzacji")')->count() > 0);
    }

    public function testCartmenu()
    {
        $client = static::createClient();
        $crawler = $client->request('GET', '/cartmenu');

        //testuję gdy wchodzę do kosza gdy kosz pusty
        $this->assertTrue($crawler->filter('html:contains("Koszyk pusty.")')->count() > 0);
        //refaktor: wyświetla stronę w wersji deweloperskiej, stąd nie ma ikony koszyka ani szarego boxu z komunikatem, lecz surowy błąd. Poprawić by wyświetlał w wersji produkcyjnej i odkomentować dwie poniższe linie.
//        $this->assertTrue($crawler->filter('h3.szaryKlocek:contains("Błąd. Koszyk pusty.")')->count() > 0);
//        $this->assertTrue($crawler->filter('div.quantityKosz:contains("0")')->count() > 0);
    }<commit_msg>testy funkcjonalne. CartController. Test całego procesu kupowanie. testBuyProductByUnregisteredCustomer<commit_after><?php

namespace AppBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\HttpFoundation\Response;

class CartControllerTest extends WebTestCase
{
    public function testBuyProductByRegisteredCustomer()
    {
        $client = static::createClient();

        //dodaję produkty, sprawdzam czy przekierował do cartmenu
        $client->request('GET', '/addtocart/978-0010465284');
        $this->assertTrue($client->getResponse()->isRedirect('/cartmenu'));
        $client->request('GET', '/addtocart/978-0040892976');
        $crawler = $client->followRedirect();

        //testuję od razu CartController:cartcontentAction(), czyli liczba produktów w koszyku.
        $this->assertTrue($crawler->filter('div.quantityKosz:contains("2")')->count() > 0);

        //testuję od razu usuwanie jednego produktu CartController:cartmenuAction() gdy kliknięto "usuń" przy produkcie.
        $crawler = $client->request('GET', '/cartmenu/978-0040892976');
        $this->assertTrue($crawler->filter('div.quantityKosz:contains("1")')->count() > 0);
        $this->assertTrue($crawler->filter('td > a:contains("978-0010465284")')->count() > 0);
        $this->assertTrue($crawler->filter('td > a:contains("978-0040892976")')->count() == 0);

        //wybiera "zamawiam" i zostaję przekierowany do wyboru autoryzacji.
        $link = $crawler->filter('a:contains("zamawiam")')->link();
        $crawler = $client->click($link);
        $this->assertTrue($crawler->filter('html:contains("Wybierz sposób autoryzacji")')->count() > 0);

        //wybieram "zaloguj"
        $link = $crawler->filter('a:contains("zaloguj")')->link();
        $client->click($link);
        $crawler = $client->followRedirect();
        $this->assertTrue($crawler->filter('html:contains("Login")')->count() > 0);

        //Podaje dane logowania i zosaję przekierowany do formularza dostawy.
        $form = $crawler->selectButton('_submit')->form();
        $client->submit($form,[
            '_username'=>'chinczyk',
            '_password'=>'<PASSWORD>',
        ]);
        $client->followRedirect();
        $crawler = $client->followRedirect();
        $this->assertTrue($crawler->filter('html:contains("Dostawa - formularz")')->count() > 0);

        //wypełniam dane, zatwierdzam i dostaję przekierowany do podsumowania zamówienia.
        $form = $crawler->selectButton('dostawa[zapisz]')->form();
        $client->submit($form);
        $crawler = $client->followRedirect();
        $this->assertTrue($crawler->filter('html:contains("zamówione produkty:")')->count() > 0);

        //Testuję od razu CartController:cartclearAction()
        $crawler = $client->request('GET', '/cartclear');
        $this->assertTrue($crawler->filter('h3.szaryKlocek:contains("Koszyk pusty")')->count() > 0);
        $this->assertTrue($crawler->filter('div.quantityKosz:contains("0")')->count() > 0);
    }
    
    public function testBuyProductByUnregisteredCustomer()
    {
        $client = static::createClient();

        $client->request('GET', '/addtocart/978-0010465284');
        $crawler = $client->followRedirect();

        //wybiera "zamawiam" i zostaję przekierowany do wyboru autoryzacji.
        $link = $crawler->filter('a:contains("zamawiam")')->link();
        $crawler = $client->click($link);
        $this->assertTrue($crawler->filter('html:contains("Wybierz sposób autoryzacji")')->count() > 0);

        //wybieram "kup bez rejestracji"
        $link = $crawler->filter('a:contains("kup bez rejestracji")')->link();
        $crawler = $client->click($link);
        $this->assertTrue($crawler->filter('html:contains("Dostawa - formularz")')->count() > 0);

        //wypełniam dane, zatwierdzam i dostaję przekierowany do podsumowania zamówienia.
        $form = $crawler->selectButton('dostawa[zapisz]')->form();
        $client->submit($form,[
            'dostawa[imie]'=>'paweł',
            'dostawa[nazwisko]'=>'chryplewicz',
            'dostawa[email]'=>'<EMAIL>',
            'dostawa[ulica]'=>'ddd',
            'dostawa[nrDomu]'=>'22',
            'dostawa[nrMieszkania]'=>'2',
            'dostawa[kodPocztowy]'=>'59-300',
            'dostawa[miasto]'=>'Lubin',
            'dostawa[nip]'=>'1234567890',
            'dostawa[nrTelefonu]'=>'78687677',
        ]);
        $crawler = $client->followRedirect();
        $this->assertTrue($crawler->filter('html:contains("zamówione produkty:")')->count() > 0);
    }

    public function testAutoryzacja()
    {
        $client = static::createClient();
        $crawler = $client->request('GET', '/autoryzacja');

        $this->assertTrue($crawler->filter('h3:contains("Wybierz sposób autoryzacji")')->count() > 0);
    }

    public function testCartmenu()
    {
        $client = static::createClient();
        $crawler = $client->request('GET', '/cartmenu');

        //testuję gdy wchodzę do kosza gdy kosz pusty
        $this->assertTrue($crawler->filter('html:contains("Koszyk pusty.")')->count() > 0);
        //refaktor: wyświetla stronę w wersji deweloperskiej, stąd nie ma ikony koszyka ani szarego boxu z komunikatem, lecz surowy błąd. Poprawić by wyświetlał w wersji produkcyjnej i odkomentować dwie poniższe linie.
//        $this->assertTrue($crawler->filter('h3.szaryKlocek:contains("Błąd. Koszyk pusty.")')->count() > 0);
//        $this->assertTrue($crawler->filter('div.quantityKosz:contains("0")')->count() > 0);
    }
{'fraction_non_alphanumeric': 0.18033132847947664, 'fraction_numerical': 0.022580985543948506, 'mean_word_length': 3.56111645813282, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 210, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2009197', 'n_tokens_mistral': 3303, 'n_tokens_neox': 3201, 'n_words': 483}