Oefenweb/cakephp-vat-number-check

View on GitHub
Test/Case/Controller/VatNumberChecksControllerTest.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php
App::uses('VatNumberChecksController', 'VatNumberCheck.Controller');

/**
 * VatNumberChecksController Test Case
 *
 * @property VatNumberCheck.VatNumberChecksController $VatNumberChecks
 */
class VatNumberChecksControllerTest extends ControllerTestCase {

/**
 * Fixtures
 *
 * @var array
 */
    public $fixtures = [];

/**
 * testCheck method
 *
 * @return void
 */
    public function testCheck() {
        // Post request, correct vat

        $VatNumberChecks = $this->generate('VatNumberCheck.VatNumberChecks');
        $VatNumberChecks->VatNumberCheck = ClassRegistry::init('VatNumberCheck.VatNumberCheck');

        $data = ['vatNumber' => 'NL820345672B01'];

        $result = $this->testAction(
            '/vat_number_check/vat_number_checks/check.json',
            ['return' => 'contents', 'data' => $data, 'method' => 'post']
        );
        $expected = array_merge($data, ['status' => 'ok']);

        // Test response body
        $this->assertIdentical($expected, json_decode($result, true));

        $result = $VatNumberChecks->response->statusCode();
        $expected = 200;

        // Test response code
        $this->assertIdentical($expected, $result);

        // Get request

        $VatNumberChecks = $this->generate('VatNumberCheck.VatNumberChecks');
        $VatNumberChecks->VatNumberCheck = ClassRegistry::init('VatNumberCheck.VatNumberCheck');

        $data = ['vatNumber' => ''];

        $result = $this->testAction(
            '/vat_number_check/vat_number_checks/check.json',
            ['return' => 'contents']
        );
        $expected = array_merge($data, ['status' => 'failure']);

        $this->assertIdentical($expected, json_decode($result, true));

        // Post request, incorrect vat

        $VatNumberChecks = $this->generate('VatNumberCheck.VatNumberChecks');
        $VatNumberChecks->VatNumberCheck = ClassRegistry::init('VatNumberCheck.VatNumberCheck');

        $data = ['vatNumber' => 'NL820345672B02'];

        $result = $this->testAction(
            '/vat_number_check/vat_number_checks/check.json',
            ['return' => 'contents', 'data' => $data, 'method' => 'post']
        );
        $expected = array_merge($data, ['status' => 'failure']);

        $this->assertIdentical($expected, json_decode($result, true));

        // Post request, correct vat, timeout

        $VatNumberChecks = $this->generate('VatNumberCheck.VatNumberChecks', [
            'models' => [
                'VatNumberCheck.VatNumberCheck' => ['getUrlContent']
            ]
        ]);
        $VatNumberChecks->VatNumberCheck->expects($this->any())->method('getUrlContent')->will($this->returnValue(false));

        $data = ['vatNumber' => 'NL820345672B01'];

        $result = $this->testAction(
            '/vat_number_check/vat_number_checks/check.json',
            ['return' => 'contents', 'data' => $data, 'method' => 'post']
        );
        $expected = array_merge($data, ['status' => 'failure']);

        // Test response body
        $this->assertIdentical($expected, json_decode($result, true));

        $result = $VatNumberChecks->response->statusCode();
        $expected = 503;

        // Test response code
        $this->assertIdentical($expected, $result);
    }

}