/** * Tests Base->fetchAll() */ public function testFetchAll() { // O padrão é não usar o campo deleted $albuns = $this->Base->fetchAll(); $this->assertCount(4, $albuns, 'showDeleted=false, useDeleted=false'); // Marca para mostrar os removidos e não usar o campo deleted $this->Base->setShowDeleted(true)->setUseDeleted(false); $this->assertCount(4, $this->Base->fetchAll(), 'showDeleted=true, useDeleted=false'); // Marca pra não mostar os removidos e usar o campo deleted $this->Base->setShowDeleted(false)->setUseDeleted(true); $this->assertCount(3, $this->Base->fetchAll(), 'showDeleted=false, useDeleted=true'); // Marca pra mostrar os removidos e usar o campo deleted $this->Base->setShowDeleted(true)->setUseDeleted(true); $albuns = $this->Base->fetchAll(); $this->assertCount(4, $albuns, 'showDeleted=true, useDeleted=true'); // Marca não mostrar os removios $this->Base->setUseDeleted(true)->setShowDeleted(false); $albuns = $this->defaultValues; unset($albuns[3]); // remove o deleted=1 $this->assertEquals($albuns, $this->Base->fetchAll()); // Marca mostrar os removios $this->Base->setShowDeleted(true); $this->assertEquals($this->defaultValues, $this->Base->fetchAll()); $this->assertCount(4, $this->Base->fetchAll()); $this->Base->setShowDeleted(false); $this->assertCount(3, $this->Base->fetchAll()); // Verifica o where $this->assertCount(2, $this->Base->fetchAll(array('artist' => $albuns[0]['artist']))); $this->assertNull($this->Base->fetchAll(array('artist' => $this->defaultValues[3]['artist']))); // Verifica o paginator com o padrão $paginator = $this->Base->setUsePaginator(true)->fetchAll(); $paginator = $paginator->toJson(); // Tem um bug no Zend_Paginator //http://framework.zend.com/issues/browse/ZF-9731 $paginator = (array) json_decode($paginator); $temp = array(); foreach ($paginator as $p) { $temp[] = $p; } $paginator = json_encode($temp); $fetchAll = $this->Base->setUsePaginator(false)->fetchAll(); $this->assertNotEquals(json_encode($this->defaultValues), $paginator); $this->assertEquals(json_encode($fetchAll), $paginator, 'retorno do paginator é igual'); // Verifica o paginator alterando o paginator $this->Base->getPaginator()->setPageRange(2)->setCurrentPageNumber(1)->setItemCountPerPage(2); $paginator = $this->Base->setUsePaginator(true)->fetchAll(); $paginator = $paginator->toJson(); // Tem um bug no Zend_Paginator //http://framework.zend.com/issues/browse/ZF-9731 $paginator = (array) json_decode($paginator); $temp = array(); foreach ($paginator as $p) { $temp[] = $p; } $paginator = json_encode($temp); $this->assertNotEquals(json_encode($this->defaultValues), $paginator); $fetchAll = $this->Base->setUsePaginator(false)->fetchAll(null, null, 2); $this->assertEquals(json_encode($fetchAll), $paginator); // Apaga qualquer cache $this->assertTrue($this->Base->getCache()->clean(), 'apaga o cache'); // Define exibir os deletados $this->Base->setShowDeleted(true); // Liga o cache $this->Base->setUseCache(true); $this->assertEquals($this->defaultValues, $this->Base->fetchAll(), 'fetchAll está igual ao defaultValues'); $this->assertCount(4, $this->Base->fetchAll(), 'Deve conter 4 registros'); // Grava um registro "sem o cache saber" $this->Base->getTableGateway()->insert(array('id' => 10, 'artist' => 'nao existo por enquanto', 'title' => 'bla bla', 'deleted' => 0)); $this->assertCount(4, $this->Base->fetchAll(), 'Deve conter 4 registros depois do insert "sem o cache saber"'); $this->assertTrue($this->Base->getCache()->clean(), 'limpa o cache'); $this->assertCount(5, $this->Base->fetchAll(), 'Deve conter 5 registros'); // Define não exibir os deletados $this->Base->setShowDeleted(false); $this->assertCount(4, $this->Base->fetchAll(), 'Deve conter 4 registros com showDeleted=false'); // Apaga um registro "sem o cache saber" $this->Base->getTableGateway()->delete("id=10"); $this->Base->setShowDeleted(true); $this->assertCount(5, $this->Base->fetchAll(), 'Deve conter 5 registros'); $this->assertTrue($this->Base->getCache()->clean(), 'apaga o cache'); $this->assertCount(4, $this->Base->fetchAll(), 'Deve conter 4 registros 4'); }