MadGenius88
2/17/2017 - 4:53 PM

ArticleTest.php

<?php
use App\Article;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class Team extends Model
{
    public function remove($users = null)
    {
        if (is_null($users)) {
            return $this->members()->delete();
        }
 
        if ($users instanceof User) {
            return $this->members()->where('users.id', $users->id)->delete();
        }
 
        foreach ($users as $user) {
            $ids[] = $user->id;
        }
 
        return $this->members()->whereIn('users.id', $ids)->delete();
    }
}
/** @test */

  public function a_team_has_a_maximum_size()
  {
      $team = factory(Team::class)->create(['size => 2]);
    
      $userOne = factory(User::class)->create();
      $userTwo = factory(User::class)->create();
    
      $team->add($userOne);
      $team->add($userTwo);
    
      $this->assertEquals(2, $team->count());
    
      $this->setExpectedExpection('Exception);
      $userThree = factory(User::class)->create();
      $team->add($userThree);
  }
}
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Databese\Migrations\Migration;

class CreateUsersTable exends Migration
{
    /**
    * Run the migration
    *
    * @return void
    */
    
    public function up()
    {
        
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('team_id')->unsigned()->nullable()->index();
            $table->string('name');
            $table->string('email')->unique();
            
        if (DB::connection() instanceof \Illuminate\Database\SQLiteConnection) {

           DB::statement(DB::raw('PRAGMA foreign_keys=1'));

           DB::connection()->getPdo()->sqliteCreateFunction('REGEXP', function ($pattern, $value) {

           mb_regex_encoding('UTF-8');

           return (false !== mb_ereg("/$pattern/", $value)) ? 1 : 0;
           
           'sqlite' => [
           'driver'   => 'sqlite',
           'database' => env('DB_DATABASE', database_path('database.sqlite')),
           'prefix'   => '',
                ],
            });
        }
     }
  }
<?php
use App\Article;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ArticleTest extends TestCase
{
    use DatabaseTransactions;
    
    /**
     * @test
     */
    function it_fetches_trending_articles()
    {
        // Given
        factory(Article::class, 2)->create();
        factory(Article::class)->create(['reads'=>10]);
        $mostPopular = factory(Article::class)->create(['reads'=>20]);
        // When
        $articles = Article::trending();
        // Then
        $this->assertEquals($mostPopular->id, $articles->first()->id);
    }
}