-
Notifications
You must be signed in to change notification settings - Fork 440
/
Copy pathFsProducerTest.php
67 lines (54 loc) · 2.14 KB
/
FsProducerTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
namespace Enqueue\Fs\Tests;
use Enqueue\Fs\FsContext;
use Enqueue\Fs\FsDestination;
use Enqueue\Fs\FsMessage;
use Enqueue\Fs\FsProducer;
use Enqueue\Null\NullMessage;
use Enqueue\Null\NullQueue;
use Enqueue\Test\ClassExtensionTrait;
use Interop\Queue\Exception\InvalidDestinationException;
use Interop\Queue\Exception\InvalidMessageException;
use Interop\Queue\Producer;
use Makasim\File\TempFile;
class FsProducerTest extends \PHPUnit\Framework\TestCase
{
use ClassExtensionTrait;
public function testShouldImplementProducerInterface()
{
$this->assertInstanceOf(Producer::class, new FsProducer($this->createContextMock()));
}
public function testThrowIfDestinationNotFsOnSend()
{
$producer = new FsProducer($this->createContextMock());
$this->expectException(InvalidDestinationException::class);
$this->expectExceptionMessage('The destination must be an instance of Enqueue\Fs\FsDestination but got Enqueue\Null\NullQueue.');
$producer->send(new NullQueue('aQueue'), new FsMessage());
}
public function testThrowIfMessageNotFsOnSend()
{
$producer = new FsProducer($this->createContextMock());
$this->expectException(InvalidMessageException::class);
$this->expectExceptionMessage('The message must be an instance of Enqueue\Fs\FsMessage but it is Enqueue\Null\NullMessage.');
$producer->send(new FsDestination(TempFile::generate()), new NullMessage());
}
public function testShouldCallContextWorkWithFileAndCallbackToItOnSend()
{
$destination = new FsDestination(TempFile::generate());
$contextMock = $this->createContextMock();
$contextMock
->expects($this->once())
->method('workWithFile')
->with($this->identicalTo($destination), 'a+', $this->isInstanceOf(\Closure::class))
;
$producer = new FsProducer($contextMock);
$producer->send($destination, new FsMessage());
}
/**
* @return \PHPUnit\Framework\MockObject\MockObject|FsContext
*/
private function createContextMock()
{
return $this->createMock(FsContext::class);
}
}