public function testGetter()
 {
     $composer = $this->getMock('Composer\\Composer');
     $io = $this->getMock('Composer\\IO\\IOInterface');
     $policy = $this->getMock('Composer\\DependencyResolver\\PolicyInterface');
     $pool = $this->getMockBuilder('Composer\\DependencyResolver\\Pool')->disableOriginalConstructor()->getMock();
     $installedRepo = $this->getMockBuilder('Composer\\Repository\\CompositeRepository')->disableOriginalConstructor()->getMock();
     $request = $this->getMockBuilder('Composer\\DependencyResolver\\Request')->disableOriginalConstructor()->getMock();
     $operations = array($this->getMock('Composer\\DependencyResolver\\Operation\\OperationInterface'));
     $event = new InstallerEvent('EVENT_NAME', $composer, $io, $policy, $pool, $installedRepo, $request, $operations);
     $this->assertSame('EVENT_NAME', $event->getName());
     $this->assertInstanceOf('Composer\\Composer', $event->getComposer());
     $this->assertInstanceOf('Composer\\IO\\IOInterface', $event->getIO());
     $this->assertInstanceOf('Composer\\DependencyResolver\\PolicyInterface', $event->getPolicy());
     $this->assertInstanceOf('Composer\\DependencyResolver\\Pool', $event->getPool());
     $this->assertInstanceOf('Composer\\Repository\\CompositeRepository', $event->getInstalledRepo());
     $this->assertInstanceOf('Composer\\DependencyResolver\\Request', $event->getRequest());
     $this->assertCount(1, $event->getOperations());
 }
 public function postDependencySolve(InstallerEvent $event)
 {
     if (!$this->enabled) {
         return;
     }
     $extra = $event->getComposer()->getPackage()->getExtra();
     $uninstall = array_get($extra, 'xpressengine-plugin.uninstall', []);
     foreach ($event->getOperations() as $operation) {
         /** @var UpdateOperation $operation */
         if (is_subclass_of($operation, UpdateOperation::class) || is_subclass_of($operation, InstallOperation::class)) {
             $target = $operation->getInitialPackage();
             if (in_array($target->getName(), $uninstall)) {
                 throw new \Exception('xpressengine-installer: To install or update the package requested to delete is not allowed.', 66);
             }
         }
     }
 }