<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Modules\Company\Account\Register;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use App\Models\Company;

class RegisterCompanyTest extends TestCase
{
    use RefreshDatabase;
    public function test_register_company(): void
    {
        $register = new Register();

        $companyData = array(
            'name' => 'Jhumzkie Company',
            'email_address' => 'jumboy@yopmail.com',
            'service_charge' => 10, //default service charge
            'is_iec_member' => 'false',
            'is_banned' => 'false',
        );

        
        $companyTransaction = $register->createCompany($companyData);
        $this->assertTrue($companyTransaction==true, 'Created Company Details');

        $emailVerificationToken = hash('sha256', Str::random(40));

        $workerData = array(
            'email_address' => 'jumboy@yopmail.com',
            'first_name' => ucfirst('Jhumzkie'),
            'last_name' => ucfirst('Jumboyzkie'),
            'phone_num' => '+15555551234',
            'password' => Hash::make('123456789'),
            'email_verification_code' => $emailVerificationToken
        );

        $workerTransaction = $register->createWorker($workerData);

        $this->assertTrue($workerTransaction==true, 'Created Worker Details');

        $companyUserData = array(
            'worker_id' => $workerTransaction->id,
            'company_id' => $companyTransaction->id,
            'role_id' => 1,  //admin role
        );
        $expertises = [1,2,3];

        foreach($expertises as $expertise){
            $companyExpertise = array(
                'expertise_id' => $expertise,
                'company_id' => $companyTransaction->id,
            );
            $createCompanyTransaction = $register->createCompanyExpertise($companyExpertise);
            $this->assertTrue($createCompanyTransaction==true, 'Created Company Expertise Details');
        }

        $companyUserTransaction = $register->createCompanyUser($companyUserData);
        $this->assertTrue($companyUserTransaction==true, 'Created Company User Details');
    
    }
}
