summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatt <matt@twilio.com>2016-08-16 08:16:00 -0700
committermatt <matt@twilio.com>2016-08-16 08:16:00 -0700
commit69aa2d1e86b4cd50d0f2e8471cab388b2f03caf6 (patch)
tree08ea1275a73559f8f19c6cb85238b15e2895374d
parente841d0b348d2a0770180a4050ad661faa65ae3db (diff)
downloadtwilio-php-origin/fix-read-limits.zip
twilio-php-origin/fix-read-limits.tar.gz
twilio-php-origin/fix-read-limits.tar.bz2
Additional testing for Versionorigin/fix-read-limits
Tests cases for `Version::absoluteUrl()` and `Version::relativeUri()`
-rw-r--r--Twilio/Tests/Unit/VersionTest.php163
1 files changed, 153 insertions, 10 deletions
diff --git a/Twilio/Tests/Unit/VersionTest.php b/Twilio/Tests/Unit/VersionTest.php
index 8241d47..2b2cd11 100644
--- a/Twilio/Tests/Unit/VersionTest.php
+++ b/Twilio/Tests/Unit/VersionTest.php
@@ -8,23 +8,77 @@ use Twilio\Rest\Client;
use Twilio\Values;
use Twilio\Version;
-class TestDomain extends Domain {}
-class TestVersion extends Version {}
+/**
+ * Simplified Domain for testing
+ * @package Twilio\Tests\Unit
+ */
+class TestDomain extends Domain {
+
+ /**
+ * Translate version relative URIs into absolute URLs
+ * Since this test file is about testing the behaviors of Version
+ * the Domain methods are all simplified.
+ *
+ * @param string $uri Version relative URI
+ * @return string Absolute URL for this domain
+ */
+ public function absoluteUrl($uri) {
+ return "domain:$uri";
+ }
+
+}
+
+/**
+ * TestVersion is used for testing Version behaviors
+ * @package Twilio\Tests\Unit
+ */
+class TestVersion extends Version {
+ /**
+ * @return string
+ */
+ public function getVersion() {
+ return $this->version;
+ }
+
+ /**
+ * @param string $version
+ */
+ public function setVersion($version) {
+ $this->version = $version;
+ }
+}
class VersionTest extends UnitTest {
+ /** @var \Twilio\Rest\Client $client*/
+ protected $client;
+ /** @var \Twilio\Tests\Unit\TestDomain $domain */
+ protected $domain;
+ /** @var \Twilio\Tests\Unit\TestVersion $version */
+ protected $version;
+
+ /**
+ * Sets up the fixture, for example, open a network connection.
+ * This method is called before a test is executed.
+ */
+ protected function setUp() {
+ parent::setUp();
+ $this->client = new Client('username', 'password');
+ $this->domain = new TestDomain($this->client);
+ $this->version = new TestVersion($this->domain);
+ }
+
/**
- * @param $message
- * @param $limit
- * @param $pageSize
- * @param $expectedLimit
- * @param $expectedPageSize
- * @param $expectedPageLimit
+ * @param string $message Case message to display on assertion error
+ * @param int|null $limit Limit provided by the user
+ * @param int|null $pageSize PageSize provided by the user
+ * @param int|Values::NONE $expectedLimit Expected limit returned by readLimits
+ * @param int|Values::NONE $expectedPageSize Expected page size returned by readLimits
+ * @param int|Values::NONe $expectedPageLimit Expected page limit returned by readLimits
* @dataProvider readLimitProvider
*/
public function testReadLimits($message, $limit, $pageSize, $expectedLimit, $expectedPageSize, $expectedPageLimit) {
- $version = new TestVersion(new TestDomain(new Client('username', 'password')));
- $actual = $version->readLimits($limit, $pageSize);
+ $actual = $this->version->readLimits($limit, $pageSize);
$this->assertEquals($expectedLimit, $actual['limit'], "$message: Limit does not match");
$this->assertEquals($expectedPageSize, $actual['pageSize'], "$message: PageSize does not match");
$this->assertEquals($expectedPageLimit, $actual['pageLimit'], "$message: PageLimit does not match");
@@ -89,4 +143,93 @@ class VersionTest extends UnitTest {
),
);
}
+
+ /**
+ * @param string $message Case message to display on assertion error
+ * @param string $prefix Version prefix to test
+ * @param string $uri URI to make relative to the version
+ * @param string $expected Expected relative URI
+ * @dataProvider relativeUriProvider
+ */
+ public function testRelativeUri($message, $prefix, $uri, $expected) {
+ $this->version->setVersion($prefix);
+ $actual = $this->version->relativeUri($uri);
+ $this->assertEquals($expected, $actual, $message);
+ }
+
+ public function relativeUriProvider() {
+ $cases = array();
+
+ $modes = array(
+ 'normal' => function($x) { return $x; },
+ 'prepend' => function($x) { return "/$x"; },
+ 'append' => function($x) { return "$x/"; },
+ 'surround' => function($x) { return "/$x/"; },
+ );
+
+ foreach ($modes as $prefixMode => $prefixFunc) {
+ foreach ($modes as $pathMode => $pathFunc) {
+ $prefix = $prefixFunc('v1');
+ $path = $pathFunc('path');
+
+ $cases[] = array(
+ "Scalar - Prefix $prefixMode - Path $pathMode",
+ $prefix,
+ $path,
+ 'v1/path',
+ );
+ }
+ }
+
+ foreach ($modes as $prefixMode => $prefixFunc) {
+ foreach ($modes as $pathMode => $pathFunc) {
+ $prefix = $prefixFunc('v2');
+ $path = $pathFunc('path/to/resource');
+
+ $cases[] = array(
+ "Multipart Path - Prefix $prefixMode - Path $pathMode",
+ $prefix,
+ $path,
+ 'v2/path/to/resource',
+ );
+ }
+ }
+
+ foreach ($modes as $prefixMode => $prefixFunc) {
+ foreach ($modes as $pathMode => $pathFunc) {
+ $prefix = $prefixFunc('v3');
+ $path = $pathFunc('path/to/resource.json');
+
+ $cases[] = array(
+ "Multipart Path with Extension - Prefix $prefixMode - Path $pathMode",
+ $prefix,
+ $path,
+ 'v3/path/to/resource.json',
+ );
+ }
+ }
+
+ return $cases;
+ }
+
+ /**
+ * @param string $message Case message to display on assertion error
+ * @param string $prefix Version prefix to test
+ * @param string $uri URI to make absolute to the domain
+ * @param string $expected Expected absolute URL
+ * @dataProvider absoluteUrlProvider
+ */
+ public function testAbsoluteUrl($message, $prefix, $uri, $expected) {
+ $this->version->setVersion($prefix);
+ $actual = $this->version->absoluteUrl($uri);
+ $this->assertEquals($expected, $actual, $message);
+ }
+
+ public function absoluteUrlProvider() {
+ $cases = $this->relativeUriProvider();
+ foreach ($cases as &$case) {
+ $case[3] = "domain:{$case[3]}";
+ }
+ return $cases;
+ }
} \ No newline at end of file