<?php

namespace Tests\Feature\SSHCommands\Database;

use App\SSHCommands\Database\InstallMysqlCommand;
use Tests\TestCase;

class InstallMysqlCommandTest extends TestCase
{
    public function test_generate_command_mysql8()
    {
        $command = new InstallMysqlCommand('8.0');

        $expected = <<<'EOD'
        wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

        sudo DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.8.22-1_all.deb

        sudo DEBIAN_FRONTEND=noninteractive apt update

        sudo DEBIAN_FRONTEND=noninteractive apt install mysql-server -y

        sudo service mysql enable

        sudo service mysql start

        if ! sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;"; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi

        if ! sudo mysql -e "FLUSH PRIVILEGES"; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi
        EOD;

        $this->assertStringContainsString($expected, $command->content());
    }

    public function test_generate_command_mysql5()
    {
        $command = new InstallMysqlCommand('5.7');

        $expected = <<<'EOD'
        sudo DEBIAN_FRONTEND=noninteractive apt install mysql-server -y

        sudo service mysql enable

        sudo service mysql start

        if ! sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;"; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi

        if ! sudo mysql -e "FLUSH PRIVILEGES"; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi
        EOD;

        $this->assertStringContainsString($expected, $command->content());
    }
}