Пример #1
0
 public function testResolveTimeouts()
 {
     $machine = new StateMachine($this->adapter, $this->payloadHandler, $this->timeoutHandler, $this->lockHandler);
     $this->assertFalse($this->payloadHandler->wasStored());
     $this->assertFalse($this->lockHandler->isLocked('FakeIdentifier'));
     $this->assertFalse($this->lockHandler->wasLocked('FakeIdentifier'));
     $machine->triggerEvent('goPending', 'FakeIdentifier');
     usleep(800000);
     // 0.8s
     $history = $machine->resolveTimeouts();
     // no expires, nothing to do
     $this->assertEquals([], $history);
     usleep(1500000);
     // 1.5s
     $history = $machine->resolveTimeouts();
     // now expired
     $this->assertEquals(['FakeIdentifier' => ['new', 'pending', 'error', 'pending', 'done']], $history);
     $this->assertTrue($this->payloadHandler->wasStored());
     $this->assertFalse($this->lockHandler->isLocked('FakeIdentifier'));
     $this->assertTrue($this->lockHandler->wasLocked('FakeIdentifier'));
 }