<?php
namespace CodeIgniter;
use CodeIgniter\Router\Exceptions\RedirectException;
use CodeIgniter\Test\CIUnitTestCase;
use CodeIgniter\Test\DatabaseTestTrait;
use CodeIgniter\Test\FeatureTestTrait;
use Tests\Support\Database\Seeds\Beneficiari;
use Tests\Support\Database\Seeds\IpUserMeta;
use Tests\Support\Database\Seeds\IpUsers;
use Tests\Support\Database\Seeds\MainCategories;
use Tests\Support\Database\Seeds\Permissions;
use Tests\Support\Database\Seeds\RapoarteTemplate;
use Tests\Support\Database\Seeds\Sources;
use Tests\Support\Database\Seeds\TipAbonament;
class RapoarteTest extends CIUnitTestCase
{
use DatabaseTestTrait;
use FeatureTestTrait;
protected $setUpMethods = [
'resetServices',
'mockSession',
];
protected $migrateOnce = true;
protected $seedOnce = true;
protected $namespace = ['Tests\Support'];
protected $seed = [
Sources::class,
MainCategories::class,
TipAbonament::class,
IpUsers::class,
IpUserMeta::class,
Beneficiari::class,
Permissions::class,
RapoarteTemplate::class,
];
private $userSessionCompanie = [
'user_id' => '1',
'user_role' => 'companie',
'id_companie' => '1',
'logged_in' => 1,
'tip' => 'subscription',
'afisare' => []
];
protected $companyUserId = 2; //Seeders
protected $nameRaport = 'Raport test';
public function testRapoartePageIndex()
{
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/rapoarte');
$result->assertStatus(200);
$result->assertSee('LISTA RAPOARTE');
$result->assertSee('Adauga template');
//$result->assertDontSee('Raport cuvinte de specialitate');
}
public function testAddRaportPage()
{
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/rapoarte/adauga_raport_template');
$result->assertStatus(200);
$result->assertSee('ADAUGA RAPORT');
$result->assertSee('Denumire Raport');
$result->assertSee('Client 1');
$result->assertSee('Client 2');
}
public function testAddSuccessfullyRaportTemplate()
{
$clientId = 10; //Seeders
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/ajax_raport_keys', [
'post' => [
'name_raport' => $this->nameRaport,
'description_raport' => 'Raport test description added by test',
],
'clienti_raport' => [
$clientId
],
'subcategories' => [
'Romania', 'Europa'
],
'json' => [
[
'name' => 'Romania',
'score' => 10,
'type' => 'parent_keys',
'id' => 1,
'children' => [
[
'name' => 'legea',
'score' => 6,
'type' => 'child_keys',
'id' => 2,
],
[
'name' => 'legi',
'score' => 7,
'type' => 'child_keys',
'id' => 4,
],
[
'name' => 'Europa',
'score' => 10,
'type' => 'exclude_keys',
'id' => 5,
]
]
],
]
]);
$result->assertStatus(200);
// Check id key combination
$this->seeInDatabase('key_combinations', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'status' => 1,
]);
$keyCombinationId = $this->db->table('key_combinations')->select('id')
->where('id_user', $this->userSessionCompanie['user_id'])
->where('id_companie', $this->userSessionCompanie['id_companie'])
->where('status', 1)
->orderBy('id', 'desc')->get()->getRowArray()['id'];
// Check rapoarte table
$this->seeInDatabase('ip_rapoarte', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
'description_raport' => 'Raport test description added by test',
'categories' => 'Romania<>Europa',
'id_key' => $keyCombinationId,
]);
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
'description_raport' => 'Raport test description added by test',
'categories' => 'Romania<>Europa',
'id_key' => $keyCombinationId,
]);
//Check rapoarte logs
$this->seeInDatabase('ip_rapoarte_log', [
'id_raport' => $raportId,
'action' => 'a creat',
'target' => 'raportul template',
'modified_by' => $this->userSessionCompanie['user_id'],
]);
// Check key parent
$this->seeInDatabase('key_parent', [
'id_key' => $keyCombinationId,
'key_word' => 'Romania',
'key_score' => 10,
]);
// Check key child
$this->seeInDatabase('key_child', [
'id_key' => $keyCombinationId,
'key_word' => 'legea',
'key_score' => 6,
]);
$this->seeInDatabase('key_child', [
'id_key' => $keyCombinationId,
'key_word' => 'legi',
'key_score' => 7,
]);
// Check key exclude
$this->seeInDatabase('key_exclude', [
'id_key' => $keyCombinationId,
'key_word' => 'Europa',
'key_score' => 10,
]);
// get id keys
$idKeyParent = $this->grabFromDatabase('key_parent', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'Romania',
'key_score' => 10,
]);
$idKeyChild1 = $this->grabFromDatabase('key_child', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'legea',
'key_score' => 6,
]);
$idKeyChild2 = $this->grabFromDatabase('key_child', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'legi',
'key_score' => 7,
]);
$idKeyExclude = $this->grabFromDatabase('key_exclude', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'Europa',
'key_score' => 10,
]);
// Check association keys
$this->seeInDatabase('key_associations_child', [
'key_parent' => $idKeyParent,
'key_child' => $idKeyChild1,
]);
$this->seeInDatabase('key_associations_child', [
'key_parent' => $idKeyParent,
'key_child' => $idKeyChild2,
]);
$this->seeInDatabase('key_associations_exclude', [
'key_parent' => $idKeyParent,
'key_exclude' => $idKeyExclude,
]);
// Check client_raport
$this->seeInDatabase('client_raport', [
'id_raport' => $raportId,
'id_client' => $clientId,
]);
}
public function testPageRapoarteWithRaport()
{
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/rapoarte');
$result->assertStatus(200);
$result->assertSee('LISTA RAPOARTE');
$result->assertSee($this->nameRaport);
}
public function testOpenPermisions()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/permisiuni_edit_raport',[
'raport_id' => $raportId,
]);
$result->assertStatus(200);
$result->assertSee('PERMISIUNI');
$result->assertSee($this->nameRaport);
$result->assertDontSee('John Smith');
$result->assertSee('John 2 Smith 2');
$result->assertSee('Salveaza permisiuni');
$json = json_decode($result->getJSON(), true);
$html = $json['html'];
$this->assertStringContainsString('John 2 Smith 2', $html);
$this->assertStringNotContainsString('John Smith', $html);
$this->assertStringNotContainsString('John 3 Smith 3', $html);
// Check if value is 0 as in has no permission
$this->assertStringContainsString('class="js-pseudo-value-inp" name="' . $this->companyUserId . '" value="0"', $html);
}
public function testFailedOpenPermissions()
{
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/permisiuni_edit_raport',[
'raport_id2' => 1,
]);
$result->assertStatus(200);
$result->assertSee('Error raport');
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/permisiuni_edit_raport',[
'raport_id' => 'ab',
]);
$result->assertStatus(200);
$result->assertSee('Error raport numeric');
}
public function testSavePermisiuni()
{
// path: rapoarte/permisiuni_save_raport/2
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$permisiuni = $this->db->table('permissions')->whereIn('permission', ['read_raport', 'edit_raport'])->get()->getResult();
$readId = 0;
$editId = 0;
foreach ($permisiuni as $permisiune) {
if ($permisiune->permission == 'read_raport') {
$readId = $permisiune->id;
}
if ($permisiune->permission == 'edit_raport') {
$editId = $permisiune->id;
}
}
// Change to read
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/permisiuni_save_raport/' . $raportId,[
$this->companyUserId => $readId
]);
$result->assertStatus(200);
$result->assertSee('"status": "saved"');
// Change to edit
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/permisiuni_save_raport/' . $raportId,[
$this->companyUserId => $editId
]);
$result->assertStatus(200);
$result->assertSee('"status": "saved"');
// Check if saved
$this->seeInDatabase('rapoarte_permissions', [
'id_raport' => $raportId,
'id_user' => $this->companyUserId,
'id_companie' => $this->userSessionCompanie['id_companie'],
'id_permissions' => $editId,
]);
}
public function testEditareRaportTemplatePage()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/rapoarte/editare_raport_template/' . $raportId,);
$result->assertStatus(200);
$result->assertSee('EDITARE RAPORT');
$result->assertSee( $this->nameRaport);
$result->assertSee('Romania');
$result->assertSee('Europa');
$result->assertSee('Client 1');
$result->assertSee('Client 2');
$clientId = 10;
$result->assertSee('<input type="checkbox" checked hidden="hidden" name="clienti_raport[]" value="'.$clientId.'"');
$result->assertSee('<div class="sub-category-raport">Romania');
}
public function testUpdateDescriptionOnlyRapoarteTemplate()
{
// path: /rapoarte/update_ajax_raport_keys/2
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$clientId = 10;
$clientId2 = 11;
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/update_ajax_raport_keys/' . $raportId,[
'post' => [
'name_raport' => $this->nameRaport,
'description_raport' => 'Raport test description added by test and modified',
],
'clienti_raport' => [
$clientId
],
'subcategories' => [
'Romania', 'Europa'
],
'json' => [
[
'name' => 'Romania',
'score' => 10,
'type' => 'parent_keys',
'id' => 1,
'children' => [
[
'name' => 'legea',
'score' => 8, // changed
'type' => 'child_keys',
'id' => 2,
],
[
'name' => 'legi',
'score' => 8, // changed
'type' => 'child_keys',
'id' => 4,
],
[
'name' => 'Europa',
'score' => 8, // changed
'type' => 'exclude_keys',
'id' => 5,
],
// new keys
[
'name' => 'World',
'score' => 8,
'type' => 'exclude_keys',
'id' => 5,
]
]
],
],
'modificat_keys' => 0,
]);
$result->assertStatus(200);
$result->assertSee('1');
// Check if saved
$this->seeInDatabase('ip_rapoarte', [
'id' => $raportId,
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
'description_raport' => 'Raport test description added by test and modified',
]);
// Check log
$this->seeInDatabase('ip_rapoarte_log', [
'id_raport' => $raportId,
'action' => 'a modificat',
'target' => 'raportul template',
'modified_by' => $this->userSessionCompanie['user_id'],
]);
$keyCombinationId = $this->db->table('ip_rapoarte')->where('id', $raportId)->get()->getRow()->id_key;
$this->seeInDatabase('key_parent', [
'id_key' => $keyCombinationId,
'key_word' => 'Romania',
'key_score' => 10,
]);
$this->seeInDatabase('key_child', [
'id_key' => $keyCombinationId,
'key_word' => 'legea',
'key_score' => 6,
]);
$this->seeInDatabase('key_child', [
'id_key' => $keyCombinationId,
'key_word' => 'legi',
'key_score' => 7,
]);
// Check key exclude
$this->seeInDatabase('key_exclude', [
'id_key' => $keyCombinationId,
'key_word' => 'Europa',
'key_score' => 10,
]);
$this->dontSeeInDatabase('key_exclude', [
'id_key' => $keyCombinationId,
'key_word' => 'World',
'key_score' => 10,
]);
$idKeyParent = $this->grabFromDatabase('key_parent', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'Romania',
'key_score' => 10,
]);
$idKeyChild1 = $this->grabFromDatabase('key_child', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'legea',
'key_score' => 6,
]);
$idKeyChild2 = $this->grabFromDatabase('key_child', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'legi',
'key_score' => 7,
]);
$idKeyExclude = $this->grabFromDatabase('key_exclude', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'Europa',
'key_score' => 10,
]);
// Check association keys
$this->seeInDatabase('key_associations_child', [
'key_parent' => $idKeyParent,
'key_child' => $idKeyChild1,
]);
$this->seeInDatabase('key_associations_child', [
'key_parent' => $idKeyParent,
'key_child' => $idKeyChild2,
]);
$this->seeInDatabase('key_associations_exclude', [
'key_parent' => $idKeyParent,
'key_exclude' => $idKeyExclude,
]);
// Check client_raport
$this->seeInDatabase('client_raport', [
'id_raport' => $raportId,
'id_client' => $clientId,
]);
$this->dontSeeInDatabase('client_raport', [
'id_raport' => $raportId,
'id_client' => $clientId2,
]);
}
public function testUpdateRaportTemplate()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$clientId = 10;
$clientId2 = 11;
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/rapoarte/update_ajax_raport_keys/' . $raportId,[
'post' => [
'name_raport' => $this->nameRaport,
'description_raport' => 'Raport test description added by test and modified again',
],
'clienti_raport' => [
$clientId, $clientId2
],
'subcategories' => [
'Romania', 'Europa', 'World'
],
'json' => [
[
'name' => 'Romania',
'score' => 9, // changed
'type' => 'parent_keys',
'id' => 1,
'children' => [
[
'name' => 'legea',
'score' => 8, // changed
'type' => 'child_keys',
'id' => 2,
],
[
'name' => 'legi',
'score' => 8, // changed
'type' => 'child_keys',
'id' => 4,
],
[
'name' => 'Europa',
'score' => 8, // changed
'type' => 'exclude_keys',
'id' => 5,
],
// new keys
[
'name' => 'World',
'score' => 8,
'type' => 'exclude_keys',
'id' => 5,
]
]
],
],
'modificat_keys' => 1,
]);
$result->assertStatus(200);
$result->assertSee('1');
$this->seeInDatabase('ip_rapoarte', [
'id' => $raportId,
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
'description_raport' => 'Raport test description added by test and modified again',
'categories' => 'Romania<>Europa<>World',
]);
$modifiedTimes = $this->db->table('ip_rapoarte_log')->where('id_raport', $raportId)
->where('action', 'a modificat')->countAllResults();
$this->assertEquals(2, $modifiedTimes);
$keyCombinationId = $this->db->table('ip_rapoarte')->where('id', $raportId)->get()->getRow()->id_key;
$this->seeInDatabase('key_parent', [
'id_key' => $keyCombinationId,
'key_word' => 'Romania',
'key_score' => 9,
]);
$this->seeInDatabase('key_child', [
'id_key' => $keyCombinationId,
'key_word' => 'legea',
'key_score' => 8,
]);
$this->seeInDatabase('key_child', [
'id_key' => $keyCombinationId,
'key_word' => 'legi',
'key_score' => 8,
]);
// Check key exclude
$this->seeInDatabase('key_exclude', [
'id_key' => $keyCombinationId,
'key_word' => 'Europa',
'key_score' => 8,
]);
$this->seeInDatabase('key_exclude', [
'id_key' => $keyCombinationId,
'key_word' => 'World',
'key_score' => 8,
]);
$idKeyParent = $this->grabFromDatabase('key_parent', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'Romania',
]);
$idKeyChild1 = $this->grabFromDatabase('key_child', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'legea',
]);
$idKeyChild2 = $this->grabFromDatabase('key_child', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'legi',
]);
$idKeyExclude = $this->grabFromDatabase('key_exclude', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'Europa',
]);
$idKeyExclude2 = $this->grabFromDatabase('key_exclude', 'id', [
'id_key' => $keyCombinationId,
'key_word' => 'World',
]);
// Check association keys
$this->seeInDatabase('key_associations_child', [
'key_parent' => $idKeyParent,
'key_child' => $idKeyChild1,
]);
$this->seeInDatabase('key_associations_child', [
'key_parent' => $idKeyParent,
'key_child' => $idKeyChild2,
]);
$this->seeInDatabase('key_associations_exclude', [
'key_parent' => $idKeyParent,
'key_exclude' => $idKeyExclude,
]);
$this->seeInDatabase('key_associations_exclude', [
'key_parent' => $idKeyParent,
'key_exclude' => $idKeyExclude2,
]);
// Check client_raport
$this->seeInDatabase('client_raport', [
'id_raport' => $raportId,
'id_client' => $clientId,
]);
$this->seeInDatabase('client_raport', [
'id_raport' => $raportId,
'id_client' => $clientId2,
]);
}
public function testAddRaportSinglePage()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', 'rapoarte/raport_nou/' . $raportId);
$result->assertStatus(200);
$result->assertSee('CREEAZA RAPORT');
$result->assertSee('Nume raport');
}
public function testAjaxValidationCreateRaportSingle()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', 'rapoarte/ajax_polling', [
'raport' => $raportId,
]);
$result->assertSee('Nu au fost introduse toate campurile');
}
public function testAjaxValidationDatesCreateRaportSingle()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', 'rapoarte/ajax_polling', [
'raport' => $raportId,
'name_raport' => 'test',
'start_date' => '2020-201-201',
'end_date' => '2020-201-201',
]);
$result->assertSee('Invalid dates');
}
public function testSuccessCreateRaportSingle()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$keyId = $this->grabFromDatabase('ip_rapoarte', 'id_key', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', 'rapoarte/ajax_polling', [
'raport' => $raportId,
'name_raport' => 'Test 106 articles',
'start_date' => '2023-05-01 00:00:00',
'end_date' => '2023-05-02 00:00:00',
]);
// Total articles for these should be 106 articles
$this->seeInDatabase('ip_rapoarte_single',[
'id_raport' => $raportId,
'name_raport' => 'Test 106 articles',
'date_start' => '2023-05-01 00:00:00',
'date_end' => '2023-05-02 00:00:00',
'total_articole' => 106,
'modified_articole' => 0,
'current_id_key' => $keyId,
]);
}
public function testArticleListPage()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/rapoarte/editare_raport/' . $raportSingleId);
$result->assertSee('LISTA ARTICOLE');
$result->assertSee('<span class="c--secondary js-total-articole"> 106</span>');
}
public function testGetArticleListRaportZilnic()
{
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/articol/articol/' . $raportSingleId , [
'raport' => $raportSingleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals(106, $json['recordsTotal']);
$this->assertStringContainsString('Ce salariu primeşte un muncitor din Sri Lanka, în România: „Sunt plătiti mai bine decât românii pentru că muncesc mai mult”',
$json['data'][0]['titlu_articol']);
}
/**
* Test open filter modal on raport zilnic (newly created)
* @return void
* @throws RedirectException
*/
public function testArticoleFiltreza()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/filtreaza' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertStringContainsString('Filtreaza', $json['html']);
$this->assertStringContainsString('Tone of voice', $json['html']);
// Assert no filter exists in database
$this->dontSeeInDatabase('ip_rapoarte_single_filter',[
'id_raport_single' => $raportSingleId,
]);
}
/**
* Test filter works after creating a raport zilnic(newly created and no modifications)
*
* @return void
* @throws RedirectException
*/
public function testSaveArticoleFiltreaza()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', 'articole/save_filter_options', [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'status_editat' => 'Editat',
'scor_min' => '',
'scor_max' => '',
'data_publicarii' => '',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->assertEquals(0, $json['total_articole']);
// Assert filter exists in database
$this->seeInDatabase('ip_rapoarte_single_filter',[
'id_raport_single' => $raportSingleId,
'meta_key' => 'status_editat',
'meta_value' => 1,
]);
// Get all articles, and it should return 0 since no article has been editet yet
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/articol/articol/' . $raportSingleId , [
'raport' => $raportSingleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals(0, $json['recordsTotal']);
// Change status_editat to 'Needitate' and you will get back all articles
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', 'articole/save_filter_options', [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'status_editat' => 'Needitat',
'scor_min' => '',
'scor_max' => '',
'data_publicarii' => '',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->assertEquals(106, $json['total_articole']);
// Assert filter exists in database
$this->seeInDatabase('ip_rapoarte_single_filter',[
'id_raport_single' => $raportSingleId,
'meta_key' => 'status_editat',
'meta_value' => '0',
]);
// Get all articles, and it should return 106 since no article has been edited yet
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/articol/articol/' . $raportSingleId , [
'raport' => $raportSingleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals(106, $json['recordsTotal']);
// Change status_editat to 'Toate' and you will get back all articles
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', 'articole/save_filter_options', [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'status_editat' => 'Toate',
'scor_min' => '',
'scor_max' => '',
'data_publicarii' => '',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->assertEquals(106, $json['total_articole']);
// Assert filter exists in database
$this->seeInDatabase('ip_rapoarte_single_filter',[
'id_raport_single' => $raportSingleId,
'meta_key' => 'status_editat',
'meta_value' => 'skip_query',
]);
// Get all articles, and it should return 106 since all articles are returned
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/articol/articol/' . $raportSingleId , [
'raport' => $raportSingleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals(106, $json['recordsTotal']);
}
public function testEditeazaArticol()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$articolId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'id_raport' => $raportId,
'id_raport_single' => $raportSingleId,
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/editeaza_articol' , [
'raport' => $raportId,
'articol_salvat' => $articolId,
]);
$result->assertStatus(200);
$result->assertSee("Ce salariu primeşte un muncitor din Sri Lanka, în România:");
$json = json_decode($result->getJSON(), true);
/* $result->assertSee('<p id="caracter_articol" class="pseudo-input">Neutru</p>');
$result->assertSee('<p id="dedicat_articol" class="pseudo-input">Dedicat</p>');
$result->assertSee('<p id="relevant_articol" class="pseudo-input">Relevant</p>');
$result->assertSee('<p id="categorie_articol" class="pseudo-input">-</p>');
$result->assertSee('<input class="main-inputs" type="text" id="autor_articol" name="autor_articol" value="Forcos George" placeholder="adauga autor">');
*/
$this->assertStringContainsString('<p id="caracter_articol" class="pseudo-input">Neutru</p>', $json['results']);
$this->assertStringContainsString('<p id="dedicat_articol" class="pseudo-input">Dedicat</p>', $json['results']);
$this->assertStringContainsString('<p id="relevant_articol" class="pseudo-input">Relevant</p>', $json['results']);
$this->assertStringContainsString('<p id="categorie_articol" class="pseudo-input">-</p>', $json['results']);
$this->assertStringContainsString('<input class="main-inputs" type="text" id="autor_articol" name="autor_articol" value="Forcos George"', $json['results']);
}
public function testSaveArticol()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$articolId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'id_raport' => $raportId,
'id_raport_single' => $raportSingleId,
]);
$article = $this->db->table('ip_articole_salvate')->where('id', $articolId)->get()->getRow();
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articolId,
'title_article' => 'Editat - ' . $article->title,
'abstract_article' => '' . $article->abstract,
'source_article' => '' . $article->source,
'link_article' => $article->articol_url,
'caracter_articol' => 'Pozitiv',
'categorie_articol' => 'Romania',
'dedicat_articol' => 'Mentionat',
'relevant_articol' => 'Nerelevant',
'autor_articol' => 'Editat- ' . $article->author,
'publication_date' => '2023-05-20 13:12:31',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
// Now test if the article was saved
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/editeaza_articol' , [
'raport' => $raportId,
'articol_salvat' => $articolId,
]);
$result->assertStatus(200);
$result->assertSee("Editat - Ce salariu primeşte un muncitor din Sri Lanka, în România:");
$json = json_decode($result->getJSON(), true);
$this->assertStringContainsString('<p id="caracter_articol" class="pseudo-input">Pozitiv</p>', $json['results']);
$this->assertStringContainsString('<p id="dedicat_articol" class="pseudo-input">Mentionat</p>', $json['results']);
$this->assertStringContainsString('<p id="relevant_articol" class="pseudo-input">Nerelevant</p>', $json['results']);
$this->assertStringContainsString('<p id="categorie_articol" class="pseudo-input">Romania</p>', $json['results']);
$this->assertStringContainsString('<input class="main-inputs" type="text" id="autor_articol" name="autor_articol" value="Editat- Forcos George"', $json['results']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolId,
'status_editat' => 1,
]);
}
public function testStergeArticol()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$article = $this->db->table('ip_articole_salvate')
->where('id_raport_single', $raportSingleId)
->orderBy('id', 'desc')
->get()->getRow();
$articleId = $article->id;
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/articol/articol/' . $raportSingleId, [
'raport' => $raportSingleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals(106, $json['recordsTotal']);
// Delete articol
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/sterge_articol', [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articleId,
]);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleId,
'status' => 0,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/articol/articol/' . $raportSingleId, [
'raport' => $raportSingleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals(105, $json['recordsTotal']);
$result = $this->withSession($this->userSessionCompanie)
->call('post', 'articole/restore_articol', [
'raport' => $raportId,
'raport_single_id' => $raportSingleId,
'articol_restore' => $articleId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleId,
'status' => 1,
]);
}
public function testSetArticleAsPrincipal()
{
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$articles = $this->db->table('ip_articole_salvate')
->where('id_raport_single', $raportSingleId)
->orderBy('id', 'asc')
->limit(10)
->get()->getResult();
$articleMainId = $articles[0]->id;
$article = $this->db->table('ip_articole_salvate')->where('id', $articleMainId)->get()->getRow();
$stiri_conectate = [
$this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'Ce se întâmplă cu Legea arendei? Nina Gheorghiță, LAPAR: Durata minimă de arendare e prima nevoie a agriculturii!',
]),
$this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'România, prima calificare la Europeanul de Handbal, cu mari emoții, după aproape 30 de ani / Istoria „tricolorilor” la EURO și la Mondiale',
]),
$this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'Țară mare, angajați puțini. România are cel mai mic procent de persoane active, raportat la media europeană',
]),
$this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'Survivor România 1 mai 2023. Plecări pe bandă rulantă, surpriză totală. Când se anunţă marele câştigător',
]),
];
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articleMainId,
'title_article' => $article->title,
'abstract_article' => '' . $article->abstract,
'source_article' => '' . $article->source,
'link_article' => $article->articol_url,
'caracter_articol' => 'Pozitiv',
'categorie_articol' => 'Romania',
'dedicat_articol' => 'Mentionat',
'relevant_articol' => 'Nerelevant',
'autor_articol' => $article->author,
'publication_date' => '2023-05-20 13:12:31',
'stiri_conectate' => $stiri_conectate,
'tip_articol' => 'principal',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainId,
'title' => $article->title,
'stire_originala' => 'articol principal',
'stiri_conectate' => implode(',', $stiri_conectate),
]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $stiri_conectate[0],
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainId,
]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $stiri_conectate[1],
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainId,
]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $stiri_conectate[2],
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainId,
]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $stiri_conectate[3],
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainId,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/articole/compara_articole', [
'raport' => $raportId,
'articol_salvat' => $articleMainId,
'raport_single' => $raportSingleId,
'offset' => 0,
'limit' => 10,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->assertEquals(4, $json['$results_count']);
$this->assertEquals('Ce se întâmplă cu Legea arendei? Nina Gheorghiță, LAPAR: Durata minimă de arendare e prima nevoie a agriculturii!',
$json['results'][0]['title']
);
$this->assertEquals('România, prima calificare la Europeanul de Handbal, cu mari emoții, după aproape 30 de ani / Istoria „tricolorilor” la EURO și la Mondiale',
$json['results'][1]['title']
);
$this->assertEquals('Țară mare, angajați puțini. România are cel mai mic procent de persoane active, raportat la media europeană',
$json['results'][2]['title']
);
$this->assertEquals('Survivor România 1 mai 2023. Plecări pe bandă rulantă, surpriză totală. Când se anunţă marele câştigător',
$json['results'][3]['title']
);
// Next should be article 2 from the list
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/articole/compara_articole', [
'raport' => $raportId,
'articol_salvat' => $articleMainId,
'raport_single' => $raportSingleId,
'offset' => count($stiri_conectate),
'limit' => 10,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->assertEquals(4, $json['$results_count']);
$this->assertEquals('„Avem o ciumă a pensiilor speciale care este o inechitate”. Ciolacu: România trebuie să facă anumite reforme asumate în PNRR',
$json['results'][0]['title']
);
// Save articol asociat without modifying the main article
$articolId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'Survivor România 1 mai 2023. Plecări pe bandă rulantă, surpriză totală. Când se anunţă marele câştigător',
]);
$article = $this->db->table('ip_articole_salvate')->where('id', $articolId)->get()->getRow();
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articolId,
'title_article' => $article->title,
'abstract_article' => '' . $article->abstract,
'source_article' => '' . $article->source,
'link_article' => $article->articol_url,
'caracter_articol' => $article->caracter_articol,
'categorie_articol' => $article->categorie,
'dedicat_articol' => $article->dedicat,
'relevant_articol' => $article->relevant,
'autor_articol' => $article->author,
'publication_date' => $article->publication_date,
'stire_principala' => $article->stiri_conectate,
'tip_articol' => 'asociat',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolId,
'title' => 'Survivor România 1 mai 2023. Plecări pe bandă rulantă, surpriză totală. Când se anunţă marele câştigător',
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainId,
]);
// #19 - Articol asociat (id=7) salvat ca articol principal , verificat si articolul principal (id=1)
$articleMainIdNew = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => '„Avem o ciumă a pensiilor speciale care este o inechitate”. Ciolacu: România trebuie să facă anumite reforme asumate în PNRR',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articolId,
'title_article' => $article->title,
'abstract_article' => '' . $article->abstract,
'source_article' => '' . $article->source,
'link_article' => $article->articol_url,
'caracter_articol' => $article->caracter_articol,
'categorie_articol' => $article->categorie,
'dedicat_articol' => $article->dedicat,
'relevant_articol' => $article->relevant,
'autor_articol' => $article->author,
'publication_date' => $article->publication_date,
'stire_principala' => $article->stiri_conectate,
'stiri_conectate' => [
$articleMainIdNew
],
'tip_articol' => 'principal',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
// check this new articol principal
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolId,
'title' => 'Survivor România 1 mai 2023. Plecări pe bandă rulantă, surpriză totală. Când se anunţă marele câştigător',
'stire_originala' => 'articol principal',
'stiri_conectate' => $articleMainIdNew,
]);
// check new articol asociat
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainIdNew,
'title' => '„Avem o ciumă a pensiilor speciale care este o inechitate”. Ciolacu: România trebuie să facă anumite reforme asumate în PNRR',
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articolId,
]);
// check old articol principal
//Remove from array $stiri_conectate the id of the article that was saved as articol principal;
$stiri_conectate = array_diff($stiri_conectate, [$articolId]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainId,
'stire_originala' => 'articol principal',
'stiri_conectate' => implode(',', $stiri_conectate),
]);
// #19 - Articol asociat (id=6) sters si verificat articolul principal(id=1)
$articolStersId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'Țară mare, angajați puțini. România are cel mai mic procent de persoane active, raportat la media europeană',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/sterge_articol' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articolStersId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
// Check if the article was deleted
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolStersId,
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainId,
'status' => 0,
]);
// Check old articol principal has removed this article
$stiri_conectate = array_diff($stiri_conectate, [$articolStersId]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainId,
'stire_originala' => 'articol principal',
'stiri_conectate' => implode(',', $stiri_conectate),
]);
// #19 - Articol asociat (id=4) sters si restore (id=1)
$articolStersRestoreId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'România, prima calificare la Europeanul de Handbal, cu mari emoții, după aproape 30 de ani / Istoria „tricolorilor” la EURO și la Mondiale',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/sterge_articol' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articolStersRestoreId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
// Check if the article was deleted
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolStersRestoreId,
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainId,
'status' => 0,
]);
$stiri_conectateTemp = array_diff($stiri_conectate, [$articolStersRestoreId]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainId,
'stire_originala' => 'articol principal',
'stiri_conectate' => implode(',', $stiri_conectateTemp),
]);
// Restore the article
$result = $this->withSession($this->userSessionCompanie)
->call('post', 'articole/restore_articol', [
'raport' => $raportId,
'raport_single_id' => $raportSingleId,
'articol_restore' => $articolStersRestoreId,
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolStersRestoreId,
'status' => 1,
]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainId,
'stire_originala' => 'articol principal',
'stiri_conectate' => implode(',', $stiri_conectate),
]);
// #19 Articol asociat (id=3) cu save ca articol asociat pt alt principal si verificat ambele articole principale
$articolAsociatId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'România, prima calificare la Europeanul de Handbal, cu mari emoții, după aproape 30 de ani / Istoria „tricolorilor” la EURO și la Mondiale',
]);
$article = $this->db->table('ip_articole_salvate')->where('id', $articolAsociatId)->get()->getRow();
$articleMainIdNew2 = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'România nu reușește să atragă banii din PNRR. Gradul de absorbție este de 0,3%, banii zac nefolosiţi în Trezorerie',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articolAsociatId,
'title_article' => $article->title,
'abstract_article' => '' . $article->abstract,
'source_article' => '' . $article->source,
'link_article' => $article->articol_url,
'caracter_articol' => $article->caracter_articol,
'categorie_articol' => $article->categorie,
'dedicat_articol' => $article->dedicat,
'relevant_articol' => $article->relevant,
'autor_articol' => $article->author,
'publication_date' => $article->publication_date,
'stire_principala' => $articleMainIdNew2,
'tip_articol' => 'asociat',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolAsociatId,
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleMainIdNew2,
]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainIdNew2,
'stire_originala' => 'articol principal',
'stiri_conectate' => $articolAsociatId,
]);
$stiri_conectate = array_diff($stiri_conectate, [$articolAsociatId]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainId,
'stire_originala' => 'articol principal',
'stiri_conectate' => implode(',', $stiri_conectate),
]);
// #19 - Articol principal salvat ca articol asociat
$articleMainToAsociatId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'România nu reușește să atragă banii din PNRR. Gradul de absorbție este de 0,3%, banii zac nefolosiţi în Trezorerie',
]);
$articleMainToAsociat = $this->db->table('ip_articole_salvate')->where('id', $articleMainToAsociatId)->get()->getRow();
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articleMainToAsociatId,
'title_article' => $articleMainToAsociat->title,
'abstract_article' => '' . $articleMainToAsociat->abstract,
'source_article' => '' . $articleMainToAsociat->source,
'link_article' => $articleMainToAsociat->articol_url,
'caracter_articol' => $articleMainToAsociat->caracter_articol,
'categorie_articol' => $articleMainToAsociat->categorie,
'dedicat_articol' => $articleMainToAsociat->dedicat,
'relevant_articol' => $articleMainToAsociat->relevant,
'autor_articol' => $articleMainToAsociat->author,
'publication_date' => $articleMainToAsociat->publication_date,
'tip_articol' => 'asociat',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleMainToAsociatId,
'stire_originala' => 'articol asociat',
'stiri_conectate' => '',
]);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articolAsociatId,
'stire_originala' => '',
'stiri_conectate' => '',
]);
}
public function testArticolPrincipalFaraArticoleAsociate()
{
$title = 'Poliţia de Frontieră: Peste 125.000 de persoane au intrat, duminică, în România, dintre care aproape 9.000 de cetăţeni ucraineni';
$articleId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => $title,
]);
$article = $this->db->table('ip_articole_salvate')->where('id', $articleId)->get()->getRow();
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articleId,
'title_article' => $article->title,
'abstract_article' => '' . $article->abstract,
'source_article' => '' . $article->source,
'link_article' => $article->articol_url,
'caracter_articol' => 'Pozitiv',
'categorie_articol' => 'Romania',
'dedicat_articol' => 'Mentionat',
'relevant_articol' => 'Nerelevant',
'autor_articol' => $article->author,
'publication_date' => '2023-05-20 13:12:31',
'stiri_conectate' => null,
'tip_articol' => 'principal',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleId,
'stire_originala' => 'articol principal',
'stiri_conectate' => '',
]);
$this->dontSeeInDatabase('ip_articole_salvate', [
'stire_originala' => 'articol asociat',
'stiri_conectate' => $articleId,
]);
}
public function testArticolAsociatFaraArticolPrincipal()
{
$title = 'Poliţia de Frontieră: Peste 125.000 de persoane au intrat, duminică, în România, dintre care aproape 9.000 de cetăţeni ucraineni';
$articleId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => $title,
]);
$article = $this->db->table('ip_articole_salvate')->where('id', $articleId)->get()->getRow();
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withHeaders([
'X-Requested-With' => 'XMLHttpRequest' // simulate ajax request
])->withSession($this->userSessionCompanie)
->call('post', '/articole/salveaza_nou' , [
'raport' => $raportId,
'raport_single' => $raportSingleId,
'articol_salvat' => $articleId,
'title_article' => $article->title,
'abstract_article' => '' . $article->abstract,
'source_article' => '' . $article->source,
'link_article' => $article->articol_url,
'caracter_articol' => 'Pozitiv',
'categorie_articol' => 'Romania',
'dedicat_articol' => 'Mentionat',
'relevant_articol' => 'Nerelevant',
'autor_articol' => $article->author,
'publication_date' => '2023-05-20 13:12:31',
'stiri_conectate' => null,
'tip_articol' => 'asociat',
]);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertEquals('success', $json['status']);
$this->seeInDatabase('ip_articole_salvate', [
'id' => $articleId,
'stire_originala' => 'articol asociat',
'stiri_conectate' => '',
]);
$this->dontSeeInDatabase('ip_articole_salvate', [
//'stire_originala' => 'articol principal',
'stiri_conectate' => $articleId,
]);
}
public function testGenereazaRaport()
{
///rapoarte/genereaza_raport/2/10
$raportId = $this->grabFromDatabase('ip_rapoarte', 'id', [
'id_user' => $this->userSessionCompanie['user_id'],
'id_companie' => $this->userSessionCompanie['id_companie'],
'name_raport' => $this->nameRaport,
]);
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/rapoarte/genereaza_raport/' . $raportId . '/' . $raportSingleId);
$result->assertStatus(200);
$result->assertSee('Raport monitorizare');
$result->assertSee('Test 106 articles');
// Check if associat with no principal is still shown in report
$title = 'Poliţia de Frontieră: Peste 125.000 de persoane au intrat, duminică, în România, dintre care aproape 9.000 de cetăţeni ucraineni';
$result->assertSee($title);
$this->seeInDatabase('ip_rapoarte_single',[
'id' => $raportSingleId,
'status' => 'Raport generat',
]);
}
public function testStatisticiPage()
{
$raportSingleId = $this->grabFromDatabase('ip_rapoarte_single', 'id', [
'name_raport' => 'Test 106 articles',
]);
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/statistici/raport/' . $raportSingleId);
$result->assertStatus(200);
$result->assertSee('STATISTICI RAPORT Test 106 articles');
$result->assertSee('Test 106 articles');
$title = 'Poliţia de Frontieră: Peste 125.000 de persoane au intrat, duminică, în România, dintre care aproape 9.000 de cetăţeni ucraineni';
$result->assertSee($title);
$result = $this->withSession($this->userSessionCompanie)
->call('get', '/statistici/by_word?word=Romania&raport_single_id=' . $raportSingleId);
$result->assertStatus(200);
$json = json_decode($result->getJSON(), true);
$this->assertTrue($json['success']);
$this->assertEquals(19, $json['data'][0]['total_score']);
$this->assertStringContainsString('România, prima calificare la Europeanul de Handbal, cu mari emoții, după aproape 30 de ani / Istoria „tricolorilor” la EURO și la Mondiale', $json['data'][0]['titlu_articol']);
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/statistici/get_source_stats_words',[
'source' => 'psnews.ro',
'raport_single' => $raportSingleId,
]);
$result->assertStatus(200);
$result->assertSee(' Romania: <strong>x125');
$articleId = $this->grabFromDatabase('ip_articole_salvate', 'id', [
'title' => 'Editat - Ce salariu primeşte un muncitor din Sri Lanka, în România: „Sunt plătiti mai bine decât românii pentru că muncesc mai mult”',
'id_raport_single' => $raportSingleId,
]);
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/statistici/get_article_stats_words',[
'article' => $articleId,
]);
$result->assertStatus(200);
$result->assertSee(' Romania: <strong>x7</strong>');
$result = $this->withSession($this->userSessionCompanie)
->call('post', '/statistici/redoStatsRaport/' . $raportSingleId,[
]);
$result->assertStatus(200);
$result->assertSee('Romania: <strong>x319</strong>');
}
}