Skip to content

Instantly share code, notes, and snippets.

@chartjes
Created February 28, 2018 17:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chartjes/2a415d0afe190628199d8cdad680ee8e to your computer and use it in GitHub Desktop.
Save chartjes/2a415d0afe190628199d8cdad680ee8e to your computer and use it in GitHub Desktop.
public function sortOrderUsingDoubles()
{
// Arrange
$expectedRoster = unserialize(file_get_contents(__DIR__ . '/fixtures/mad_roster.txt'));
$newSelect = Mockery::mock(Aura\SqlQuery\Common\Select::class);
$newSelect->shouldReceive('cols->from->where->orderBy->bindValue')->once();
$newSelect->shouldReceive('cols->from->where->bindValue')->once();
$newSelect->shouldReceive('getStatement');
$newSelect->shouldReceive('getBindValues');
$db = Mockery::mock(QueryFactory::class);
$db->expects('newSelect')->twice()->andReturn($newSelect);
$rosterModel = new Roster($db);
// Override our internal PDO object and a statement
$playersData = unserialize(file_get_contents(__DIR__ . '/fixtures/raw_rosters_players.txt'));
$picksData = unserialize(file_get_contents(__DIR__ . '/fixtures/raw_rosters_picks.txt'));
$statement = Mockery::mock(PDOStatement::class);
$statement->shouldReceive('execute');
$statement->shouldReceive('fetchAll')->once()->andReturn($playersData);
$statement->shouldReceive('fetchAll')->once()->andReturn($picksData);
$pdo = Mockery::mock(PDO::class);
$pdo->shouldReceive('prepare')->andReturn($statement);
$rosterModel->pdo = $pdo;
// Act
$roster = $rosterModel->getByNickname('MAD');
// Assert
$this->assertEquals($expectedRoster, $roster);
}
@jubianchi
Copy link

<?php

// Arrange
$expectedRoster = unserialize(file_get_contents(__DIR__ . '/fixtures/mad_roster.txt'));
$newSelect = new \mock\Aura\SqlQuery\Common\Select();
$this->calling($newSelect)->cols = $newSelect;
$this->calling($newSelect)->from = $newSelect;
$this->calling($newSelect)->where = $newSelect;
$this->calling($newSelect)->orderBy = $newSelect;
$this->calling($newSelect)->bindValue = $newSelect;
$db = new \mock\ QueryFactory();
$this->calling($db)->newSelect = $newSelect;

$rosterModel = new Roster($db);

// Override our internal PDO object and a statement
$playersData = unserialize(file_get_contents(__DIR__ . '/fixtures/raw_rosters_players.txt'));
$picksData = unserialize(file_get_contents(__DIR__ . '/fixtures/raw_rosters_picks.txt'));
$statement = new \mock\PDOStatement();
$this->calling($statement)->execute->doesNothing();
$this->calling($statement)->fetchAll[1] = $playersData;
$this->calling($statement)->fetchAll[2] = $picksData;
$pdo = new \mock\PDO();
$this->calling($pdo)->prepare = $statement;
$rosterModel->pdo = $pdo;

// Act
$roster = $rosterModel->getByNickname('MAD');

// Assert
$this->variable($roster)->isEqualTo($expectedRoster);

$this->mock($newSelect)
    // $newSelect->shouldReceive('cols->from->where->orderBy->bindValue')->once();
    ->call('cols')->before(
        $this->mock($newSelect)->call('from')->before(
            $this->mock($newSelect)->call('where')->before(
                $this->mock($newSelect)->call('orderBy')->before(
                    $this->mock($newSelect)->call('bindValue')->once()
                )->once()
            )->once()
        )->once()
    )->once()

    // $newSelect->shouldReceive('cols->from->where->bindValue')->once();
    ->call('cols')->before(
        $this->mock($newSelect)->call('from')->before(
            $this->mock($newSelect)->call('where')->before(
                $this->mock($newSelect)->call('bindValue')->once()
            )->once()
        )->once()
    )->once()

    // $newSelect->shouldReceive('getStatement');
    ->call('getStatement')->once()

    // $newSelect->shouldReceive('getBindValues');
    ->call('getBindValues')->once()
;

// $db->expects('newSelect')->twice()->andReturn($newSelect);
$this->mock($db)->call('newSelect')->twice();

// $pdo->shouldReceive('prepare')->andReturn($statement);
$this->mock($pdo)->call('prepare')->once();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment