public function testMakeByExistingFileModelId() { $oldFileContentsCount = FileContent::getCount(); $file1 = ZurmoTestHelper::createFileModel('testNote.txt'); $file2 = FileModelUtil::makeByExistingFileModelId($file1->id, true); $file1Content = $file1->fileContent; $file2Id = $file2->id; $this->assertTrue($file2 !== false); $this->assertEquals($file1->name, $file2->name); $this->assertEquals($file1->type, $file2->type); $this->assertEquals($file1->size, $file2->size); $this->assertEquals($file1Content->content, $file2->fileContent->content); // because fileContent was not replicated but referenced in file2. $this->assertEquals($file1Content->id, $file2->fileContent->id); $this->assertEquals($oldFileContentsCount + 1, FileContent::getCount()); $file1->delete(); FileModel::forgetAll(); $file2 = FileModel::getById($file2Id); $this->assertEquals($file1Content->content, $file2->fileContent->content); // deleting file1 should still preserve its content as its being used by file2. $this->assertEquals($oldFileContentsCount + 1, FileContent::getCount()); $file2->delete(); // deleting fil2 should get rid of the fileContent too. $this->assertEquals($oldFileContentsCount, FileContent::getCount()); }