FOSSology  4.4.0
Open Source License Compliance by Open Source Software
FolderNavTest.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2015 Siemens AG
4  Author: Steffen Weber
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
8 namespace Fossology\Lib\UI;
9 
13 use Mockery as M;
14 
15 function Traceback_uri()
16 {
17  return 'uri';
18 }
19 
20 class FolderNavTest extends \PHPUnit\Framework\TestCase
21 {
23  private $dbManager;
25  private $folderDao;
27  private $folderNav;
29  private $uri;
30 
31  protected function setUp() : void
32  {
33  $this->folderDao = M::mock(FolderDao::class);
34  $this->dbManager = M::mock(DbManager::class);
35  $this->folderNav = new FolderNav($this->dbManager,$this->folderDao);
36  $this->uri = Traceback_uri();
37  $this->assertCountBefore = \Hamcrest\MatcherAssert::getCount();
38  }
39 
40  protected function tearDown() : void
41  {
42  $this->addToAssertionCount(\Hamcrest\MatcherAssert::getCount()-$this->assertCountBefore);
43  M::close();
44  }
45 
46  protected function getFormattedItem($row)
47  {
48  return Reflectory::invokeObjectsMethodnameWith($this->folderNav, 'getFormattedItem', array($row,$this->uri));
49  }
50 
51  protected function prepareShowFolderTree($parentFolderId='parentFolderId')
52  {
53  $this->folderDao->shouldReceive('getFolderTreeCte')->with($parentFolderId)
54  ->andReturn($parentFolderId.'Cte');
55  $this->dbManager->shouldReceive('prepare')->withArgs(array(anything(),startsWith($parentFolderId.'Cte')));
56  $this->dbManager->shouldReceive('execute')->withArgs(array(anything(),array($parentFolderId)))
57  ->andReturn($res=$parentFolderId.'Res');
58  $this->dbManager->shouldReceive('freeResult')->with($res);
59  return $res;
60  }
61 
62  public function testShowFolderTreeWithoutContent()
63  {
64  $res = $this->prepareShowFolderTree($parentFolderId='foo');
65  $this->dbManager->shouldReceive('fetchArray')->with($res)
66  ->andReturn($rowA=array('folder_pk'=>1, 'folder_name'=>'A', 'folder_desc'=>'', 'depth'=>0),false);
67  $out = $this->folderNav->showFolderTree($parentFolderId);
68  assertThat($out, equalTo('<ul id="tree"><li>'.$this->getFormattedItem($rowA).'</li></ul>'));
69  }
70 
71  public function testShowFolderTreeWithContent()
72  {
73  $res = $this->prepareShowFolderTree($parentFolderId='foo');
74  $this->dbManager->shouldReceive('fetchArray')->with($res)
75  ->andReturn($rowTop=array('folder_pk'=>1, 'folder_name'=>'Top', 'folder_desc'=>'', 'depth'=>0),
76  $rowA=array('folder_pk'=>2, 'folder_name'=>'B', 'folder_desc'=>'/A', 'depth'=>1),
77  $rowB=array('folder_pk'=>3, 'folder_name'=>'B', 'folder_desc'=>'/A/B', 'depth'=>2),
78  $rowC=array('folder_pk'=>4, 'folder_name'=>'C', 'folder_desc'=>'/C', 'depth'=>1),
79  false);
80  $out = $this->folderNav->showFolderTree($parentFolderId);
81  assertThat(str_replace("\n",'',$out), equalTo('<ul id="tree"><li>'.$this->getFormattedItem($rowTop).'<ul><li>'
82  .$this->getFormattedItem($rowA).'<ul><li>'
83  .$this->getFormattedItem($rowB).'</li></ul></li><li>'
84  .$this->getFormattedItem($rowC).'</li></ul></li></ul>'));
85  }
86 }
Traceback_uri()
Get the URI without query to this location.
Definition: common-parm.php:97
fo_dbManager * dbManager
fo_dbManager object
Definition: process.c:16