public function testGetMaterialsWithTag()
 {
     $mm = new MultimediaObject();
     $m1 = new Material();
     $m1->setTags(array('master'));
     $m2 = new Material();
     $m2->setTags(array('mosca', 'master', 'old'));
     $m3 = new Material();
     $m3->setTags(array('master', 'mosca'));
     $m4 = new Material();
     $m4->setTags(array('flv', 'itunes', 'hide'));
     $m5 = new Material();
     $m5->setTags(array('flv', 'webtv'));
     $mm->addMaterial($m3);
     $mm->addMaterial($m2);
     $mm->addMaterial($m1);
     $mm->addMaterial($m4);
     $mm->addMaterial($m5);
     $this->assertEquals(array($m3, $m2, $m1), $mm->getMaterialsWithTag('master'));
     $this->assertEquals($m3, $mm->getMaterialWithTag('master'));
     $this->assertEquals(null, $mm->getMaterialWithTag('del_universo'));
     $this->assertEquals($m3, $mm->getMaterialWithAnyTag(array('master', 'pr')));
     $this->assertEquals(array($m2), $mm->getMaterialsWithAllTags(array('master', 'mosca', 'old')));
     $this->assertTrue(in_array($mm->getMaterialWithAllTags(array('mosca', 'master')), array($m3, $m2)));
     $this->assertEquals(null, $mm->getMaterialWithAllTags(array('mosca', 'master', 'del_universo')));
     $this->assertEquals(4, count($mm->getMaterialsWithAnyTag(array('master', 'webtv'))));
     $this->assertEquals(1, count($mm->getMaterialWithAnyTag(array('master'))));
     $this->assertEquals(null, $mm->getMaterialWithAnyTag(array('del_universo')));
     $this->assertEquals(5, count($mm->getFilteredMaterialsWithTags()));
     $this->assertEquals(3, count($mm->getFilteredMaterialsWithTags(array('master'))));
     $this->assertEquals(1, count($mm->getFilteredMaterialsWithTags(array('master'), array('mosca', 'old'))));
     $this->assertEquals(0, count($mm->getFilteredMaterialsWithTags(array(), array('mosca', 'old'), array('master'))));
     $this->assertEquals(3, count($mm->getFilteredMaterialsWithTags(array(), array(), array('flv'))));
     $this->assertEquals(0, count($mm->getFilteredMaterialsWithTags(array(), array(), array('flv', 'master'))));
     $this->assertEquals(5, count($mm->getFilteredMaterialsWithTags(array(), array(), array(), array('flv', 'master'))));
     $this->assertEquals(1, count($mm->getFilteredMaterialsWithTags(array('mosca', 'old'), array(), array(), array('old'))));
 }
 public function testGetCaptions()
 {
     $mm = new MultimediaObject();
     $this->dm->persist($mm);
     $this->dm->flush();
     $captions = $this->materialService->getCaptions($mm)->toArray();
     $this->assertEquals(0, count($captions));
     $material1 = new Material();
     $material2 = new Material();
     $material3 = new Material();
     $material4 = new Material();
     $material5 = new Material();
     $material1->setMimeType('pdf');
     $material2->setMimeType('vtt');
     $material3->setMimeType('vtt');
     $material4->setMimeType('pdf');
     $material5->setMimeType('vtt');
     $mm->addMaterial($material1);
     $mm->addMaterial($material2);
     $mm->addMaterial($material3);
     $mm->addMaterial($material4);
     $mm->addMaterial($material5);
     $this->dm->persist($mm);
     $this->dm->flush();
     $captions = $this->materialService->getCaptions($mm)->toArray();
     $this->assertEquals(3, count($captions));
     $this->assertFalse(in_array($material1, $captions));
     $this->assertTrue(in_array($material2, $captions));
     $this->assertTrue(in_array($material3, $captions));
     $this->assertFalse(in_array($material4, $captions));
     $this->assertTrue(in_array($material5, $captions));
 }
 /**
  * Save form data of Material
  *
  * @return Material $material
  */
 private function saveFormData(Material $material, $formData)
 {
     if (array_key_exists('i18n_name', $formData)) {
         $material->setI18nName($formData['i18n_name']);
     }
     if (array_key_exists('hide', $formData)) {
         $material->setHide($formData['hide']);
     }
     if (array_key_exists('language', $formData)) {
         $material->setLanguage($formData['language']);
     }
     if (array_key_exists('mime_type', $formData)) {
         $material->setMimeType($formData['mime_type']);
     }
     return $material;
 }