dummyDbi = $this->createDbiDummy(); $this->dbi = $this->createDatabaseInterface($this->dummyDbi); DatabaseInterface::$instance = $this->dbi; } public function testError(): void { $this->dummyDbi->addResult('SHOW COLUMNS FROM `cvv`.`enums` LIKE \'set\'', false); $this->dummyDbi->addResult('SHOW INDEXES FROM `cvv`.`enums`', false); $request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/') ->withParsedBody([ 'db' => 'cvv', 'table' => 'enums', 'column' => 'set', 'curr_value' => 'b&c', ]); Current::$database = 'cvv'; Current::$table = 'enums'; $responseRenderer = new ResponseRenderer(); $template = new Template(); $relation = new Relation($this->dbi); $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); $sql = new Sql( $this->dbi, $relation, self::createStub(RelationCleanup::class), self::createStub(Transformations::class), $template, $bookmarkRepository, Config::getInstance(), ); $sqlController = new SetValuesController($responseRenderer, $template, $sql); $sqlController($request); self::assertFalse($responseRenderer->hasSuccessState(), 'expected the request to fail'); self::assertSame(['message' => 'Error in processing request'], $responseRenderer->getJSONResult()); } public function testSuccess(): void { $this->dummyDbi->addResult( 'SHOW COLUMNS FROM `cvv`.`enums` LIKE \'set\'', [ [ 'set', 'set(\'\',\'a&b\',\'b&c\',\'vrai&\',\'\')', 'No', '', 'NULL', '', ], ], ['Field', 'Type', 'Null', 'Key', 'Default', 'Extra'], ); $this->dummyDbi->addResult('SHOW INDEXES FROM `cvv`.`enums`', []); $request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/') ->withParsedBody([ 'db' => 'cvv', 'table' => 'enums', 'column' => 'set', 'curr_value' => 'b&c', ]); Current::$database = 'cvv'; Current::$table = 'enums'; $responseRenderer = new ResponseRenderer(); $template = new Template(); $relation = new Relation($this->dbi); $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); $sql = new Sql( $this->dbi, $relation, self::createStub(RelationCleanup::class), self::createStub(Transformations::class), $template, $bookmarkRepository, Config::getInstance(), ); $sqlController = new SetValuesController($responseRenderer, $template, $sql); $sqlController($request); self::assertTrue($responseRenderer->hasSuccessState(), 'expected the request not to fail'); self::assertSame( [ 'select' => '' . "\n", ], $responseRenderer->getJSONResult(), ); } }