зеркало из https://github.com/nextcloud/news.git
update items when they are being set read or starred
This commit is contained in:
Родитель
18b523b808
Коммит
252168aceb
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче