Вход Регистрация
Файл: gapps/vendor/fzaninotto/faker/test/Faker/Provider/PaymentTest.php
Строк: 121
<?php

namespace FakerTestProvider;

use 
FakerCalculatorIban;
use 
FakerCalculatorLuhn;
use 
FakerGenerator;
use 
FakerProviderBase as BaseProvider;
use 
FakerProviderDateTime as DateTimeProvider;
use 
FakerProviderPayment as PaymentProvider;
use 
FakerProviderPerson as PersonProvider;

class 
PaymentTest extends PHPUnit_Framework_TestCase
{
    private 
$faker;

    public function 
setUp()
    {
        
$faker = new Generator();
        
$faker->addProvider(new BaseProvider($faker));
        
$faker->addProvider(new DateTimeProvider($faker));
        
$faker->addProvider(new PersonProvider($faker));
        
$faker->addProvider(new PaymentProvider($faker));
        
$this->faker $faker;
    }

    public function 
localeDataProvider()
    {
        
$providerPath realpath(__DIR__ '/../../../src/Faker/Provider');
        
$localePaths array_filter(glob($providerPath '/*'GLOB_ONLYDIR));
        foreach (
$localePaths as $path) {
            
$parts explode('/'$path);
            
$locales[] = array($parts[count($parts) - 1]);
        }

        return 
$locales;
    }

    public function 
loadLocalProviders($locale)
    {
        
$providerPath realpath(__DIR__ '/../../../src/Faker/Provider');
        if (
file_exists($providerPath.'/'.$locale.'/Payment.php')) {
            
$payment "\Faker\Provider\$locale\Payment";
            
$this->faker->addProvider(new $payment($this->faker));
        }
    }

    public function 
testCreditCardTypeReturnsValidVendorName()
    {
        
$this->assertTrue(in_array($this->faker->creditCardType, array('Visa''MasterCard''American Express''Discover Card')));
    }

    public function 
creditCardNumberProvider()
    {
        return array(
            array(
'Discover Card''/^6011d{12}$/'),
            array(
'Visa''/^4d{12,15}$/'),
            array(
'MasterCard''/^5[1-5]d{14}$/')
        );
    }

    
/**
     * @dataProvider creditCardNumberProvider
     */
    
public function testCreditCardNumberReturnsValidCreditCardNumber($type$regexp)
    {
        
$cardNumber $this->faker->creditCardNumber($type);
        
$this->assertRegExp($regexp$cardNumber);
        
$this->assertTrue(Luhn::isValid($cardNumber));
    }

    public function 
testCreditCardNumberCanFormatOutput()
    {
        
$this->assertRegExp('/^6011-d{4}-d{4}-d{4}$/'$this->faker->creditCardNumber('Discover Card'true));
    }

    public function 
testCreditCardExpirationDateReturnsValidDateByDefault()
    {
        
$expirationDate $this->faker->creditCardExpirationDate;
        
$this->assertTrue(intval($expirationDate->format('U')) > strtotime('now'));
        
$this->assertTrue(intval($expirationDate->format('U')) < strtotime('+36 months'));
    }

    public function 
testRandomCard()
    {
        
$cardDetails $this->faker->creditCardDetails;
        
$this->assertEquals(count($cardDetails), 4);
        
$this->assertEquals(array('type''number''name''expirationDate'), array_keys($cardDetails));
    }

    protected 
$ibanFormats = array(
        
'AD' => '/^ADd{2}d{4}d{4}[A-Z0-9]{12}$/',
        
'AE' => '/^AEd{2}d{3}d{16}$/',
        
'AL' => '/^ALd{2}d{8}[A-Z0-9]{16}$/',
        
'AT' => '/^ATd{2}d{5}d{11}$/',
        
'AZ' => '/^AZd{2}[A-Z]{4}[A-Z0-9]{20}$/',
        
'BA' => '/^BAd{2}d{3}d{3}d{8}d{2}$/',
        
'BE' => '/^BEd{2}d{3}d{7}d{2}$/',
        
'BG' => '/^BGd{2}[A-Z]{4}d{4}d{2}[A-Z0-9]{8}$/',
        
'BH' => '/^BHd{2}[A-Z]{4}[A-Z0-9]{14}$/',
        
'BR' => '/^BRd{2}d{8}d{5}d{10}[A-Z]{1}[A-Z0-9]{1}$/',
        
'CH' => '/^CHd{2}d{5}[A-Z0-9]{12}$/',
        
'CR' => '/^CRd{2}d{3}d{14}$/',
        
'CY' => '/^CYd{2}d{3}d{5}[A-Z0-9]{16}$/',
        
'CZ' => '/^CZd{2}d{4}d{6}d{10}$/',
        
'DE' => '/^DEd{2}d{8}d{10}$/',
        
'DK' => '/^DKd{2}d{4}d{9}d{1}$/',
        
'DO' => '/^DOd{2}[A-Z0-9]{4}d{20}$/',
        
'EE' => '/^EEd{2}d{2}d{2}d{11}d{1}$/',
        
'ES' => '/^ESd{2}d{4}d{4}d{1}d{1}d{10}$/',
        
'FR' => '/^FRd{2}d{5}d{5}[A-Z0-9]{11}d{2}$/',
        
'GB' => '/^GBd{2}[A-Z]{4}d{6}d{8}$/',
        
'GE' => '/^GEd{2}[A-Z]{2}d{16}$/',
        
'GI' => '/^GId{2}[A-Z]{4}[A-Z0-9]{15}$/',
        
'GR' => '/^GRd{2}d{3}d{4}[A-Z0-9]{16}$/',
        
'GT' => '/^GTd{2}[A-Z0-9]{4}[A-Z0-9]{20}$/',
        
'HR' => '/^HRd{2}d{7}d{10}$/',
        
'HU' => '/^HUd{2}d{3}d{4}d{1}d{15}d{1}$/',
        
'IE' => '/^IEd{2}[A-Z]{4}d{6}d{8}$/',
        
'IL' => '/^ILd{2}d{3}d{3}d{13}$/',
        
'IS' => '/^ISd{2}d{4}d{2}d{6}d{10}$/',
        
'IT' => '/^ITd{2}[A-Z]{1}d{5}d{5}[A-Z0-9]{12}$/',
        
'KW' => '/^KWd{2}[A-Z]{4}d{22}$/',
        
'KZ' => '/^KZd{2}d{3}[A-Z0-9]{13}$/',
        
'LB' => '/^LBd{2}d{4}[A-Z0-9]{20}$/',
        
'LI' => '/^LId{2}d{5}[A-Z0-9]{12}$/',
        
'LT' => '/^LTd{2}d{5}d{11}$/',
        
'LU' => '/^LUd{2}d{3}[A-Z0-9]{13}$/',
        
'LV' => '/^LVd{2}[A-Z]{4}[A-Z0-9]{13}$/',
        
'MC' => '/^MCd{2}d{5}d{5}[A-Z0-9]{11}d{2}$/',
        
'MD' => '/^MDd{2}[A-Z0-9]{2}[A-Z0-9]{18}$/',
        
'ME' => '/^MEd{2}d{3}d{13}d{2}$/',
        
'MK' => '/^MKd{2}d{3}[A-Z0-9]{10}d{2}$/',
        
'MR' => '/^MRd{2}d{5}d{5}d{11}d{2}$/',
        
'MT' => '/^MTd{2}[A-Z]{4}d{5}[A-Z0-9]{18}$/',
        
'MU' => '/^MUd{2}[A-Z]{4}d{2}d{2}d{12}d{3}[A-Z]{3}$/',
        
'NL' => '/^NLd{2}[A-Z]{4}d{10}$/',
        
'NO' => '/^NOd{2}d{4}d{6}d{1}$/',
        
'PK' => '/^PKd{2}[A-Z]{4}[A-Z0-9]{16}$/',
        
'PL' => '/^PLd{2}d{8}d{16}$/',
        
'PS' => '/^PSd{2}[A-Z]{4}[A-Z0-9]{21}$/',
        
'PT' => '/^PTd{2}d{4}d{4}d{11}d{2}$/',
        
'RO' => '/^ROd{2}[A-Z]{4}[A-Z0-9]{16}$/',
        
'RS' => '/^RSd{2}d{3}d{13}d{2}$/',
        
'SA' => '/^SAd{2}d{2}[A-Z0-9]{18}$/',
        
'SE' => '/^SEd{2}d{3}d{16}d{1}$/',
        
'SI' => '/^SId{2}d{5}d{8}d{2}$/',
        
'SK' => '/^SKd{2}d{4}d{6}d{10}$/',
        
'SM' => '/^SMd{2}[A-Z]{1}d{5}d{5}[A-Z0-9]{12}$/',
        
'TN' => '/^TNd{2}d{2}d{3}d{13}d{2}$/',
        
'TR' => '/^TRd{2}d{5}d{1}[A-Z0-9]{16}$/',
        
'VG' => '/^VGd{2}[A-Z]{4}d{16}$/',
    );

    
/**
     * @dataProvider localeDataProvider
     */
    
public function testBankAccountNumber($locale)
    {
        
$parts explode('_'$locale);
        
$countryCode array_pop($parts);

        if (!isset(
$this->ibanFormats[$countryCode])) {
            
// No IBAN format available
            
return;
        }

        
$this->loadLocalProviders($locale);

        try {
            
$iban $this->faker->bankAccountNumber;
        } catch (
InvalidArgumentException $e) {
            
// Not implemented, nothing to test
            
$this->markTestSkipped("bankAccountNumber not implemented for $locale");
            return;
        }

        
// Test format
        
$this->assertRegExp($this->ibanFormats[$countryCode], $iban);

        
// Test checksum
        
$this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
    }

    public function 
ibanFormatProvider()
    {
        
$return = array();
        foreach (
$this->ibanFormats as $countryCode => $regex) {
            
$return[] = array($countryCode$regex);
        }
        return 
$return;
    }
    
/**
     * @dataProvider ibanFormatProvider
     */
    
public function testIban($countryCode$regex)
    {
        
$iban $this->faker->iban($countryCode);

        
// Test format
        
$this->assertRegExp($regex$iban);

        
// Test checksum
        
$this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
    }
}
Онлайн: 1
Реклама