Added cost and tests
This commit is contained in:
parent
fdf5fee3e2
commit
12da3102f9
5 changed files with 150 additions and 0 deletions
1
.coveralls.yml
Normal file
1
.coveralls.yml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
service_name: travis-ci
|
27
.travis.yml
Normal file
27
.travis.yml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
language: php
|
||||||
|
|
||||||
|
php:
|
||||||
|
- 5.3
|
||||||
|
- 5.4
|
||||||
|
- 5.5
|
||||||
|
- 5.6
|
||||||
|
- hhvm
|
||||||
|
- hhvm-nightly
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
allow_failures:
|
||||||
|
- php: hhvm-nightly
|
||||||
|
|
||||||
|
install:
|
||||||
|
- composer install
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- mkdir -p build/logs
|
||||||
|
- cd tests
|
||||||
|
|
||||||
|
script:
|
||||||
|
- phpunit --colors --coverage-clover /home/travis/build/joshtronic/php-googleprofanity/build/logs/clover.xml .
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
- php ../vendor/bin/coveralls --config ../.coveralls.yml -v
|
23
composer.json
Normal file
23
composer.json
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"name": "joshtronic/php-googleprofanity",
|
||||||
|
"description": "PHP Wrapper for the unofficial Google Profanity API",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"type": "library",
|
||||||
|
"keywords": ["google", "profanity", "api"],
|
||||||
|
"homepage": "https://github.com/joshtronic/php-googleprofanity",
|
||||||
|
"license": "MIT",
|
||||||
|
"authors": [{
|
||||||
|
"name": "Josh Sherman",
|
||||||
|
"email": "josh@gravityblvd.com",
|
||||||
|
"homepage": "http://joshtronic.com"
|
||||||
|
}],
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"satooshi/php-coveralls": "dev-master"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {"joshtronic\\": "src/"}
|
||||||
|
}
|
||||||
|
}
|
49
src/GoogleProfanity.php
Normal file
49
src/GoogleProfanity.php
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Google Profanity Wrapper File
|
||||||
|
*
|
||||||
|
* PHP version 5
|
||||||
|
*
|
||||||
|
* Licensed under The MIT License
|
||||||
|
* Redistribution of these files must retain the above copyright notice.
|
||||||
|
*
|
||||||
|
* @author Josh Sherman <josh@gravityblvd.com>
|
||||||
|
* @copyright Copyright 2014, Josh Sherman
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.html
|
||||||
|
* @link https://github.com/joshtronic/php-googleprofanity
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace joshtronic;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Google Profanity API Interface
|
||||||
|
*/
|
||||||
|
class GoogleProfanity
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Check
|
||||||
|
*
|
||||||
|
* Checks if a word is considered profanity.
|
||||||
|
*
|
||||||
|
* @usage GoogleProfanity::check('fuck'); // returns true
|
||||||
|
* @param string $word word to check
|
||||||
|
* @param string $endpoint the endpoint to call (helps testing)
|
||||||
|
* @return boolean whether or not the word is profanity
|
||||||
|
*/
|
||||||
|
public function check($word, $endpoint = 'http://www.wdyl.com/profanity?q=')
|
||||||
|
{
|
||||||
|
$response = json_decode(file_get_contents($endpoint . $word), true);
|
||||||
|
|
||||||
|
if ($response == null || !isset($response['response'])
|
||||||
|
|| !in_array($response['response'], array('true', 'false')))
|
||||||
|
{
|
||||||
|
throw new \Exception('Invalid response from API.');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return $response['response'] == 'true';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
50
tests/GoogleProfanityTest.php
Normal file
50
tests/GoogleProfanityTest.php
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once '../src/GoogleProfanity.php';
|
||||||
|
|
||||||
|
class GoogleProfanityTest extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
private $profanity;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
$this->profanity = new joshtronic\GoogleProfanity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerFormatPhoneNumber
|
||||||
|
*/
|
||||||
|
public function testCheck($a, $b)
|
||||||
|
{
|
||||||
|
$this->assertEquals($b, $this->profanity->check($a));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerFormatPhoneNumber()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('alpha', false),
|
||||||
|
array('beta', false),
|
||||||
|
array('joshtronic', false),
|
||||||
|
array('god', false),
|
||||||
|
array('fck', false),
|
||||||
|
array('fuck', true),
|
||||||
|
array('shit', true),
|
||||||
|
array('cocksucker', true),
|
||||||
|
array('cuntface', false), // Unsure why not...
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Exception
|
||||||
|
* @expectedExceptionMessage Invalid response from API.
|
||||||
|
*/
|
||||||
|
public function testInvalidResponse()
|
||||||
|
{
|
||||||
|
$file = SITE_PATH . 'null-';
|
||||||
|
|
||||||
|
file_put_contents($file . 'test', null);
|
||||||
|
|
||||||
|
$this->profanity->check('test', $file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue