<?php

namespace Croogo\Core\Test\TestCase;

use Cake\TestSuite\TestCase;
use Croogo\Core\Link;

class LinkTest extends TestCase
{

	public function testCreateFromLinkString()
	{
		$link = Link::createFromLinkString('plugin:Croogo/Nodes|controller:Nodes|action:promoted');

		$this->assertEquals('Croogo/Nodes', $link['plugin']);
		$this->assertEquals('Nodes', $link['controller']);
		$this->assertEquals('promoted', $link['action']);
	}

	public function testToLinkString()
	{
		$link = new Link([
			'plugin' => 'Croogo/Nodes',
			'controller' => 'Nodes',
			'action' => 'promoted'
		]);

		$this->assertEquals('plugin:Croogo/Nodes|controller:Nodes|action:promoted', $link->toLinkString());
	}

	public function testGetUrl()
	{
		$link = new Link([
			'plugin' => 'Croogo/Nodes',
			'controller' => 'Nodes',
			'action' => 'promoted'
		]);

		$this->assertEquals([
			'plugin' => 'Croogo/Nodes',
			'controller' => 'Nodes',
			'action' => 'promoted'
		], $link->getUrl());

		$linkExample = new Link('http://example.com');

		$this->assertEquals('http://example.com', $linkExample->getUrl());
	}

	public function testToString()
	{
		$link = new Link([
			'plugin' => 'Croogo/Nodes',
			'controller' => 'Nodes',
			'action' => 'promoted'
		]);

		$this->assertEquals('plugin:Croogo/Nodes|controller:Nodes|action:promoted', (string)$link);

		$linkExample = new Link('http://example.com');

		$this->assertEquals('http://example.com', (string)$linkExample);
	}

	public function testObjectProperties()
	{
		$link = new Link([
			'plugin' => 'Croogo/Nodes',
			'controller' => 'Nodes',
			'action' => 'promoted'
		]);

		$this->assertNull($link->prefix);
		$this->assertEquals('Croogo/Nodes', $link->plugin);
		$this->assertEquals('Nodes', $link->controller);
		$this->assertEquals('promoted', $link->action);
	}
}

Add tests for the link class
Add tests for the link class
