<?php

namespace Tests\Feature\SSHCommands\Website;

use App\SSHCommands\Website\CloneRepositoryCommand;
use Tests\TestCase;

class CloneRepositoryCommandTest extends TestCase
{
    public function test_generate_command()
    {
        $command = new CloneRepositoryCommand('git@github.com-key:vitodeploy/vito.git', 'path', 'main', 'pk_path');

        $expected = <<<EOD
        echo "Host github.com-pk_path
                Hostname github.com
                IdentityFile=~/.ssh/pk_path" >> ~/.ssh/config

        ssh-keyscan -H github.com >> ~/.ssh/known_hosts

        rm -rf path

        if ! git config --global core.fileMode false; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi

        if ! git clone -b main git@github.com-key:vitodeploy/vito.git path; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi

        if ! find path -type d -exec chmod 755 {} \;; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi

        if ! find path -type f -exec chmod 644 {} \;; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi

        if ! cd path && git config core.fileMode false; then
            echo 'VITO_SSH_ERROR' && exit 1
        fi
        EOD;

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