ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilTermsOfServiceAgreementsByLanguageTableDataProviderTest.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
9 {
13  protected $backupGlobals = false;
14 
18  private function isVsfStreamInstalled()
19  {
20  return @include_once('vfsStream.php');
21  }
22 
26  private function skipIfvfsStreamNotSupported()
27  {
28  if(!$this->isVsfStreamInstalled())
29  {
30  $this->markTestSkipped('Requires vfsStream (http://vfs.bovigo.org)');
31  }
32  }
33 
37  public function setUp()
38  {
39  if(!defined('CLIENT_ID'))
40  {
41  define('CLIENT_ID', 'phpunit');
42  }
43 
44  if($this->isVsfStreamInstalled())
45  {
46  vfsStreamWrapper::register();
47  }
48 
49  parent::setUp();
50  }
51 
56  {
57  require_once 'Services/TermsOfService/classes/class.ilTermsOfServiceTableDataProviderFactory.php';
59  $factory->setLanguageAdapter($this->getMockBuilder('ilLanguage')->setMethods(array('toJSON'))->disableOriginalConstructor()->getMock());
61 
62  $this->assertInstanceOf('ilTermsOfServiceAgreementByLanguageProvider', $provider);
63  $this->assertInstanceOf('ilTermsOfServiceTableDataProvider', $provider);
64 
65  return $provider;
66  }
67 
73  {
75 
76  $client_rel_path = implode('/', array('clients', 'default', 'agreement'));
77  $global_rel_path = implode('/', array('global', 'agreement'));
78 
79  $root = vfsStreamWrapper::setRoot(new vfsStreamDirectory('root'));
80  $customizing_dir = vfsStream::newDirectory('Customizing')->at($root);
81 
82  $client_dir = vfsStream::newDirectory($client_rel_path)->at($customizing_dir);
83  vfsStream::newFile('agreement_de.html', 0777)->at($client_dir);
84  file_put_contents(vfsStream::url('root/Customizing/' . $client_rel_path . '/agreement_de.html'), 'phpunit');
85 
86  $global_dir = vfsStream::newDirectory($global_rel_path)->at($customizing_dir);
87  vfsStream::newFile('agreement_en.html', 0777)->at($global_dir);
88  file_put_contents(vfsStream::url('root/Customizing/' . $global_rel_path . '/agreement_en.html'), 'phpunit');
89 
90  $provider->setSourceDirectories(array(
91  vfsStream::url('root/Customizing/' . $client_rel_path),
92  vfsStream::url('root/Customizing/' . $global_rel_path)
93  ));
94 
95  $lng = $this->getMockBuilder('ilLanguage')->setMethods(array('toJSON'))->disableOriginalConstructor()->getMock();
96  $installed_languages = array('en', 'de', 'fr');
97  $lng->expects($this->once())->method('getInstalledLanguages')->will($this->onConsecutiveCalls($installed_languages));
98  $provider->setLanguageAdapter($lng);
99 
100  $data = $provider->getList(array(), array());
101  $this->assertArrayHasKey('items', $data);
102  $this->assertArrayHasKey('cnt', $data);
103  $this->assertCount(count($installed_languages), $data['items']);
104  $this->assertEquals(count($installed_languages), $data['cnt']);
105 
106  for($i = 0; $i < count($installed_languages); $i++)
107  {
108  $this->assertArrayHasKey('language', $data['items'][$i]);
109  $this->assertArrayHasKey('agreement', $data['items'][$i]);
110  $this->assertArrayHasKey('agreement_document', $data['items'][$i]);
111  $this->assertArrayHasKey('agreement_document_modification_ts', $data['items'][$i]);
112 
113  if($installed_languages[$i] == 'fr')
114  {
115  $this->assertFalse(file_exists($data['items'][$i]['agreement_document']));
116  }
117  else
118  {
119  $this->assertTrue(file_exists($data['items'][$i]['agreement_document']));
120  }
121  }
122  }
123 
129  {
130  $expected = $this->getMockBuilder('ilLanguage')->setMethods(array('toJSON'))->disableOriginalConstructor()->getMock();
131 
132  $provider->setLanguageAdapter($expected);
133  $this->assertEquals($expected, $provider->getLanguageAdapter());
134  }
135 
141  {
142  $expected = array('/phpunit', '/ilias');
143 
144  $provider->setSourceDirectories($expected);
145  $this->assertEquals($expected, $provider->getSourceDirectories());
146  }
147 }
getList(array $params, array $filter)
{Table paramaters like limit or order Filter settings array}
testProviderShouldReturnSourceDirectoriesWhenSourceDirectoriesAreSet(ilTermsOfServiceAgreementByLanguageProvider $provider)
testProviderShouldReturnLanguageAdapterWhenLanguageAdapterIsSet(ilTermsOfServiceAgreementByLanguageProvider $provider)
testProviderReturnsAResultForEveryInstalledLanguage(ilTermsOfServiceAgreementByLanguageProvider $provider)
$data
global $lng
Definition: privfeed.php:40