public function testMergeGroupsWithFIlters() { // create groups $productGroup = array(); foreach (range(1, 3) as $i) { $productGroup[$i] = ProductFileGroup::getNewInstance($this->product); $productGroup[$i]->save(); } // create files $productFile = array(); $productFiles = array(); $dir = ClassLoader::getRealPath('cache') . '/'; foreach (range(1, 2) as $i) { file_put_contents($productFiles[$i] = $dir . md5($i), "file {$i}"); $productFile[$i] = ProductFile::getNewInstance($this->product, $productFiles[$i], "test_file_{$i}.txt"); $productFile[$i]->save(); } $productFile[1]->productFileGroup->set($productGroup[2]); $productFile[1]->save(); $this->assertEqual($this->product->getFileGroups()->getTotalRecordCount(), 3); $this->assertEqual($this->product->getFiles()->getTotalRecordCount(), 2); $filesMergedWithGroups = $this->product->getFilesMergedWithGroupsArray(); $this->assertEqual(count($filesMergedWithGroups), 4); // Check files without group $this->assertTrue(isset($filesMergedWithGroups[1]['ID'])); $this->assertEqual($filesMergedWithGroups[1]['ID'], $productFile[2]->getID()); $this->assertFalse(isset($filesMergedWithGroups[1]['ProductFileGroup']['ID'])); // Check first group $this->assertFalse(isset($filesMergedWithGroups[2]['ID'])); $this->assertTrue(isset($filesMergedWithGroups[2]['ProductFileGroup']['ID'])); $this->assertEqual($filesMergedWithGroups[2]['ProductFileGroup']['ID'], $productGroup[1]->getID()); // Check second group $this->assertTrue(isset($filesMergedWithGroups[3]['ID'])); $this->assertEqual($filesMergedWithGroups[3]['ID'], $productFile[1]->getID()); $this->assertTrue(isset($filesMergedWithGroups[3]['ProductFileGroup']['ID'])); $this->assertEqual($filesMergedWithGroups[3]['ProductFileGroup']['ID'], $productGroup[2]->getID()); // Check second group $this->assertFalse(isset($filesMergedWithGroups[4]['ID'])); $this->assertTrue(isset($filesMergedWithGroups[4]['ProductFileGroup']['ID'])); $this->assertEqual($filesMergedWithGroups[4]['ProductFileGroup']['ID'], $productGroup[3]->getID()); foreach ($productFiles as $fileName) { unlink($fileName); } foreach ($productFile as $file) { $file->delete(); } }