Thanasoft-H2F/gestion/tests/Unit/Controller/PageControllerTest.php
2024-12-16 17:24:37 +03:00

242 lines
6.7 KiB
PHP

<?php
namespace OCA\Gestion\Tests\Unit\Controller;
use Exception;
use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\MockObject\MockObject;
use OCA\Gestion\Controller\PageController;
use OCA\Gestion\Db\Bdd;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IDBConnection;
use OCP\IConfig;
use OCP\Mail\IMailer;
/**
* @covers Controller::
*/
class PageControllerTest extends TestCase {
private $controller;
private $userId = 'nextcloud';
private $db;
public function setUp(): void{
parent::setUp();
$request = $this->createMock('OCP\IRequest');
$rootFolder = $this->createMock('OCP\Files\IRootFolder');
$l = $this->createMock('OCP\IL10N');
$urlGenerator = $this->createMock('OCP\IURLGenerator');
$config = $this->createMock('OCP\IConfig');
$mailer = \OC::$server->getMailer();
$myDb = \OC::$server->getDatabaseConnection();
$this->db = new Bdd($myDb,$l);
$this->controller = new PageController('gestion',
$request,
$this->userId,
$this->db,
$rootFolder,
$urlGenerator,
$mailer,
$config
);
}
public function testIndex() {
$result = $this->controller->index();
$this->assertEquals('index', $result->getTemplateName());
$this->assertTrue($result instanceof TemplateResponse);
}
public function testDevis() {
$result = $this->controller->devis();
$this->assertEquals('devis', $result->getTemplateName());
$this->assertTrue($result instanceof TemplateResponse);
}
public function testFacture() {
$result = $this->controller->facture();
$this->assertEquals('facture', $result->getTemplateName());
$this->assertTrue($result instanceof TemplateResponse);
}
public function testProduit() {
$result = $this->controller->produit();
$this->assertEquals('produit', $result->getTemplateName());
$this->assertTrue($result instanceof TemplateResponse);
}
public function testConfig() {
$result = $this->controller->config();
$this->assertEquals('configuration', $result->getTemplateName());
$this->assertTrue($result instanceof TemplateResponse);
}
public function testDevisShow() {
$r = json_decode($this->controller->getDevis())[1]->{"id"};
$result = $this->controller->devisshow($r);
$this->assertEquals('devisshow', $result->getTemplateName());
$this->assertTrue($result instanceof TemplateResponse);
}
public function testfactureshow() {
$r = json_decode($this->controller->getFactures())[0]->{"id"};
$result = $this->controller->factureshow($r);
$this->assertEquals('factureshow', $result->getTemplateName());
$this->assertTrue($result instanceof TemplateResponse);
}
/**
* After testConfig
*/
public function testIsConfig() {
$result = $this->controller->isConfig();
$this->assertTrue($result);
}
/**
* After testConfig
*/
public function testGetConfiguation() {
$result = json_decode($this->controller->getConfiguration());
$this->assertIsArray($result);
}
public function testGetNavigationLink() {
$result = $this->controller->getNavigationLink();
$this->assertIsArray($result);
}
public function testGetClients() {
$result = json_decode($this->controller->getClients());
$this->assertIsArray($result);
}
public function testGetDevis() {
$result = json_decode($this->controller->getDevis());
$this->assertIsArray($result);
}
public function testGetFactures() {
$result = json_decode($this->controller->getFactures());
$this->assertIsArray($result);
}
public function testGetProduits() {
$result = json_decode($this->controller->getProduits());
$this->assertIsArray($result);
}
public function testGetProduitsById() {
$r = json_decode($this->controller->getProduits())[0]->{"id"};
$result = json_decode($this->controller->getProduitsById($r));
$this->assertIsArray($result);
}
public function testGetClient() {
$r = json_decode($this->controller->getClients())[0]->{"id"};
$result = json_decode($this->controller->getClient($r));
$this->assertIsArray($result);
$this->assertCount(1, $result);
}
public function testInsertClient() {
$result = $this->controller->insertClient();
$this->assertTrue($result);
}
/**
* need to be right after testInsertClient()
*
*/
public function testDeleteClient() {
$id = $this->db->lastinsertid("facture","nextcloud");
$table = "client";
$result = $this->controller->delete($table,$id);
$this->assertTrue($result);
}
public function testManagementDevis() {
$result = $this->controller->insertDevis();
$this->assertTrue($result);
$r = json_decode($this->controller->getDevis())[0]->{"id"};
$id_client = json_decode($this->controller->getClients())[0]->{"id"};
$resultInterUpdate = $this->controller->update('devis', 'id_client', $id_client, $r);
$this->assertTrue($resultInterUpdate);
$result = json_decode($this->controller->getClientbyiddevis($r));
$this->assertIsArray($result);
$this->assertCount(1, $result);
}
/**
* need to be right after testInsertClient()
*
*/
public function testDeleteDevis() {
$id = $this->db->lastinsertid("facture","nextcloud");;
$table = "devis";
$result = $this->controller->delete($table,$id);
$this->assertTrue($result);
}
public function testInsertFacture() {
$result = $this->controller->insertFacture();
$this->assertTrue($result);
}
/**
* need to be right after testInsertClient()
*
*/
public function testDeleteFacture() {
$id = $this->db->lastinsertid("facture","nextcloud");
$table = "facture";
$result = $this->controller->delete($table,$id);
$this->assertTrue($result);
}
public function testInsertProduit() {
$result = $this->controller->insertProduit();
$this->assertTrue($result);
}
public function testInsertProduitDevis(){
$r = json_decode($this->controller->getDevis())[0]->{"id"};
$result = $this->controller->insertProduitDevis($r);
$this->assertTrue($result);
}
public function testDeleteProduitDevis(){
$id = $this->db->lastinsertid("facture","nextcloud");;
$table = "produit_devis";
$result = $this->controller->delete($table,$id);
$this->assertTrue($result);
}
/**
* need to be right after testInsertClient()
*
*/
public function testDeleteProduit() {
$id = $this->db->lastinsertid("facture","nextcloud");;
$table = "produit";
$result = $this->controller->delete($table,$id);
$this->assertTrue($result);
}
public function testGetStats(){
$result = (array) json_decode($this->controller->getStats());
$this->assertArrayHasKey('client', $result);
$this->assertArrayHasKey('devis', $result);
$this->assertArrayHasKey('facture', $result);
$this->assertArrayHasKey('produit', $result);
}
public function testGetAnnualTurnoverPerMonthNoVat(){
$result = (array) json_decode($this->controller->getAnnualTurnoverPerMonthNoVat());
$this->assertIsArray($result);
}
}