<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

use App\Services\Printing\PrinterProvider;

class PrinterProviderTest extends TestCase
{
    use DatabaseTransactions;

    public function testInitializationOfPrinter()
    {
        // just make sure the consturctor is called and a printer
        // is initialized
        Config::set('app.debug', true);
        $provider = new PrinterProvider();

        $this->assertTrue($provider instanceof PrinterProvider);
    }

    public function productAndPriceProvider()
    {
        return [
            ["Sweet & Sour",  123, "Sweet & Sour                                        123"],
            ["Sweet & Sour", 1234, "Sweet & Sour                                       1234"],
            ["Sweet & SourSweet & SourSweet & SourSweet & SourSweet & Sour", 123, "Sweet & SourSweet & SourSweet & SourSweet & SourSw  123"],
            ["Sweet & SourSweet & SourSweet & SourSweet & SourSweet & Sour", 1234, "Sweet & SourSweet & SourSweet & SourSweet & SourSw 1234"],
        ];
    }

    /**
     * @dataProvider productAndPriceProvider
     */
    public function testPrintingOfLinesWithPrices($productName, $productPrice, $expected)
    {
        $service = new PrinterProvider;

        $line = $service->productWithPriceLine($productName, $productPrice);

        $this->assertEquals($expected, $line);
    }
}
