Raheel
Raheel

Reputation: 9024

Laravel Unit Test Class Not Found

<?php 

use App\Repositories\APIModels\SalesError as SalesError;
use App\Repositories\APIModels\Sales as Sales;

class SalesErrorTest extends \TestCase {

    public function setUp()
    {
        parent::setUp();
    }

    public function testCreate()
    {
        $sales_error = new SalesError;
        $sales_error->sale_id = 5;
        $sales_error->error_type = 3;
        $sales_error->description = 'Unknown error occured';
        $sales_error->resolved_at = date('Y-m-d H:i:s');
        $this->assertTrue($sales_error->save());
    }

    public function testRelation()
    {
        $sales = Sales::find(45)->errors();
        var_dump($sales);
    }
}

In the above test when i run testCreate it works fine. But when i run other method it says

PHP Fatal error: Class 'SalesError' not found in /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 878

Sales Model

   /**
     * Has Many relation with SalesError
     * 
     * @return object
     */
    public function errors()
    {
        return $this->hasMany('SalesError', 'sale_id', 'sale_id');
    }

Sales Error Model

  /**
     * Has many to one relation with Sales Model
     * 
     * @return void
     */
    public function sales()
    {
        $this->belongsTo('Sales', 'sale_id');
    }

Upvotes: 0

Views: 2433

Answers (1)

pespantelis
pespantelis

Reputation: 15372

You should pass the full namespace to the relationships.

Also, you are missing the return statement at the sales relationship.

public function errors()
{
    return $this->hasMany('App\Repositories\APIModels\SalesError', 'sale_id', 'sale_id');
    // or
    return $this->hasMany(SalesError::class, 'sale_id', 'sale_id');
}

public function sales()
{
    return $this->belongsTo(Sales::class, 'sale_id');
}

Upvotes: 1

Related Questions