diff options
| author | Fbenas <philbeansburton@gmail.com> | 2018-05-07 16:47:13 +0100 | 
|---|---|---|
| committer | Fbenas <philbeansburton@gmail.com> | 2018-05-07 16:47:13 +0100 | 
| commit | 55acf626c2e62144984e83b42db49b298a9e2938 (patch) | |
| tree | bb5143a56905dfb77ba6388057a0307abd31f790 /tests/unit | |
| parent | 06fd79055b1e9f850a51b68523114d3ded5ee26c (diff) | |
Diffstat (limited to 'tests/unit')
| -rw-r--r-- | tests/unit/VendorTest.php | 110 | 
1 files changed, 110 insertions, 0 deletions
diff --git a/tests/unit/VendorTest.php b/tests/unit/VendorTest.php new file mode 100644 index 0000000..de58110 --- /dev/null +++ b/tests/unit/VendorTest.php @@ -0,0 +1,110 @@ +<?php + +namespace App\Unit; + +use PHPUnit\Framework\TestCase; +use ReflectionClass; +use App\Model\Vendor; + +/** + * Tet the vedor class + * + * @author Phil Burton <phil@pgburton.com> + */ +class VendorTest extends TestCase +{ +    /** +     * Test the good constructing of vendor +     * +     * @dataProvider getGoodConstructorData +     * @author Phil Burton <phil@pgburton.com> +     * @param string $name +     * @param string $postcode +     * @param int maxCovers +     */ +    public function testGoodConstructor($name, $postcode, $maxCovers) +    { +        // create new vendor +        $vendor = new Vendor($name, $postcode, $maxCovers); + +        // use reflection to get values of protected properties +        $reflectionClass = new ReflectionClass(Vendor::class); + +        // Check name has been set correctly +        $nameProperty = $reflectionClass->getProperty('name'); +        $nameProperty->setAccessible(true); +        $nameValue = $nameProperty->getValue($vendor); + +        $this->assertEquals($nameValue, $name); + +        // Check postcode has been set correctly +        $postcodeProperty = $reflectionClass->getProperty('postcode'); +        $postcodeProperty->setAccessible(true); +        $postcodeValue = $postcodeProperty->getValue($vendor); + +        $this->assertEquals($postcodeValue, $postcode); + +        // Check maxCovers has been set correctly +        $maxCoversProperty = $reflectionClass->getProperty('maxCovers'); +        $maxCoversProperty->setAccessible(true); +        $maxCoversValue = $maxCoversProperty->getValue($vendor); + +        $this->assertEquals($maxCoversValue, $maxCovers); + +        // Check the menus array is initalised to an empty array +        $mensuProperty = $reflectionClass->getProperty('menus'); +        $mensuProperty->setAccessible(true); +        $menusValue = $mensuProperty->getValue($vendor); +        $this->assertEquals($menusValue, []); +    } + +    /** +     * Data for testing good constcutor +     * +     * @author Phil Burton <phil@pgburton.com> +     * @return mixed[] +     */ +    public function getGoodConstructorData() +    { +        return [ +            ['a', 'b', 1], +            ['1', '2', 3], +            ['A very long name with spaces in it', 'SW111TH', 10000000], +        ]; +    } + +    /** +     * Test the check location +     * +     * @dataProvider getLocationData +     * @author Phil Burton <phil@pgburton.com> +     */ +    public function testCheckLocation($postcode, $postcodePart, $expectedResult) +    { +        $vendor = new Vendor('name', $postcode, 1); + +        $this->assertEquals($vendor->checkLocation($postcodePart), $expectedResult); +    } + +    /** +     * Return the location data for test +     * +     * @author Phil Burton <phil@pgburton.com> +     * @return mixed[] +     */ +    public function getLocationData() +    { +        return [ +            ['SW111TH', 'SW', true], +            ['SW11 1TH', 'SW', true], +            ['sw111th', 'SW', true], +            ['sW111TH', 'SW', true], +            ['SW11 1TH', 'sw', true], +            ['sw11 1th', 'sw', true], +            ['SW', 'SW', true], +            ['SE111TH', 'SW', false], +            ['SW111TH', 'se', false], +            ['0000SW', 'SW', false], +        ]; +    } +}  | 
