Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: fa7307d153
Fetching contributors…

Cannot retrieve contributors at this time

313 lines (246 sloc) 9.377 kb
<?php
/**
*
* License, TERMS and CONDITIONS
*
* This software is licensed under the GNU LESSER GENERAL PUBLIC LICENSE (LGPL) version 3
* Please read the license here : http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* ATTRIBUTION REQUIRED
* 4. All web pages generated by the use of this software, or at least
* the page that lists the recent questions (usually home page) must include
* a link to the http://www.lampcms.com and text of the link must indicate that
* the website\'s Questions/Answers functionality is powered by lampcms.com
* An example of acceptable link would be "Powered by <a href="http://www.lampcms.com">LampCMS</a>"
* The location of the link is not important, it can be in the footer of the page
* but it must not be hidden by style attributes
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This product includes GeoLite data created by MaxMind,
* available from http://www.maxmind.com/
*
*
* @author Dmitri Snytkine <cms@lampcms.com>
* @copyright 2005-2012 (or current year) Dmitri Snytkine
* @license http://www.gnu.org/licenses/lgpl-3.0.txt GNU LESSER GENERAL PUBLIC LICENSE (LGPL) version 3
* @link http://www.lampcms.com Lampcms.com project
* @version Release: @package_version@
*
*
*/
namespace Lampcms;
require_once 'bootstrap.php';
require_once 'Fixtures/MockAnswer.php';
require_once 'Fixtures/MockUser.php';
class AnswerTest extends LampcmsUnitTestCase
{
protected $Answer;
public function setUp()
{
$this->Answer = new \Lampcms\MockAnswer(new Registry());
}
public function testScore()
{
$s = $this->Answer->getScore();
$this->assertEquals(1, $s);
}
/**
*
* @depends testScore
*/
public function testAddVote()
{
$this->Answer->addDownVote();
$this->assertEquals(0, $this->Answer->getScore());
$this->assertEquals('s', $this->Answer['v_s']);
$this->Answer->addUpVote();
$this->assertEquals('', $this->Answer['v_s']);
$this->Answer->addUpVote()
->addUpVote();
$this->assertEquals(3, $this->Answer->getScore());
$this->assertEquals('s', $this->Answer['v_s']);
}
public function testGetCommentsCount()
{
$this->assertEquals(2, $this->Answer->getCommentsCount());
}
public function testGetOwnerId()
{
$this->assertTrue(3 === $this->Answer->getOwnerId());
}
public function testGetQuestionOwnerId()
{
$this->assertTrue(3 === $this->Answer->getQuestionOwnerId());
}
public function testGetResourceTypeId()
{
$this->assertEquals('ANSWER', $this->Answer->getResourceTypeId());
}
public function testGetQuestionId()
{
$this->assertEquals(510, $this->Answer->getQuestionId());
}
public function testGetLastModified()
{
$this->assertEquals(1305712931, $this->Answer->getLastModified());
}
public function testGetUsername()
{
$this->assertEquals('user1', $this->Answer->getUsername());
}
public function testGetRegistry()
{
$this->assertInstanceOf('\Lampcms\Registry', $this->Answer->getRegistry());
}
public function testTouch()
{
$this->Answer->touch();
$this->assertTrue((time() - $this->Answer->getLastModified()) < 2);
}
/**
*
* @depends testGetCommentsCount
*/
public function testGetComments()
{
$a = $this->Answer->getComments();
$this->assertTrue(516 === $a[0]['_id']);
$this->assertTrue(517 === $a[1]['_id']);
}
public function testGetTitle()
{
$this->assertEquals('Mock Stub Post', $this->Answer->getTitle());
}
public function testGetBody()
{
$this->assertEquals('<span>Text of Mock Answer<br><strong>Mock test</strong><br></span>', $this->Answer->getBody());
}
/**
* @depends testGetRegistry
*
*/
public function testGetUrl()
{
$Registry = $this->Answer->getRegistry();
$siteUrl = $Registry->Ini->SITE_URL;
$url = $this->Answer->getUrl();
$shortUrl = $this->Answer->getUrl(true);
$this->assertEquals('/q510/#ans513', \substr($url, strlen($siteUrl)));
$this->assertEquals('/q510/#ans513', \substr($shortUrl, strlen($siteUrl)));
}
public function testGetVotesArray()
{
$this->assertEquals(array('up' => 1, 'down' => 0, 'score' => 1), $this->Answer->getVotesArray());
}
public function testIncreaseCommentsCount()
{
$val = $this->Answer->getCommentsCount();
$this->Answer->increaseCommentsCount();
$this->assertTrue($this->Answer['i_comments'] === ($val + 1));
}
public function testDecreaseCommentsCount()
{
$val = $this->Answer->getCommentsCount();
$this->Answer->increaseCommentsCount(-1);
$this->assertTrue($this->Answer['i_comments'] === 1);
}
public function testSetAccepted()
{
$this->assertFalse($this->Answer['accepted'] === true);
$this->Answer->setAccepted();
$this->assertTrue($this->Answer['accepted'] === true);
}
/**
* @depends testSetAccepted
*
*/
public function testUnsetAccepted()
{
$this->Answer->setAccepted();
$this->Answer->unsetAccepted();
$this->assertFalse($this->Answer['accepted'] === true);
}
public function testSetEdited()
{
$User = new MockUser($this->Answer->getRegistry());
$this->Answer->setEdited($User, 'test of editing');
$a = $this->Answer['a_edited'];
$this->assertTrue(is_array($a));
$this->assertTrue(count($a) > 1);
$aEdited = end($a);
$this->assertTrue(is_array($aEdited));
$this->assertEquals('John D Doe', $aEdited['username']);
$this->assertEquals('test of editing', $aEdited['reason']);
$this->assertEquals(26, $aEdited['i_uid']);
}
public function testSetDeleted()
{
$User = new MockUser($this->Answer->getRegistry());
$this->Answer->setDeleted($User, 'test of deleting');
$a = $this->Answer['a_deleted'];
$this->assertTrue(is_array($a));
$this->assertEquals(count($a), 5);
$this->assertEquals('John D Doe', $a['username']);
$this->assertEquals('test of deleting', $a['reason']);
$this->assertEquals(26, $a['i_uid']);
$this->assertTrue(($this->Answer['i_del_ts']) > 1000);
}
public function testOffsetSetAccepted()
{
try {
$this->Answer['accepted'] = true;
} catch (DevException $e) {
return;
}
$this->fail('DevException expected when trying to set "accepted" key directy');
}
public function testSave()
{
$Registry = new Registry();
$id = $this->Answer->getResourceId();
$this->Answer->insert();
$a = $Registry->Mongo->ANSWERS->findOne(array('_id' => $id));
$this->assertTrue(is_array($a) && count($a) > 0);
}
public function testAutoInsert()
{
$this->persistDB = true;
$Registry = new Registry();
$Answer = new Answer($Registry);
$Answer['b'] = 'test body';
$Answer['title'] = 'test title';
$Answer['i_uid'] = 99999999;
return;
}
/**
* @depends testAutoInsert
*
*/
public function testAutoInserted()
{
$Registry = new Registry();
$a = $Registry->Mongo->ANSWERS->findOne(array('i_uid' => 99999999));
$this->assertTrue(!empty($a));
return;
}
}
Jump to Line
Something went wrong with that request. Please try again.