woocommerce/plugins/woocommerce-admin/tests/notes/class-wc-tests-notes-data-s...

357 lines
11 KiB
PHP
Raw Normal View History

<?php
/**
* Admin notes tests
*
* @package WooCommerce\Admin\Tests\Notes
*/
use \Automattic\WooCommerce\Admin\Notes\Notes;
use \Automattic\WooCommerce\Admin\Notes\Note;
/**
* Class WC_Tests_Notes_Data_Store
*/
class WC_Tests_Notes_Data_Store extends WC_Unit_Test_Case {
/**
* Tests that the read data store method works as expected.
*/
public function test_read() {
$note = new Note();
$note->set_title( 'PHPUNIT_TEST_NOTE' );
$note->set_content( 'PHPUNIT_TEST_NOTE_CONTENT' );
$note->set_type( Note::E_WC_ADMIN_NOTE_INFORMATIONAL );
$note->set_name( 'PHPUNIT_TEST_NOTE_NAME' );
$note->set_source( 'PHPUNIT_TEST' );
$note->set_is_snoozable( false );
Inbox notification: layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4218) * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Add undo snackbar button after deletion (https://github.com/woocommerce/woocommerce-admin/pull/4281) * Added undo snakbar button for a single note # Conflicts: # client/wc-api/notes/mutations.js # src/Notes/DataStore.php # src/Notes/WC_Admin_Notes.php * Added a button to undo the deletion of all notes # Conflicts: # client/wc-api/notes/operations.js # src/API/Notes.php * Code adapted to make code reviewing easier There was some code that also was present in another PR, that code was removed to make code reviewing easier. * UnitTest added This commit adds some unit tests * Added verification for API response * Added casting to $note_id * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. # Conflicts: # client/header/activity-panel/panels/inbox/card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Bugfix: solved problem when a note was undismissed There was a problem with the undismiss functionality. When a note was undismissed, it always was recovered with "plain" layout. This commit solves this problem. * Inbox notification: add event recording (https://github.com/woocommerce/woocommerce-admin/pull/4320) * Added events recording This commit adds events recording to the inbox notifications # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Added 'home_screen' verification Changed recorded name, now when the client is in the WooCommerce 'home' page we record 'home_screen' instead of 'wc-admin'. * Added a naming fix and a new prop to the recordEvent * bugfix: added control before interaction with bodyNotificationRef * Added more unit tests for new endpoints This commit adds tests for deleting a single note and for deleting all the notes, both without permission. * Modified variable name * Refactor: prop rename and small logic change * Screen name getter moved into the InboxNoteCard This commit moves the screen name getter inside the InboxNoteCard. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Removed "screen" from state Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Refactor in admin-notes unit tests Some unnecessary controls were removed from the admin-notes unit tests * Indentation fixed in Install.php. Replaced spaces with tabs. * Inbox notification: added new placeholder and empty card (https://github.com/woocommerce/woocommerce-admin/pull/4379) * Added a new placeholder and an empty card This commit adds a new placeholder and a new empty card to the inbox panel # Conflicts: # client/header/activity-panel/panels/inbox/index.js # client/header/activity-panel/panels/inbox/style.scss * Added border to read notes * Improved note filtering in unreadNotes method and validNotes # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Actions render refactored The actions render was refactored in InboxNoteCard component * Refactor of InboxPanel component The methods getUnreadNotesCount and hasValidNotes were separated from the InboxPanel component # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Refactor inbox panel subtitle classes * Added changes for when a note is undismissed This commit adds the requested changes in behavior and design for when a note is dismissed. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Bugfix: Added key to itemlist The InboxNotePlaceholder is shown as an itemlist but it didn't have a key. This commit adds it. * Removed unnecessary validation * Refactored actionList map This commit adds a refactor to the actionList map * Changes to the getUndoDismissRequesting functionality This commit adds a few changes to the getUndoDismissRequesting functionality * Changed className prop * Changed other className prop * Modified InboxPanel rendering * Removed unnecessary method in placeholder.js * Simplified the card.js renderActions method * Change renderActions return in card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: add client unit tests (https://github.com/woocommerce/woocommerce-admin/pull/4386) * Added client unit tests * Added test cases for getUnreadNotesCount and hasValidNotes * Corrected typo error * Removed Enzyme and added React Testing Library * Removed unnecessary param Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Resolved some conflicts with master * Marketing note test repaired This commit repairs the marketing note test * Added note type 'marketing' to delete all functionality * Removed set_icon method from some notes and docs * Added set_icon method as deprecated to prevent errors. Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
2020-06-03 11:43:35 +00:00
$note->set_layout( 'plain' );
$note->set_image( '' );
$note->add_action(
'PHPUNIT_TEST_ACTION_SLUG',
'PHPUNIT_TEST_ACTION_LABEL',
'?s=PHPUNIT_TEST_ACTION_URL'
);
Inbox notification: layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4218) * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Add undo snackbar button after deletion (https://github.com/woocommerce/woocommerce-admin/pull/4281) * Added undo snakbar button for a single note # Conflicts: # client/wc-api/notes/mutations.js # src/Notes/DataStore.php # src/Notes/WC_Admin_Notes.php * Added a button to undo the deletion of all notes # Conflicts: # client/wc-api/notes/operations.js # src/API/Notes.php * Code adapted to make code reviewing easier There was some code that also was present in another PR, that code was removed to make code reviewing easier. * UnitTest added This commit adds some unit tests * Added verification for API response * Added casting to $note_id * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. # Conflicts: # client/header/activity-panel/panels/inbox/card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Bugfix: solved problem when a note was undismissed There was a problem with the undismiss functionality. When a note was undismissed, it always was recovered with "plain" layout. This commit solves this problem. * Inbox notification: add event recording (https://github.com/woocommerce/woocommerce-admin/pull/4320) * Added events recording This commit adds events recording to the inbox notifications # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Added 'home_screen' verification Changed recorded name, now when the client is in the WooCommerce 'home' page we record 'home_screen' instead of 'wc-admin'. * Added a naming fix and a new prop to the recordEvent * bugfix: added control before interaction with bodyNotificationRef * Added more unit tests for new endpoints This commit adds tests for deleting a single note and for deleting all the notes, both without permission. * Modified variable name * Refactor: prop rename and small logic change * Screen name getter moved into the InboxNoteCard This commit moves the screen name getter inside the InboxNoteCard. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Removed "screen" from state Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Refactor in admin-notes unit tests Some unnecessary controls were removed from the admin-notes unit tests * Indentation fixed in Install.php. Replaced spaces with tabs. * Inbox notification: added new placeholder and empty card (https://github.com/woocommerce/woocommerce-admin/pull/4379) * Added a new placeholder and an empty card This commit adds a new placeholder and a new empty card to the inbox panel # Conflicts: # client/header/activity-panel/panels/inbox/index.js # client/header/activity-panel/panels/inbox/style.scss * Added border to read notes * Improved note filtering in unreadNotes method and validNotes # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Actions render refactored The actions render was refactored in InboxNoteCard component * Refactor of InboxPanel component The methods getUnreadNotesCount and hasValidNotes were separated from the InboxPanel component # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Refactor inbox panel subtitle classes * Added changes for when a note is undismissed This commit adds the requested changes in behavior and design for when a note is dismissed. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Bugfix: Added key to itemlist The InboxNotePlaceholder is shown as an itemlist but it didn't have a key. This commit adds it. * Removed unnecessary validation * Refactored actionList map This commit adds a refactor to the actionList map * Changes to the getUndoDismissRequesting functionality This commit adds a few changes to the getUndoDismissRequesting functionality * Changed className prop * Changed other className prop * Modified InboxPanel rendering * Removed unnecessary method in placeholder.js * Simplified the card.js renderActions method * Change renderActions return in card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: add client unit tests (https://github.com/woocommerce/woocommerce-admin/pull/4386) * Added client unit tests * Added test cases for getUnreadNotesCount and hasValidNotes * Corrected typo error * Removed Enzyme and added React Testing Library * Removed unnecessary param Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Resolved some conflicts with master * Marketing note test repaired This commit repairs the marketing note test * Added note type 'marketing' to delete all functionality * Removed set_icon method from some notes and docs * Added set_icon method as deprecated to prevent errors. Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
2020-06-03 11:43:35 +00:00
$note->set_is_deleted( false );
$note->save();
// Load in a new instance of the note.
$read_note = new Note();
$read_note->set_id( $note->get_id() );
WC_Data_Store::load( 'admin-note' )->read( $read_note );
$this->assertEquals( $note->get_title(), $read_note->get_title() );
$this->assertEquals( $note->get_content(), $read_note->get_content() );
$this->assertEquals( $note->get_type(), $read_note->get_type() );
$this->assertEquals( $note->get_name(), $read_note->get_name() );
$this->assertEquals( $note->get_source(), $read_note->get_source() );
$this->assertEquals( $note->get_is_snoozable(), '0' !== $read_note->get_is_snoozable() );
Inbox notification: layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4218) * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Add undo snackbar button after deletion (https://github.com/woocommerce/woocommerce-admin/pull/4281) * Added undo snakbar button for a single note # Conflicts: # client/wc-api/notes/mutations.js # src/Notes/DataStore.php # src/Notes/WC_Admin_Notes.php * Added a button to undo the deletion of all notes # Conflicts: # client/wc-api/notes/operations.js # src/API/Notes.php * Code adapted to make code reviewing easier There was some code that also was present in another PR, that code was removed to make code reviewing easier. * UnitTest added This commit adds some unit tests * Added verification for API response * Added casting to $note_id * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. # Conflicts: # client/header/activity-panel/panels/inbox/card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Bugfix: solved problem when a note was undismissed There was a problem with the undismiss functionality. When a note was undismissed, it always was recovered with "plain" layout. This commit solves this problem. * Inbox notification: add event recording (https://github.com/woocommerce/woocommerce-admin/pull/4320) * Added events recording This commit adds events recording to the inbox notifications # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Added 'home_screen' verification Changed recorded name, now when the client is in the WooCommerce 'home' page we record 'home_screen' instead of 'wc-admin'. * Added a naming fix and a new prop to the recordEvent * bugfix: added control before interaction with bodyNotificationRef * Added more unit tests for new endpoints This commit adds tests for deleting a single note and for deleting all the notes, both without permission. * Modified variable name * Refactor: prop rename and small logic change * Screen name getter moved into the InboxNoteCard This commit moves the screen name getter inside the InboxNoteCard. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Removed "screen" from state Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Refactor in admin-notes unit tests Some unnecessary controls were removed from the admin-notes unit tests * Indentation fixed in Install.php. Replaced spaces with tabs. * Inbox notification: added new placeholder and empty card (https://github.com/woocommerce/woocommerce-admin/pull/4379) * Added a new placeholder and an empty card This commit adds a new placeholder and a new empty card to the inbox panel # Conflicts: # client/header/activity-panel/panels/inbox/index.js # client/header/activity-panel/panels/inbox/style.scss * Added border to read notes * Improved note filtering in unreadNotes method and validNotes # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Actions render refactored The actions render was refactored in InboxNoteCard component * Refactor of InboxPanel component The methods getUnreadNotesCount and hasValidNotes were separated from the InboxPanel component # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Refactor inbox panel subtitle classes * Added changes for when a note is undismissed This commit adds the requested changes in behavior and design for when a note is dismissed. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Bugfix: Added key to itemlist The InboxNotePlaceholder is shown as an itemlist but it didn't have a key. This commit adds it. * Removed unnecessary validation * Refactored actionList map This commit adds a refactor to the actionList map * Changes to the getUndoDismissRequesting functionality This commit adds a few changes to the getUndoDismissRequesting functionality * Changed className prop * Changed other className prop * Modified InboxPanel rendering * Removed unnecessary method in placeholder.js * Simplified the card.js renderActions method * Change renderActions return in card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: add client unit tests (https://github.com/woocommerce/woocommerce-admin/pull/4386) * Added client unit tests * Added test cases for getUnreadNotesCount and hasValidNotes * Corrected typo error * Removed Enzyme and added React Testing Library * Removed unnecessary param Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Resolved some conflicts with master * Marketing note test repaired This commit repairs the marketing note test * Added note type 'marketing' to delete all functionality * Removed set_icon method from some notes and docs * Added set_icon method as deprecated to prevent errors. Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
2020-06-03 11:43:35 +00:00
$this->assertEquals( $note->get_layout(), $read_note->get_layout() );
$this->assertEquals( $note->get_image(), $read_note->get_image() );
$this->assertEquals( $note->get_actions(), $read_note->get_actions() );
Inbox notification: layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4218) * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Add undo snackbar button after deletion (https://github.com/woocommerce/woocommerce-admin/pull/4281) * Added undo snakbar button for a single note # Conflicts: # client/wc-api/notes/mutations.js # src/Notes/DataStore.php # src/Notes/WC_Admin_Notes.php * Added a button to undo the deletion of all notes # Conflicts: # client/wc-api/notes/operations.js # src/API/Notes.php * Code adapted to make code reviewing easier There was some code that also was present in another PR, that code was removed to make code reviewing easier. * UnitTest added This commit adds some unit tests * Added verification for API response * Added casting to $note_id * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. # Conflicts: # client/header/activity-panel/panels/inbox/card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Bugfix: solved problem when a note was undismissed There was a problem with the undismiss functionality. When a note was undismissed, it always was recovered with "plain" layout. This commit solves this problem. * Inbox notification: add event recording (https://github.com/woocommerce/woocommerce-admin/pull/4320) * Added events recording This commit adds events recording to the inbox notifications # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Added 'home_screen' verification Changed recorded name, now when the client is in the WooCommerce 'home' page we record 'home_screen' instead of 'wc-admin'. * Added a naming fix and a new prop to the recordEvent * bugfix: added control before interaction with bodyNotificationRef * Added more unit tests for new endpoints This commit adds tests for deleting a single note and for deleting all the notes, both without permission. * Modified variable name * Refactor: prop rename and small logic change * Screen name getter moved into the InboxNoteCard This commit moves the screen name getter inside the InboxNoteCard. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Removed "screen" from state Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Refactor in admin-notes unit tests Some unnecessary controls were removed from the admin-notes unit tests * Indentation fixed in Install.php. Replaced spaces with tabs. * Inbox notification: added new placeholder and empty card (https://github.com/woocommerce/woocommerce-admin/pull/4379) * Added a new placeholder and an empty card This commit adds a new placeholder and a new empty card to the inbox panel # Conflicts: # client/header/activity-panel/panels/inbox/index.js # client/header/activity-panel/panels/inbox/style.scss * Added border to read notes * Improved note filtering in unreadNotes method and validNotes # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Actions render refactored The actions render was refactored in InboxNoteCard component * Refactor of InboxPanel component The methods getUnreadNotesCount and hasValidNotes were separated from the InboxPanel component # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Refactor inbox panel subtitle classes * Added changes for when a note is undismissed This commit adds the requested changes in behavior and design for when a note is dismissed. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Bugfix: Added key to itemlist The InboxNotePlaceholder is shown as an itemlist but it didn't have a key. This commit adds it. * Removed unnecessary validation * Refactored actionList map This commit adds a refactor to the actionList map * Changes to the getUndoDismissRequesting functionality This commit adds a few changes to the getUndoDismissRequesting functionality * Changed className prop * Changed other className prop * Modified InboxPanel rendering * Removed unnecessary method in placeholder.js * Simplified the card.js renderActions method * Change renderActions return in card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: add client unit tests (https://github.com/woocommerce/woocommerce-admin/pull/4386) * Added client unit tests * Added test cases for getUnreadNotesCount and hasValidNotes * Corrected typo error * Removed Enzyme and added React Testing Library * Removed unnecessary param Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Resolved some conflicts with master * Marketing note test repaired This commit repairs the marketing note test * Added note type 'marketing' to delete all functionality * Removed set_icon method from some notes and docs * Added set_icon method as deprecated to prevent errors. Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
2020-06-03 11:43:35 +00:00
$this->assertEquals( $note->get_is_deleted(), $read_note->get_is_deleted() );
}
/**
* Tests that the read data store method does not fail for invalid content data fields.
*/
public function test_read_with_invalid_content_data() {
global $wpdb;
$data_store = WC_Data_Store::load( 'admin-note' );
$note = new Note();
$note->set_name( 'PHPUNIT_TEST_NOTE_NAME' );
$note->set_source( 'PHPUNIT_TEST' );
$note->set_title( 'PHPUNIT_TEST_NOTE' );
$note->set_content( 'PHPUNIT_TEST_NOTE_CONTENT' );
$note->save();
// Make sure that empty content_data does not break the note.
$wpdb->update(
$wpdb->prefix . 'wc_admin_notes',
array(
'content_data' => '',
),
array( 'note_id' => $note->get_id() )
);
$data_store->read( $note );
$this->assertEquals( 'PHPUNIT_TEST_NOTE', $note->get_title() );
$this->assertEquals( 'PHPUNIT_TEST_NOTE_CONTENT', $note->get_content() );
// We also want to make sure an empty array does not break the content.
$wpdb->update(
$wpdb->prefix . 'wc_admin_notes',
array(
'content_data' => '[]',
),
array( 'note_id' => $note->get_id() )
);
$data_store->read( $note );
$this->assertEquals( 'PHPUNIT_TEST_NOTE', $note->get_title() );
$this->assertEquals( 'PHPUNIT_TEST_NOTE_CONTENT', $note->get_content() );
}
/**
* Tests that the delete_notes_with_name method works when a single name is
* passed in.
*/
public function test_delete_notes_with_single_name() {
$note_name_to_delete = 'PHPUNIT_TEST_NOTE_TO_DELETE_' . gmdate( 'U' );
$note_name_to_keep = 'PHPUNIT_TEST_NOTE_TO_KEEP_' . gmdate( 'U' );
$note_names = array(
$note_name_to_delete,
$note_name_to_keep,
);
$data_store = WC_Data_Store::load( 'admin-note' );
// Create notes.
foreach ( $note_names as $note_name ) {
for ( $i = 0; $i < 3; $i++ ) {
$note = new Note();
$note->set_name( $note_name );
$note->set_source( 'PHPUNIT_TEST' );
$note->set_title( 'PHPUNIT_TEST_NOTE' );
$note->set_content( 'PHPUNIT_TEST_NOTE_CONTENT' );
$note->save();
}
}
// Make sure that we know that the notes were added properly.
$this->assertEquals(
3,
count( $data_store->get_notes_with_name( $note_name_to_delete ) )
);
$this->assertEquals(
3,
count( $data_store->get_notes_with_name( $note_name_to_keep ) )
);
// Delete the notes.
Notes::delete_notes_with_name( $note_name_to_delete );
// Make sure the notes were deleted.
$this->assertEquals(
0,
count( $data_store->get_notes_with_name( $note_name_to_delete ) )
);
$this->assertEquals(
3,
count( $data_store->get_notes_with_name( $note_name_to_keep ) )
);
}
/**
* Tests that the delete_notes_with_name method works when multiple names
* are passed in.
*/
public function test_delete_notes_with_multiple_names() {
$note_name_to_delete_1 = 'PHPUNIT_TEST_NOTE_TO_DELETE_1_' . gmdate( 'U' );
$note_name_to_delete_2 = 'PHPUNIT_TEST_NOTE_TO_DELETE_2_' . gmdate( 'U' );
$note_name_to_keep = 'PHPUNIT_TEST_NOTE_TO_KEEP_' . gmdate( 'U' );
$note_names = array(
$note_name_to_delete_1,
$note_name_to_delete_2,
$note_name_to_keep,
);
$data_store = WC_Data_Store::load( 'admin-note' );
// Create notes.
foreach ( $note_names as $note_name ) {
for ( $i = 0; $i < 3; $i++ ) {
$note = new Note();
$note->set_name( $note_name );
$note->set_source( 'PHPUNIT_TEST' );
$note->set_title( 'PHPUNIT_TEST_NOTE' );
$note->set_content( 'PHPUNIT_TEST_NOTE_CONTENT' );
$note->save();
}
}
// Make sure that we know that the notes were added properly.
$this->assertEquals(
3,
count( $data_store->get_notes_with_name( $note_name_to_delete_1 ) )
);
$this->assertEquals(
3,
count( $data_store->get_notes_with_name( $note_name_to_delete_2 ) )
);
$this->assertEquals(
3,
count( $data_store->get_notes_with_name( $note_name_to_keep ) )
);
// Delete the notes.
Notes::delete_notes_with_name(
array(
$note_name_to_delete_1,
$note_name_to_delete_2,
)
);
// Make sure the notes were deleted.
$this->assertEquals(
0,
count( $data_store->get_notes_with_name( $note_name_to_delete_1 ) )
);
$this->assertEquals(
0,
count( $data_store->get_notes_with_name( $note_name_to_delete_2 ) )
);
$this->assertEquals(
3,
count( $data_store->get_notes_with_name( $note_name_to_keep ) )
);
}
/**
* Test that fatal errors aren't thrown when the Notes datastore read() throws an exception.
*/
public function test_read_throws_exception() {
// Create a test note.
$note = new Note();
$note->set_name( 'PHPUNIT_TEST_NOTE_NAME' );
$note->set_source( 'PHPUNIT_TEST' );
$note->set_title( 'PHPUNIT_TEST_NOTE_TITLE' );
$note->set_content( 'PHPUNIT_TEST_NOTE_CONTENT' );
$note->save();
$note_id = $note->get_id();
// Sub in a mock datastore that throws an error on read().
$mock_datastore = $this->getMockBuilder( \Automattic\WooCommerce\Admin\Notes\DataStore::class )
->setMethods( array( 'read' ) )
->getMock();
$mock_datastore->method( 'read' )->will( $this->throwException( new \Exception() ) );
// Suppress deliberately caused errors.
$log_file = ini_set( 'error_log', '/dev/null' ); // phpcs:ignore WordPress.PHP.IniSet.Risky
$filter_datastore = function() use ( $mock_datastore ) {
return $mock_datastore;
};
add_filter( 'woocommerce_admin-note_data_store', $filter_datastore );
// Attempt to retrieve the test note.
$note = Notes::get_note( $note_id );
remove_filter( 'woocommerce_admin-note_data_store', $filter_datastore );
ini_set( 'error_log', $log_file ); // phpcs:ignore WordPress.PHP.IniSet.Risky
$this->assertFalse( $note );
$this->assertEquals( 1, did_action( 'woocommerce_caught_exception' ) );
}
/**
* Test that sources are correctly added to where clause.
*/
public function test_get_notes_where_clauses_with_sources() {
$data_store = WC_Data_Store::load( 'admin-note' );
$where_clause = $data_store->get_notes_where_clauses(
array(
'source' => array( 'source', 'another-source' ),
)
);
$this->assertEquals( " AND source IN ('source','another-source') AND is_deleted = 0", $where_clause );
}
/**
* Test that invalid types are filtered out.
*/
public function test_get_notes_where_clauses_with_invalid_types() {
$data_store = WC_Data_Store::load( 'admin-note' );
$where_clause = $data_store->get_notes_where_clauses(
array(
'type' => array( 'random', Note::E_WC_ADMIN_NOTE_MARKETING ),
)
);
$this->assertEquals(
sprintf( " AND type IN ('%s') AND is_deleted = 0", Note::E_WC_ADMIN_NOTE_MARKETING ),
$where_clause
);
}
/**
* Test the differences between lookup_notes() and get_notes()
*/
public function test_lookup_notes_versus_get_notes() {
// Create two test notes.
for ( $i = 0; $i < 2; $i++ ) {
$note = new Note();
$note->set_title( 'PHPUNIT_PAGING_TEST_NOTE_' . $i );
$note->set_content( 'PHPUNIT_PAGING_TEST_NOTE_CONTENT' );
$note->set_type( Note::E_WC_ADMIN_NOTE_INFORMATIONAL );
$note->set_name( 'PHPUNIT_PAGING_TEST_NOTE_NAME' );
$note->set_source( 'PHPUNIT_TEST' );
$note->set_is_snoozable( false );
$note->set_layout( 'plain' );
$note->set_image( '' );
$note->add_action(
'PHPUNIT_TEST_ACTION_SLUG',
'PHPUNIT_TEST_ACTION_LABEL',
'?s=PHPUNIT_TEST_ACTION_URL'
);
$note->set_is_deleted( false );
$note->save();
}
// Add filter for 'woocommerce_note_where_clauses' that should be called only once.
$filter_hit_count = 0;
$filter_callback = function( $arg ) use ( &$filter_hit_count ) {
$filter_hit_count++;
return $arg;
};
add_filter( 'woocommerce_note_where_clauses', $filter_callback, 1 );
// Retrieve test notes by lookup_notes and get_notes.
$data_store = WC_Data_Store::load( 'admin-note' );
$args = array(
'source' => array( 'PHPUNIT_TEST' ),
'name' => array( 'PHPUNIT_PAGING_TEST_NOTE_NAME' ),
'per_page' => 1, // lookup_notes should ignore this.
);
$lookup_result = $data_store->lookup_notes( $args );
$get_result = $data_store->get_notes( $args );
// We should have hit the filter exactly once.
$this->assertEquals( $filter_hit_count, 1 );
// We should have two notes in the lookup_result, because lookup_notes() ignores the 'per_page' arg.
$this->assertEquals( count( $lookup_result ), 2 );
// We should have one note in the get_result, because get_notes() respects the 'per_page' arg.
$this->assertEquals( count( $get_result ), 1 );
// Lookup and get should return well-formed Notes.
$lookup_note_zero = new Note();
$lookup_note_zero->set_id( $lookup_result[0]->note_id );
$data_store->read( $lookup_note_zero );
$get_note_zero = new Note();
$get_note_zero->set_id( $get_result[0]->note_id );
$data_store->read( $get_note_zero );
// The first note in each result set should be the same.
$this->assertEquals( $lookup_note_zero->get_id(), $get_note_zero->get_id() );
}
/**
* Delete notes created by this class's tests.
*/
public function tearDown() {
global $wpdb;
parent::tearDown();
$wpdb->query( $wpdb->prepare( 'DELETE n.*, a.* FROM ' . $wpdb->prefix . 'wc_admin_notes n JOIN ' . $wpdb->prefix . 'wc_admin_note_actions a ON n.note_id = a.note_id WHERE n.source = %s', 'PHPUNIT_TEST' ) );
}
}