diff --git a/oembed/Oembed.php b/oembed/Oembed.php index 58ed1d23f..947d6b018 100644 --- a/oembed/Oembed.php +++ b/oembed/Oembed.php @@ -202,6 +202,10 @@ class Oembed_Result extends ViewableData { parent::__construct(); } + + public function getOembedURL() { + return $this->url; + } /** * Fetches the JSON data from the Oembed URL (cached). diff --git a/tests/oembed/OembedTest.php b/tests/oembed/OembedTest.php new file mode 100644 index 000000000..03e11169a --- /dev/null +++ b/tests/oembed/OembedTest.php @@ -0,0 +1,33 @@ +update('Oembed', 'providers', array( + 'http://*.silverstripe.com/watch*'=>'http://www.silverstripe.com/oembed/' + )); + $escapedEndpointURL = urlencode("http://www.silverstripe.com/oembed/"); + + // Test with valid URL + $result = Oembed::get_oembed_from_url('http://www.silverstripe.com/watch12345'); + $this->assertTrue($result!=false); + $this->assertEquals($result->getOembedURL(), 'http://www.silverstripe.com/oembed/?format=json&url='.urlencode('http://www.silverstripe.com/watch12345'), 'Triggers on matching URL'); + + // Test without www. + $result = Oembed::get_oembed_from_url('http://silverstripe.com/watch12345'); + $this->assertTrue($result!=false); + $this->assertEquals($result->getOembedURL(), 'http://www.silverstripe.com/oembed/?format=json&url='.urlencode('http://silverstripe.com/watch12345'), 'Triggers on matching URL without www'); + + // Test if options make their way to the URL + $result = Oembed::get_oembed_from_url('http://www.silverstripe.com/watch12345', false, array('foo'=>'bar')); + $this->assertTrue($result!=false); + $this->assertEquals($result->getOembedURL(), 'http://www.silverstripe.com/oembed/?format=json&url='.urlencode('http://www.silverstripe.com/watch12345').'&foo=bar', 'Includes options'); + + // Test magic. + $result = Oembed::get_oembed_from_url('http://www.silverstripe.com/watch12345', false, array('height'=>'foo', 'width'=>'bar')); + $this->assertTrue($result!=false); + $urlParts = parse_url($result->getOembedURL()); + parse_str($urlParts['query'], $query); + $this->assertEquals($query['maxheight'], 'foo', 'Magically creates maxheight option'); + $this->assertEquals($query['maxwidth'], 'bar', 'Magically creates maxwidth option'); + } +}