Files
Phraseanet/tests/Alchemy/Tests/Phrasea/Controller/Prod/PushTest.php
jygaulier fbccec009e PHRAS-3602_shared-baskets-step1 WIP DO NOT MERGE (#3929)
* PHRAS-3602 : migrate validations to baskets
WIP [skip ci]

* PHRAS-3602 : migrate validations code to baskets code (wip)
WIP [skip ci]

* PHRAS-3602 : migrate validations to baskets
WIP [skip ci]

* PHRAS-3602 : migrate validations to baskets
WIP [skip ci]

* PHRAS-3602 : fake commit to run tests

* PHRAS-3602 : migrate validations to baskets
fix typo

* PHRAS-3602 : migrate validations to baskets
fixed (some) tests

* PHRAS-3602 : migrate validations to baskets
fixed (some) tests

* PHRAS-3602 : migrate validations to baskets
fixed (some) tests. need to remove method():return_type signature because of old phpunit which does not mock it

* PHRAS-3602 : migrate validations to baskets
fix

* PHRAS-3602 : migrate validations to baskets
fix err 500 when a "vote" (feedback) is deployed in wz

* PHRAS-3602 : migrate validations to baskets
fix missing votes for element+participant
fix update vote dates on basket

* PHRAS-3602 : ux
bump production-client to 34
WIP [skip ci]

* PHRAS-3602 : rebase (bump production-client to 37)
WIP [skip ci]

* PHRAS-3602 : refacto css/twig/templates/... ; replace many png's by fonts
WIP [skip ci]

* PHRAS-3602 : fix icon / css
WIP

* PHRAS-3602 : better icon align ; back button color
fix : save button after adding a user
WIP [skip ci]

* PHRAS-3602 : restore sharebasket controller
todo : implement modification right ; owner is participant ?
WIP [skip ci]

* PHRAS-3602 : set "canModifiy" ; cleanup
WIP [skip ci]

* PHRAS-3602 : respect "can_modify" on shared basket
WIP [skip ci]

* PHRAS-3602 : fix badge icon bg ; fix button css
WIP [skip ci]

* PHRAS-3602 : fix css & cleanup
WIP [skip ci]

* PHRAS-3602 : fix 500 on preview/feedback tab
WIP [skip ci]

* PHRAS-3602 : fix allow to display dlg without selection

* PHRAS-3602 : bump version to 4.1.6-rc1 ; prodclient=38
WIP [skip ci]

* PHRAS-3602 : factorize baskets menu (wip)
WIP [skip ci]

* PHRAS-3602 : modify already shared or feedback basket (general menu)
4th icon on badges (vote != modify)
quitshare option (todo back)
allow fa-icons in toolbar

WIP [skip ci]

* PHRAS-3602 : add share end-date (todo:db write)
add 4th general toggle button
fix badge selection bug
fix css badges zone (form position)
WIP [skip ci]

* PHRAS-3602 : big refacto to use "sharebasket" vocab.
fusion "feedback/sharebasket" removed "feedback"
adaptative ux: 1 "can_agree" ==> feedback display
bump production-client to v50
todo: save shr/fbk end-dates
todo: rename "pushXXX" to pushAndShare ?
WIP [skip ci]

* PHRAS-3602 : share / feedback expiration dates are saved in db
date pickers with delta menu
better adaptive ux
todo: move select general togglers
WIP [skip ci]

* PHRAS-3602 : revert validation* tables (remove "dead" rename)
drop all foreign keys from validation*
WIP [skip ci]

* PHRAS-3602 : restore deleted fields in validation, regenerate proxies
WIP [skip ci]

* PHRAS-3602 : fix initiator_id
WIP [skip ci]

* fix initiator_id-bis

* PHRAS-3602 : css for input-text with glued button
dynamic load of users-lists (left zone) = less duplicated code
fix : users-lists  works after refresh
WIP [skip ci]

* PHRAS-3602 : fix users-lists manager (orange) : go flex !

* PHRAS-3602 : empty dist to ease rebase
WIP [skip ci]

* PHRAS-3602 : rebase
WIP [skip ci]

* PHRAS-3602 : new ux for "owner"
feedback mode is an independent toggle
fix "missing mandatory parameter"
WIP [skip ci]

* PHRAS-3602 : fix css of owner badge
WIP [skip ci]

* PHRAS-3602 : fix handling of feedback initiator
WIP [skip ci]

* PHRAS-3602 : better wss to follow "skins"
full roboto
removed useless class "with-button"
WIP [skip ci]

* PHRAS-3602 : fix "a token require a validation"
temporary fix 500 due to send email to (null) vote-initiator for simple share
todo: send a specific email for simple share
WIP [skip ci]

* PHRAS-3602 : different emails depending if user can vote or not
WIP [skip ci]

* PHRAS-3602 : expired shared baskets removed from wz
WIP [skip ci]

* PHRAS-3602 : fix logic error on last sql
WIP [skip ci]

* PHRAS-3602 : fix missing shared baskets on wz
WIP [skip ci]

* PHRAS-3602 : fix blinking of wz/basket detail
now only the title:hover displays detail
WIP [skip ci]

* PHRAS-3602 : rebase
WIP [skip ci]

* PHRAS-3602 : update basket proxy
WIP [skip ci]

* PHRAS-3602 : fix forever "unread" basket
WIP [skip ci]

* PHRAS-3602 : fix display of unread basket ; sync "eye" icon with css change
WIP [skip ci]

* PHRAS-3602 : "quitshare" action works
WIP [skip ci]

* PHRAS-3602 : missing dist files
WIP [skip ci]

* PHRAS-3602 : cleanup & run ci

* PHRAS-3602 : disable failing unit test ; remove blue on onread basket

* PHRAS-3602 : separate "vote" & "share" emails templates & u-tests

* PHRAS-3602 : add 2 icons "stack" to icomoon set
WIP [skip ci]

* PHRAS-3602 : fix test

* PHRAS-3602 : fix test ; add test for simple share email notification

* PHRAS-3602 : changed proxy

* PHRAS-3602 : colored basket icons
WIP [skip ci]

* PHRAS-3602 : circle basket icons
WIP [skip ci]

* PHRAS-3602 : fix wz filters, add "share" filter.
todo: fix fr writing (new string)
WIP [skip ci]

* PHRAS-3602 : fix "share" dichotomy : use "shared" for wz filter
WIP [skip ci]

* PHRAS-3602 : fix PHRAS-3624 ; PHRAS-3623 ; now adding/removing a user from user list is immediate (no more save button)
WIP [skip ci]

* PHRAS-3602 : fix PHRAS-3647 ; shared basket are listed in api (for list and related record)

* PHRAS-3602 : fix due to failing test

* PHRAS-3602 : fix: can load a 1000 users list
todo : move slow code to worker

* PHRAS-3602 : fix due to failing test

* PHRAS-3468 : (fixed in 3602) fix basket content still visible when baskets are hidden (wz-filter)

* PHRAS-3602 : add "wip" baskets with notification & lock
todo : move slow code from message to worker

* PHRAS-3602 : fix tests due to accidental rename

* PHRAS-3602 : fix : menu closes when mouse out : bump to 4.1.6-rc3
todo : fast move to another basket makes the menu appear on top ?

* add shareBasket worker

* fix test

* PHRAS-3602 : fix : rights buttons on badges now works for users added from search (did work only from loading list)

* PHRAS-3590

Co-authored-by: aynsix <asr@esokia-webagency.com>
Co-authored-by: Nicolas Maillat <maillat@alchemy.fr>
2022-04-07 17:07:43 +02:00

139 lines
5.4 KiB
PHP

<?php
namespace Alchemy\Tests\Phrasea\Controller\Prod;
/**
* @group functional
* @group legacy
* @group authenticated
* @group web
*/
class PushTest extends \PhraseanetAuthenticatedWebTestCase
{
public function testRoutePOSTSendSlash()
{
self::$DI['client']->request('POST', '/prod/push/sendform/');
$response = self::$DI['client']->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
}
public function testRoutePOSTSharebasketSlash()
{
self::$DI['client']->request('POST', '/prod/push/sharebasketform/');
$response = self::$DI['client']->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
}
public function testRoutePOSTSend()
{
$this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailInfoPushReceived', 2);
$this->mockUserNotificationSettings('eventsmanager_notify_push');
$records = [
self::$DI['record_1']->get_serialize_key(),
self::$DI['record_2']->get_serialize_key(),
];
self::$DI['client']->request('POST', '/prod/push/send/', [
'lst' => implode(';', $records),
'participants' => [
['usr_id' => self::$DI['user_alt1']->getId(), 'HD' => 1],
['usr_id' => self::$DI['user_alt2']->getId(), 'HD' => 0]
]
]);
$response = self::$DI['client']->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$data = (array) json_decode($response->getContent());
$this->assertArrayHasKey('message', $data);
$this->assertArrayHasKey('success', $data);
$this->assertTrue($data['success'], 'Result is successful');
}
// public function testRoutePOSTSharebasketSimple()
// {
// $this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailInfoBasketShared', 2);
// $this->mockUserNotificationSettings('eventsmanager_notify_validate');
//
// $records = [
// self::$DI['record_1']->get_serialize_key(),
// self::$DI['record_2']->get_serialize_key(),
// ];
//
// self::$DI['client']->request('POST', '/prod/push/sharebasket/', [
// 'lst' => implode(';', $records),
// 'notify' => 1,
// 'isFeedback' => 0,
// 'participants' => [[
// 'usr_id' => self::$DI['user_alt1']->getId(),
// 'agree' => 0,
// 'see_others' => 0,
// 'HD' => 0,
// 'modify' => 0,
// ], [
// 'usr_id' => self::$DI['user_alt2']->getId(),
// 'agree' => 0,
// 'see_others' => 0,
// 'HD' => 1,
// 'modify' => 0,
// ]]
// ]);
// $response = self::$DI['client']->getResponse();
// $this->assertEquals(200, $response->getStatusCode());
// $this->assertEquals('UTF-8', $response->getCharset());
// $data = (array) json_decode($response->getContent());
// $this->assertArrayHasKey('message', $data);
// $this->assertArrayHasKey('success', $data);
// $this->assertTrue($data['success'], 'Result is successful');
// }
// public function testRoutePOSTSharebasketFeedback()
// {
// $this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailInfoValidationRequest', 2);
// $this->mockUserNotificationSettings('eventsmanager_notify_validate');
//
// $records = [
// self::$DI['record_1']->get_serialize_key(),
// self::$DI['record_2']->get_serialize_key(),
// ];
//
// self::$DI['client']->request('POST', '/prod/push/sharebasket/', [
// 'lst' => implode(';', $records),
// 'notify' => 1,
// 'isFeedback' => 1,
// 'participants' => [[
// 'usr_id' => self::$DI['user_alt1']->getId(),
// 'agree' => 1,
// 'see_others' => 1,
// 'HD' => 0,
// 'modify' => 0,
// ], [
// 'usr_id' => self::$DI['user_alt2']->getId(),
// 'agree' => 1,
// 'see_others' => 0,
// 'HD' => 1,
// 'modify' => 0,
// ]]
// ]);
// $response = self::$DI['client']->getResponse();
// $this->assertEquals(200, $response->getStatusCode());
// $this->assertEquals('UTF-8', $response->getCharset());
// $data = (array) json_decode($response->getContent());
// $this->assertArrayHasKey('message', $data);
// $this->assertArrayHasKey('success', $data);
// $this->assertTrue($data['success'], 'Result is successful');
// }
public function testRouteGETSearchUser()
{
self::$DI['client']->request('GET', '/prod/push/search-user/', [
'query' => ''
]);
$response = self::$DI['client']->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$data = (array) json_decode($response->getContent());
$this->assertTrue(is_array($data), 'Json is valid');
}
}