Created
February 8, 2016 20:29
-
-
Save Raistlfiren/43d81ed8be23b3bb4204 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace Wolfe\Tests; | |
| use PHPUnit_Framework_TestCase; | |
| use Slim\App; | |
| use Slim\Http\Environment; | |
| use Slim\Http\Headers; | |
| use Slim\Http\Request; | |
| use Slim\Http\RequestBody; | |
| use Slim\Http\Response; | |
| use Slim\Http\UploadedFile; | |
| use Slim\Http\Uri; | |
| use Wolfe\Loader\Kernel; | |
| class AbstractFunctionalTest extends PHPUnit_Framework_TestCase | |
| { | |
| /** @var App $app */ | |
| protected $app; | |
| /** @var Request $request */ | |
| protected $request; | |
| /** @var Response $response */ | |
| protected $response; | |
| public function setUp() | |
| { | |
| $app = new App(); | |
| $kernel = new Kernel($app, $app->getContainer()); | |
| $kernel->registerServices(); | |
| $kernel->registerRoutes(); | |
| $this->app = $app; | |
| } | |
| public function setupRequest($url, $method, $request, $files) | |
| { | |
| $env = Environment::mock([ | |
| 'REQUEST_URI' => $url, | |
| 'REQUEST_METHOD' => $method, | |
| ]); | |
| $uri = Uri::createFromEnvironment($env); | |
| $headers = Headers::createFromEnvironment($env); | |
| $cookies = []; | |
| $serverParams = $env->all(); | |
| $body = new RequestBody(); | |
| $this->request = new Request($method, $uri, $headers, $cookies, $serverParams, $body, $files); | |
| $this->response = new Response(); | |
| /*if (!is_null($files)) { | |
| $this->request->withUploadedFiles($files); | |
| } | |
| if (!is_null($request)) { | |
| $this->request->withQueryParams($request); | |
| }*/ | |
| $app = $this->app; | |
| return $app($this->request, $this->response); | |
| } | |
| public function get($url) | |
| { | |
| return $this->setupRequest($url, 'GET', null, null); | |
| } | |
| public function post($url, $request, $files) | |
| { | |
| return $this->setupRequest($url, 'POST', $request, $files); | |
| } | |
| } | |
| <?php | |
| namespace Wolfe\Tests\Handler; | |
| use Psr\Http\Message\ResponseInterface; | |
| use Slim\Http\UploadedFile; | |
| use Wolfe\Tests\AbstractFunctionalTest; | |
| class HomeHandlerTest extends AbstractFunctionalTest | |
| { | |
| public function testGetIndex() | |
| { | |
| /** @var ResponseInterface $response */ | |
| $response = $this->get('/'); | |
| $this->assertEquals(200, $response->getStatusCode()); | |
| } | |
| /** | |
| * @dataProvider testFileUploads | |
| * @param $actual | |
| * @param $expected | |
| */ | |
| public function testPostIndex($expected, $actual) | |
| { | |
| $files = ['csvFileToProcess' => $expected]; | |
| /** @var ResponseInterface $response */ | |
| $response = $this->post('/', null, $files); | |
| $this->assertEquals(200, $response->getStatusCode()); | |
| } | |
| public function testFileUploads() | |
| { | |
| return array( | |
| array( | |
| new UploadedFile( | |
| __DIR__ . DIRECTORY_SEPARATOR . '../Resources/GenericExport.csv', | |
| 'GenericExport.csv', | |
| 'text/csv', | |
| 4256, | |
| UPLOAD_ERR_OK, | |
| true | |
| ), | |
| [TRUE, FALSE] | |
| ) | |
| ); | |
| } | |
| } | |
| //Code that does the work | |
| //index.php | |
| $this->app->post('/', function(ServerRequestInterface $request, ResponseInterface $response) { | |
| $handler = new HomeHandler($request, $response); | |
| return $handler->csvPostHandler(); | |
| }); | |
| <?php | |
| namespace Wolfe\Converter\Handler; | |
| use Psr\Http\Message\ResponseInterface; | |
| use Psr\Http\Message\ServerRequestInterface; | |
| use Wolfe\Converter\Library\CSVFileChecker; | |
| use Wolfe\Converter\Library\CSVHandler; | |
| use DateTime; | |
| class HomeHandler | |
| { | |
| /** @var ServerRequestInterface $_request */ | |
| private $_request; | |
| /** @var ResponseInterface $_response */ | |
| private $_response; | |
| /** | |
| * @param ServerRequestInterface $request | |
| * @param ResponseInterface $response | |
| */ | |
| public function __construct(ServerRequestInterface $request, ResponseInterface $response) | |
| { | |
| $this->_request = $request; | |
| $this->_response = $response; | |
| } | |
| public function csvPostHandler() | |
| { | |
| $csvFileChecker = new CSVFileChecker($this->_request); | |
| if ($csvFileChecker->isValid()) { | |
| $file = $csvFileChecker->getFile(); | |
| $csvHandler = new CSVHandler($file); | |
| $writer = $csvHandler->processCSV(); | |
| $date = new DateTime('now'); | |
| $csvFileName = 'CSVOutput' . $date->format('Y-m-d-H-i') . '.csv'; | |
| return $writer->output($csvFileName); | |
| } | |
| return null; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment