Skip to content

Instantly share code, notes, and snippets.

@mylk
Created August 14, 2016 14:42
Show Gist options
  • Save mylk/33e3d0e49152cf6b74362dc8a09b9d39 to your computer and use it in GitHub Desktop.
Save mylk/33e3d0e49152cf6b74362dc8a09b9d39 to your computer and use it in GitHub Desktop.
Test suite for the UrlCampaignBuilderService
<?php
/**
* Test suite for the UrlCampaignBuilderService at:
* https://gist.github.com/mylk/9a6fe3eaacb605b31aaa7808ac6e6dab
*/
namespace Acme\AcmeBundle\Tests\Service;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class UrlCampaignBuilderServiceTest extends WebTestCase
{
private $urlCampaignBuilderService;
private $urlTested = "www.google.com";
public function setUp()
{
parent::setUp();
$kernel = static::createKernel();
$kernel->boot();
$this->urlCampaignBuilderService = $kernel->getContainer()->get("acme.url_campaign_builder");
}
public function testBuildHavingNoSchemeAndPathAndQuery()
{
$result = $this->urlCampaignBuilderService->build($this->urlTested, array(
"source" => "newsletter",
"medium" => "email",
"campaign" => "august"
));
$this->assertEquals($result, "http://{$this->urlTested}/?utm_source=newsletter&utm_medium=email&utm_campaign=august");
}
public function testBuildHavingSchemeButNoPathAndQuery()
{
$result = $this->urlCampaignBuilderService->build("https://{$this->urlTested}", array(
"source" => "newsletter",
"medium" => "email",
"campaign" => "august"
));
$this->assertEquals($result, "https://{$this->urlTested}/?utm_source=newsletter&utm_medium=email&utm_campaign=august");
}
public function testBuildHavingSchemeAndPathButNoQuery()
{
$result = $this->urlCampaignBuilderService->build("https://{$this->urlTested}/abc", array(
"source" => "newsletter",
"medium" => "email",
"campaign" => "august"
));
$this->assertEquals($result, "https://{$this->urlTested}/abc?utm_source=newsletter&utm_medium=email&utm_campaign=august");
}
public function testBuildHavingSchemeAndPathAndQuery()
{
$result = $this->urlCampaignBuilderService->build("https://{$this->urlTested}/abc?test=1", array(
"source" => "newsletter",
"medium" => "email",
"campaign" => "august"
));
$this->assertEquals($result, "https://{$this->urlTested}/abc?test=1&utm_source=newsletter&utm_medium=email&utm_campaign=august");
}
public function testBuildHavingSchemeAndQueryButNoPath()
{
$result = $this->urlCampaignBuilderService->build("https://{$this->urlTested}/?test=1", array(
"source" => "newsletter",
"medium" => "email",
"campaign" => "august"
));
$this->assertEquals($result, "https://{$this->urlTested}/?test=1&utm_source=newsletter&utm_medium=email&utm_campaign=august");
}
public function testBuildWithAdditionalParameters()
{
$result = $this->urlCampaignBuilderService->build("http://{$this->urlTested}", array(
"source" => "newsletter",
"medium" => "email",
"campaign" => "august",
"custom" => "123"
));
$this->assertEquals($result, "http://{$this->urlTested}/?utm_source=newsletter&utm_medium=email&utm_campaign=august&utm_custom=123");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment