/** * Register a resource to be watched. * * @param string $resource * @return \JasonLewis\ResourceWatcher\Listener */ public function watch($resource) { if (!$this->files->exists($resource)) { throw new RuntimeException('Resource must exist before you can watch it.'); } elseif ($this->files->isDirectory($resource)) { $resource = new DirectoryResource(new SplFileInfo($resource), $this->files); $resource->setupDirectory(); } else { $resource = new FileResource(new SplFileInfo($resource), $this->files); } // The listener gives users the ability to bind listeners on the events // created when watching a file or directory. We'll give the listener // to the tracker so the tracker can fire any bound listeners. $listener = new Listener(); $this->tracker->register($resource, $listener); return $listener; }
public function testResourceRegisteredWithTracker() { $resource = m::mock('JasonLewis\\ResourceWatcher\\Resource\\ResourceInterface'); $resource->shouldReceive('getKey')->twice()->andReturn('foo'); $listener = m::mock('JasonLewis\\ResourceWatcher\\Listener'); $tracker = new Tracker(); $tracker->register($resource, $listener); $this->assertTrue($tracker->isTracked($resource)); }