Shifts feed: Added URL to shift and shifttype name & description
This commit is contained in:
parent
24204b1f3c
commit
a31534d9b7
|
@ -8,6 +8,7 @@ use Carbon\CarbonTimeZone;
|
|||
use Engelsystem\Helpers\Authenticator;
|
||||
use Engelsystem\Http\Request;
|
||||
use Engelsystem\Http\Response;
|
||||
use Engelsystem\Http\UrlGenerator;
|
||||
use Engelsystem\Models\News;
|
||||
use Engelsystem\Models\Shifts\ShiftEntry;
|
||||
use Illuminate\Support\Collection;
|
||||
|
@ -26,6 +27,7 @@ class FeedController extends BaseController
|
|||
protected Authenticator $auth,
|
||||
protected Request $request,
|
||||
protected Response $response,
|
||||
protected UrlGenerator $url,
|
||||
) {
|
||||
}
|
||||
|
||||
|
@ -74,16 +76,22 @@ class FeedController extends BaseController
|
|||
'name' => $shift->shiftType->name,
|
||||
// Shift / Talk title
|
||||
'title' => $shift->title,
|
||||
// Shift description
|
||||
// Shift description, should be shown after shifttype_description, markdown formatted
|
||||
'description' => $shift->description,
|
||||
|
||||
'link' => $this->url->to('/shifts', ['action' => 'view', 'shift_id' => $shift->id]),
|
||||
|
||||
// Users comment
|
||||
'Comment' => $entry->user_comment,
|
||||
|
||||
// Shift id
|
||||
'SID' => $shift->id,
|
||||
// Shift type id
|
||||
|
||||
// Shift type
|
||||
'shifttype_id' => $shift->shiftType->id,
|
||||
'shifttype_name' => $shift->shiftType->name, // General type of the task
|
||||
'shifttype_description' => $shift->shiftType->description, // General description, markdown formatted
|
||||
|
||||
// Talk URL
|
||||
'URL' => $shift->url,
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace Engelsystem\Test\Unit\Controllers;
|
|||
use Engelsystem\Controllers\FeedController;
|
||||
use Engelsystem\Helpers\Authenticator;
|
||||
use Engelsystem\Helpers\Carbon;
|
||||
use Engelsystem\Http\UrlGenerator;
|
||||
use Engelsystem\Models\News;
|
||||
use Engelsystem\Models\Shifts\ShiftEntry;
|
||||
use Engelsystem\Models\User\User;
|
||||
|
@ -18,6 +19,7 @@ use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
|
|||
class FeedControllerTest extends ControllerTest
|
||||
{
|
||||
protected Authenticator|MockObject $auth;
|
||||
protected UrlGenerator|MockObject $url;
|
||||
|
||||
/**
|
||||
* @covers \Engelsystem\Controllers\FeedController::__construct
|
||||
|
@ -26,7 +28,7 @@ class FeedControllerTest extends ControllerTest
|
|||
*/
|
||||
public function testAtom(): void
|
||||
{
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response, $this->url);
|
||||
|
||||
$this->setExpects(
|
||||
$this->response,
|
||||
|
@ -57,7 +59,7 @@ class FeedControllerTest extends ControllerTest
|
|||
*/
|
||||
public function testRss(): void
|
||||
{
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response, $this->url);
|
||||
|
||||
$this->setExpects(
|
||||
$this->response,
|
||||
|
@ -90,7 +92,7 @@ class FeedControllerTest extends ControllerTest
|
|||
new Session(new MockArraySessionStorage()),
|
||||
new User(),
|
||||
);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response, $this->url);
|
||||
|
||||
/** @var User $user */
|
||||
$user = User::factory()->create(['api_key' => 'fo0']);
|
||||
|
@ -136,7 +138,8 @@ class FeedControllerTest extends ControllerTest
|
|||
new Session(new MockArraySessionStorage()),
|
||||
new User(),
|
||||
);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response, $this->url);
|
||||
$this->setExpects($this->url, 'to', null, 'https://host/shift/1337', $this->atLeastOnce());
|
||||
|
||||
/** @var User $user */
|
||||
$user = User::factory()->create(['api_key' => 'fo0']);
|
||||
|
@ -165,7 +168,8 @@ class FeedControllerTest extends ControllerTest
|
|||
[
|
||||
'name', 'title', 'description',
|
||||
'Comment',
|
||||
'SID', 'shifttype_id', 'URL',
|
||||
'SID', 'shifttype_id', 'URL', 'link',
|
||||
'shifttype_name', 'shifttype_description',
|
||||
'RID', 'Name', 'map_url',
|
||||
'start', 'start_date', 'end', 'end_date',
|
||||
'timezone', 'event_timezone',
|
||||
|
@ -195,7 +199,7 @@ class FeedControllerTest extends ControllerTest
|
|||
*/
|
||||
public function testGetNewsMeetings(bool $isMeeting): void
|
||||
{
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response, $this->url);
|
||||
|
||||
$this->request->attributes->set('meetings', $isMeeting);
|
||||
$this->setExpects($this->response, 'withHeader', null, $this->response);
|
||||
|
@ -223,7 +227,7 @@ class FeedControllerTest extends ControllerTest
|
|||
public function testGetNewsLimit(): void
|
||||
{
|
||||
News::query()->where('id', '<>', 1)->update(['updated_at' => Carbon::now()->subHour()]);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response);
|
||||
$controller = new FeedController($this->auth, $this->request, $this->response, $this->url);
|
||||
|
||||
$this->setExpects($this->response, 'withHeader', null, $this->response);
|
||||
$this->setExpects($this->response, 'setEtag', null, $this->response);
|
||||
|
@ -250,6 +254,7 @@ class FeedControllerTest extends ControllerTest
|
|||
|
||||
$this->config->set('display_news', 10);
|
||||
$this->auth = $this->createMock(Authenticator::class);
|
||||
$this->url = $this->createMock(UrlGenerator::class);
|
||||
|
||||
News::factory(7)->create(['is_meeting' => false]);
|
||||
News::factory(5)->create(['is_meeting' => true]);
|
||||
|
|
Loading…
Reference in New Issue