phpDocx = $this->getMockBuilder(CreateDocx::class)->disableOriginalConstructor()->getMock();
$this->fileUtils = $this->getMockBuilder(FileUtils::class)->disableOriginalConstructor()->getMock();
}
public function testSupport(): void
{
$encoder = $this->getMockBuilder(DocXEncoder::class)
->setConstructorArgs([$this->phpDocx, $this->fileUtils])
->setMethodsExcept(['support'])
->getMock();
$this->assertTrue($encoder->support('docx'));
$this->assertFalse($encoder->support('txt'));
}
public function testEncode(): void
{
$encoder = $this->getMockBuilder(DocXEncoder::class)
->setConstructorArgs([$this->phpDocx, $this->fileUtils])
->setMethodsExcept(['encode'])
->getMock();
$this->fileUtils
->expects(self::once())
->method('getTempFilename')
->with('docx')
->willReturn('tmp/temp.docx');
$this->phpDocx
->expects($this->once())
->method('embedHtml')
->with('
content
');
$this->phpDocx
->expects(self::once())
->method('createDocx')
->with('tmp/temp.docx');
$this->fileUtils
->expects(self::once())
->method('getFileContent')
->with('tmp/temp.docx')
->willReturn('%%encoded%%');
$this->fileUtils
->expects(self::once())
->method('rmIfExist')
->with('tmp/temp.docx');
$this->assertEquals(
'%%encoded%%',
$encoder->encode('content
')
);
}
public function testEncodeWithError(): void
{
$encoder = $this->getMockBuilder(DocXEncoder::class)
->setConstructorArgs([$this->phpDocx, $this->fileUtils])
->setMethodsExcept(['encode'])
->getMock();
$this->fileUtils
->method('getTempFilename')
->with('docx')
->willReturn('tmp/temp.docx');
$this->phpDocx
->method('embedHtml')
->with('content
');
$this->phpDocx
->method('createDocx')
->with('tmp/temp.docx');
$this->fileUtils
->method('getFileContent')
->willThrowException(new \Exception('error'));
$this->fileUtils
->expects(self::once())
->method('rmIfExist')
->with('tmp/temp.docx');
$this->expectException(\Exception::class);
$this->expectExceptionMessage('error');
$encoder->encode('content
');
}
}