createDatabaseInterface(); Current::$server = 2; $GLOBALS['where_clause'] = null; $_POST = []; } public function testChangeRowsController(): void { $request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/') ->withParsedBody(['rows_to_delete' => 'row']); $mock = self::createMock(ChangeController::class); $mock->expects(self::once())->method('__invoke')->with($request); (new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))($request); /** @psalm-suppress InvalidArrayOffset */ self::assertSame([], $GLOBALS['where_clause']); } public function testWithoutRowsToDelete(): void { $request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/') ->withParsedBody(['goto' => 'goto']); $mock = self::createMock(ChangeController::class); $mock->expects(self::never())->method('__invoke')->with($request); $response = new ResponseRenderer(); (new ChangeRowsController($response, new Template(), $mock))($request); self::assertSame(['message' => 'No row selected.'], $response->getJSONResult()); self::assertFalse($response->hasSuccessState()); /** @psalm-suppress InvalidArrayOffset */ self::assertNull($GLOBALS['where_clause']); } public function testWithRowsToDelete(): void { $request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/') ->withParsedBody(['goto' => 'goto', 'rows_to_delete' => ['key1' => 'row1', 'key2' => 'row2']]); $mock = self::createMock(ChangeController::class); $mock->expects(self::once())->method('__invoke')->with($request); (new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))($request); /** @psalm-suppress InvalidArrayOffset */ self::assertSame(['row1', 'row2'], $GLOBALS['where_clause']); } }