update items when they are being set read or starred

This commit is contained in:
Bernhard Posselt 2013-04-20 23:44:22 +02:00
Родитель 18b523b808
Коммит 252168aceb
3 изменённых файлов: 40 добавлений и 9 удалений

Просмотреть файл

@ -25,6 +25,8 @@
namespace OCA\News\BusinessLayer;
use \OCA\AppFramework\Utility\TimeFactory;
use \OCA\News\Db\Item;
use \OCA\News\Db\ItemMapper;
use \OCA\News\Db\StatusFlag;
@ -35,12 +37,14 @@ class ItemBusinessLayer extends BusinessLayer {
private $statusFlag;
private $autoPurgeCount;
private $timeFactory;
public function __construct(ItemMapper $itemMapper, StatusFlag $statusFlag,
$autoPurgeCount=0){
TimeFactory $timeFactory, $autoPurgeCount=0){
parent::__construct($itemMapper);
$this->statusFlag = $statusFlag;
$this->autoPurgeCount = $autoPurgeCount;
$this->timeFactory = $timeFactory;
}
@ -96,6 +100,7 @@ class ItemBusinessLayer extends BusinessLayer {
public function star($feedId, $guidHash, $isStarred, $userId){
// FIXME: this can throw two possible exceptions
$item = $this->mapper->findByGuidHash($guidHash, $feedId, $userId);
$item->setLastModified($this->timeFactory->getTime());
if($isStarred){
$item->setStarred();
} else {
@ -107,6 +112,7 @@ class ItemBusinessLayer extends BusinessLayer {
public function read($itemId, $isRead, $userId){
$item = $this->find($itemId, $userId);
$item->setLastModified($this->timeFactory->getTime());
if($isRead){
$item->setRead();
} else {

Просмотреть файл

@ -116,7 +116,7 @@ class DIContainer extends BaseContainer {
$this['ItemBusinessLayer'] = $this->share(function($c){
return new ItemBusinessLayer($c['ItemMapper'], $c['StatusFlag'],
$c['autoPurgeCount']);
$c['TimeFactory'], $c['autoPurgeCount']);
});

Просмотреть файл

@ -41,9 +41,18 @@ class ItemBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility {
private $user;
private $response;
private $status;
private $time;
protected function setUp(){
$this->time = 222;
$timeFactory = $this->getMockBuilder(
'\OCA\AppFramework\Utility\TimeFactory')
->disableOriginalConstructor()
->getMock();
$timeFactory->expects($this->any())
->method('getTime')
->will($this->returnValue($this->time));
$this->api = $this->getAPIMock();
$this->mapper = $this->getMockBuilder('\OCA\News\Db\ItemMapper')
->disableOriginalConstructor()
@ -56,7 +65,8 @@ class ItemBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility {
->method('typeToStatus')
->will($this->returnValue($this->status));
$this->threshold = 2;
$this->itemBusinessLayer = new ItemBusinessLayer($this->mapper, $statusFlag, $this->threshold);
$this->itemBusinessLayer = new ItemBusinessLayer($this->mapper,
$statusFlag, $timeFactory, $this->threshold);
$this->user = 'jack';
$response = 'hi';
$this->id = 3;
@ -188,12 +198,20 @@ class ItemBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility {
public function testStar(){
$feedId = 3;
$itemId = 3;
$feedId = 5;
$guidHash = md5('hihi');
$item = new Item();
$item->setStatus(128);
$item->setId($feedId);
$item->setId($itemId);
$item->setUnstarred();
$expectedItem = new Item();
$expectedItem->setStatus(128);
$expectedItem->setStarred();
$expectedItem->setId($itemId);
$expectedItem->setLastModified($this->time);
$this->mapper->expects($this->once())
->method('findByGuidHash')
@ -205,11 +223,11 @@ class ItemBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility {
$this->mapper->expects($this->once())
->method('update')
->with($this->equalTo($item));
->with($this->equalTo($expectedItem));
$this->itemBusinessLayer->star($feedId, $guidHash, false, $this->user);
$this->itemBusinessLayer->star($feedId, $guidHash, true, $this->user);
$this->assertTrue($item->isUnstarred());
$this->assertTrue($item->isStarred());
}
@ -218,6 +236,13 @@ class ItemBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility {
$item = new Item();
$item->setStatus(128);
$item->setId($itemId);
$item->setRead();
$expectedItem = new Item();
$expectedItem->setStatus(128);
$expectedItem->setUnread();
$expectedItem->setId($itemId);
$expectedItem->setLastModified($this->time);
$this->mapper->expects($this->once())
->method('find')
@ -226,7 +251,7 @@ class ItemBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility {
$this->mapper->expects($this->once())
->method('update')
->with($this->equalTo($item));
->with($this->equalTo($expectedItem));
$this->itemBusinessLayer->read($itemId, false, $this->user);