/** * @test */ public function runInTransactionShouldInvokeRollbackOnFailure() { // given Db::getInstance()->enableTransactions(); $dbHandle = Mock::mock(); $db = new Db(false); $db->_dbHandle = $dbHandle; //when CatchException::when($db)->runInTransaction(array(new Sample(), 'exceptionMethod')); //then CatchException::assertThat()->isInstanceOf('InvalidArgumentException'); Mock::verify($dbHandle)->beginTransaction(); Mock::verify($dbHandle)->neverReceived()->commitTransaction(); Mock::verify($dbHandle)->rollBack(); }
/** * @test */ public function shouldSubstituteParams() { //given $pdoStatement = Mock::mock(); $pdo = Mock::mock(); $db = Mock::mock('Ouzo\\Db'); $db->_dbHandle = $pdo; Mock::when($pdo)->query(Mock::anyArgList())->thenReturn($pdoStatement); Mock::when($pdo)->quote("bob")->thenReturn("'bob'"); Mock::when($pdoStatement)->fetchAll(Mock::anyArgList())->thenReturn(array()); $modelQueryBuilder = new ModelQueryBuilder(SimpleModel::metaInstance(), $db); //when $modelQueryBuilder->where(array('name' => 'bob'))->options(array(Options::EMULATE_PREPARES => true))->fetchAll(); //then Mock::verify($pdo)->query("SELECT simple_models.name AS _simple_models_name, simple_models.id AS _simple_models_id FROM simple_models WHERE name = 'bob'"); }
/** * @test */ public function shouldVerifyMethodIsCalledNTimesForAnyArgs() { //given $mock = Mock::mock('MockTestClass'); //when $mock->method("something else 1"); $mock->method("something else 2"); $mock->method("something else 3"); //then Mock::verify($mock)->receivedTimes(3)->method(Mock::any()); }
/** * @test */ public function shouldNotTryToDeleteIfEmptyInClause() { //given $mockDb = Mock::create('\\Ouzo\\Db'); $builder = new ModelQueryBuilder(new Product(), $mockDb); //when $affectedRows = $builder->where(array('name' => array()))->deleteAll(); //then $this->assertEquals(0, $affectedRows); //no interaction with db Mock::verify($mockDb)->neverReceived(); }
/** * @test */ public function shouldNotCallMapFunctionOnSkippedElements() { //given $iterator = new \ArrayIterator(array(1, 2, 3)); $mapper = Mock::create(); Mock::when($mapper)->map(Mock::anyArgList())->thenAnswer(function (MethodCall $methodCall) { return Arrays::first($methodCall->arguments); }); //when $result = FluentIterator::from($iterator)->map(function ($elem) use($mapper) { return $mapper->map($elem); })->skip(1)->limit(1); //then $this->assertEquals(array(2), array_values($result->toArray())); Mock::verify($mapper)->neverReceived()->map(1); Mock::verify($mapper)->neverReceived()->map(3); }