Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get product stats using the Merchant Center report query #2229

Merged
Merged
Changes from 1 commit
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
25db819
WIP
jorgemd24 Oct 25, 2023
81918f5
Add Missing Jetpack functions
jorgemd24 Nov 6, 2023
05ab472
Add JetpackWPCOM to the service provider
jorgemd24 Nov 6, 2023
6975f77
Move out initial code of GoogleListingsAndAdsPlugin file
jorgemd24 Nov 6, 2023
1f7ca4c
Added links to the Jetpack functions and remove duplicated PHPDoc
jorgemd24 Nov 7, 2023
021017b
Merge pull request #2145 from woocommerce/add/missing-functions-jetpa…
jorgemd24 Nov 8, 2023
b4130fe
Filter results for WC Proxy
jorgemd24 Nov 9, 2023
ebe9798
WIP tests
jorgemd24 Nov 9, 2023
dc1fcb6
Rename file
jorgemd24 Nov 10, 2023
e77bdbf
Add tests
jorgemd24 Nov 10, 2023
61a4c5b
Update phpunit polyfills to 1.1 for WP 6.4
Nov 9, 2023
83e016a
Merge branch 'develop' into feature/google-api-project
jorgemd24 Nov 10, 2023
6076fc1
Merge branch 'feature/google-api-project' into add/gla_syncable_filter
jorgemd24 Nov 10, 2023
2f81f35
Fix eslint errors
jorgemd24 Nov 10, 2023
686b966
Fix phpcs tests
jorgemd24 Nov 10, 2023
26f8c7b
Rename post_types_to_filter
jorgemd24 Nov 13, 2023
2a5d4b7
Tweak formatting
jorgemd24 Nov 13, 2023
e78d7d0
Check for the value of gla_syncable
jorgemd24 Nov 13, 2023
5ec640e
Tweaks filter function names and PHPDocs
jorgemd24 Nov 14, 2023
b84999b
Use the ChannelVisibility constants
jorgemd24 Nov 14, 2023
faa9c56
Merge pull request #2152 from woocommerce/add/gla_syncable_filter
jorgemd24 Nov 20, 2023
ef3a011
Merge branch 'develop' into feature/google-api-project
jorgemd24 Dec 5, 2023
f673381
Create NotificationsService
puntope Dec 27, 2023
897e2d1
Call Notify on Product changes
puntope Dec 27, 2023
8587db5
Update tests
puntope Dec 27, 2023
80c27f0
Start `release/2.5.13`.
github-actions[bot] Dec 6, 2023
ca4e35a
Update readme.txt
Dec 6, 2023
caa952a
Set migration version number
Dec 6, 2023
704efb7
Product version bump update
Dec 6, 2023
1781950
Changelog update
Dec 6, 2023
dd7f8de
Update hooks documentation from branch.
github-actions[bot] Dec 6, 2023
7072aea
Add (budget and audiences) tracking for Onboarding completed with Ads
puntope Nov 30, 2023
7da36c0
Add audiences and budget inside existing gla_onboarding_complete_with…
puntope Dec 11, 2023
721c0b2
Prevent undefined country codes
puntope Dec 12, 2023
abf46d0
Change the onboarding to require a connected Google Ads account and m…
eason9487 Dec 13, 2023
c5f5436
Hide the content about the ad budget in the Boost card before a Googl…
eason9487 Dec 13, 2023
4e80346
Update tracking README.
eason9487 Dec 13, 2023
0453a6d
Update budget recommendation text
martynmjones Dec 5, 2023
138b256
Fix the budget recommendation E2E tests for PR #2153 after cherry-pic…
eason9487 Dec 14, 2023
cc8fe7b
Add more utils to mock requests for E2E tests.
eason9487 Dec 14, 2023
2d976e3
Adjust E2E tests to reflect the change of requiring Google Ads connec…
eason9487 Dec 14, 2023
ee00514
Fix the problem that E2E util `checkFAQExpandable` doesn't wait for t…
eason9487 Dec 14, 2023
ebc1830
Change tested PHP versions
mikkamp Dec 15, 2023
5722721
Generate coverage report when testing on PHP 8.2
mikkamp Dec 15, 2023
789400d
Fix price in purchase event
jorgemd24 Dec 15, 2023
1be66fb
Start `release/2.5.14`.
github-actions[bot] Dec 18, 2023
a4f9e73
Update Readme.txt
puntope Dec 18, 2023
fd6fc0d
Product version bump update
puntope Dec 18, 2023
2d50495
Changelog update
puntope Dec 18, 2023
95bad26
Update hooks documentation from branch.
github-actions[bot] Dec 18, 2023
adf7b88
Update link for developer.woo.com
mikkamp Dec 19, 2023
0577969
WIP
jorgemd24 Oct 25, 2023
39eb4e7
Merge branch 'feature/google-api-project' into add/api-pull-update-hooks
puntope Dec 27, 2023
ac29447
Apply review comments
puntope Dec 29, 2023
96fddfb
Merge pull request #2190 from woocommerce/add/api-pull-update-hooks
puntope Dec 29, 2023
ce8b86f
Scheduled batched notifications using meta handler
puntope Jan 18, 2024
d8cebdb
Tweak logic for schedule notifications
puntope Jan 23, 2024
832d0dc
Tests for Notification Service
puntope Jan 23, 2024
94c4fb6
Tests for ProductHelper
puntope Jan 24, 2024
0386c74
Update docs
puntope Jan 24, 2024
51b729f
Update tests
puntope Jan 24, 2024
619123f
Add tests for Notification
puntope Jan 24, 2024
d85d7ed
PHPCS
puntope Jan 24, 2024
a60ac81
Fix package path
puntope Jan 24, 2024
c47b7fa
Fix tests dependencies
puntope Jan 24, 2024
b716805
Fix tests dependencies
puntope Jan 24, 2024
d4c2d37
Remove trailing comma in constructor
puntope Jan 25, 2024
545cd22
Refactor route param name
puntope Jan 25, 2024
8ee54d1
Remove identation
puntope Jan 25, 2024
fd11304
Remove identation from functions
puntope Jan 25, 2024
3d9b4bc
Remove unused dependency
puntope Jan 25, 2024
ba7ed8f
Add params in function signature
puntope Jan 25, 2024
b3b0735
Avoid item id to be null
puntope Jan 25, 2024
8940067
Refactor dependencies
puntope Jan 25, 2024
a1eaad6
Refactor tests
puntope Jan 25, 2024
a1d5f22
PHPCS
puntope Jan 25, 2024
d3a641f
Change doc
puntope Jan 26, 2024
b9af9f1
Remove filter notification products
puntope Jan 26, 2024
82795a7
Remove unused dependency
puntope Jan 26, 2024
99f5b9e
Add useful hooks
puntope Jan 26, 2024
08efcce
Add missing return types
puntope Jan 29, 2024
d93c7b7
Remove extra space
puntope Jan 29, 2024
cbb00a2
Add missing docs
puntope Jan 29, 2024
677e4ec
Clarify docs
puntope Jan 29, 2024
6315209
Verify if product is synced in MC
puntope Jan 29, 2024
de3e24c
Update docs
puntope Jan 29, 2024
65dff81
Add Tests for ProductNotificationJob
puntope Jan 29, 2024
ac3f6cc
Remove PENDING_DELETE as a valid status for has_notified_cretion
puntope Jan 29, 2024
75e4c96
Remove PENDING_DELETE as a valid status for has_notified_cretion
puntope Jan 29, 2024
3056459
Remove unused dependency
puntope Jan 29, 2024
2bb00ca
Add return type for void
puntope Jan 29, 2024
3b1ef31
WIP: Add product view report
jorgemd24 Jan 30, 2024
bd3e0b6
Merge pull request #2202 from woocommerce/add/hooks-api-pull-metas
puntope Jan 30, 2024
252e9ed
Fix PHPCS in GoogleListingsAndAdsPlugin
puntope Jan 30, 2024
75a61ef
Solve PHPCS
puntope Jan 30, 2024
c4fde99
Remove old wrong code
puntope Jan 30, 2024
7fd1766
Remove unsupported return type
puntope Jan 30, 2024
b4fa9c5
PHPCS for tests
puntope Jan 30, 2024
b2839a1
WIP - Get stats with Merchant report
jorgemd24 Jan 30, 2024
bbf3d3c
Refactor to get offer id for new and old products.
jorgemd24 Jan 31, 2024
a2fa2f5
Handle page size
jorgemd24 Jan 31, 2024
e79488c
Merge pull request #2228 from woocommerce/fix/phpcs
puntope Jan 31, 2024
3fdccab
Fix issue with empty results
jorgemd24 Jan 31, 2024
7b5b178
Merge branch 'develop' into add/product-view-report-query
jorgemd24 Jan 31, 2024
50e108c
Fix typo
jorgemd24 Jan 31, 2024
44c7c4d
Merge branch 'develop' into feature/google-api-project
jorgemd24 Jan 31, 2024
fb619db
Merge branch 'feature/google-api-project' into add/product-view-repor…
jorgemd24 Jan 31, 2024
30aa787
Fix PHPDocs
jorgemd24 Jan 31, 2024
2185426
Remove extra comment
jorgemd24 Jan 31, 2024
9f78ac3
Change callback with inline calling
jorgemd24 Feb 4, 2024
d4df943
Change spread operator with array_merge
jorgemd24 Feb 4, 2024
41decb2
Fix typo expiration date
jorgemd24 Feb 4, 2024
82aadc1
Fix typo expiration date
jorgemd24 Feb 4, 2024
9592a80
Refactor get_product_view_query
jorgemd24 Feb 5, 2024
6c1b818
Add UpdateMerchantStatuses Job
jorgemd24 Feb 5, 2024
2657541
Remove unused plugin helper
jorgemd24 Feb 5, 2024
16b27b3
Remove get_offer_id function as we will fetch all products
jorgemd24 Feb 5, 2024
fdaaf30
Rename function convert_aggregated_status_to_mc_status
jorgemd24 Feb 5, 2024
2cfc1f2
Change query not synced products
jorgemd24 Feb 5, 2024
d8da89b
Skip product from status count if it is not sync ready
jorgemd24 Feb 5, 2024
8c6807c
Fix warning undefined index
jorgemd24 Feb 5, 2024
7a13ccc
Add ShoppingContentDateTrait
jorgemd24 Feb 5, 2024
39608de
Rename get_product_view_report method and increase limit size
jorgemd24 Feb 5, 2024
71ba5c5
Refactor calculate product statuses
jorgemd24 Feb 5, 2024
3138785
Rename Update merchant product status job
jorgemd24 Feb 5, 2024
6426ea6
Adjust UpdateMerchantProductStatuses name
jorgemd24 Feb 5, 2024
7d1ef5a
Schedule the job if mc_status is not set
jorgemd24 Feb 5, 2024
ea936e6
Adjust product statiscits controller
jorgemd24 Feb 5, 2024
a68d980
Tweak tests test_find_mc_not_synced_product_ids
jorgemd24 Feb 6, 2024
09ec214
Remove unused ViewReportQuery filter
jorgemd24 Feb 6, 2024
0e92124
Schdule job if force refresh
jorgemd24 Feb 6, 2024
9451680
Remove schedule job from the controller
jorgemd24 Feb 6, 2024
497586b
Remove extra space
jorgemd24 Feb 6, 2024
c0138fa
Remove unused dependency
jorgemd24 Feb 7, 2024
122d684
Remove extra string when logging message
jorgemd24 Feb 7, 2024
930469e
Fix typo DateTime
jorgemd24 Feb 7, 2024
0e90b7d
Move responsability of Merchant Report
jorgemd24 Feb 7, 2024
8b85a6a
Remove unused dependency
jorgemd24 Feb 7, 2024
1cf0178
Add filter product report batch size
jorgemd24 Feb 7, 2024
264cd27
Check if the job is scheduled
jorgemd24 Feb 7, 2024
679b143
Move ShoppingContentDateTrait
jorgemd24 Feb 7, 2024
2123e0b
Update PHPDocs and remove unnecessary $rows variable
jorgemd24 Feb 7, 2024
4c304f3
Show error message when unable to retrieve Product View Report
jorgemd24 Feb 7, 2024
56d20b5
Rename methods
jorgemd24 Feb 7, 2024
319a7a1
Remove ProductMetaHandler::KEY_VISIBILITY from not_synced_product_ids
jorgemd24 Feb 8, 2024
af810b1
Add comment so we can remove ProductMetaHandler::KEY_SYNC_STATUS
jorgemd24 Feb 8, 2024
7b0f3b2
Revert "Merge branch 'feature/google-api-project' into add/product-vi…
jorgemd24 Feb 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Remove unused dependency
puntope committed Jan 26, 2024
commit 82795a79f06b67d7192a97c55949ecfcc1893172
1 change: 0 additions & 1 deletion tests/Unit/Product/ProductRepositoryTest.php
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Tests\Framework\ContainerAwareUnitTest;
use Automattic\WooCommerce\GoogleListingsAndAds\Tests\Tools\HelperTrait\ProductTrait;
use Automattic\WooCommerce\GoogleListingsAndAds\Value\ChannelVisibility;
use Automattic\WooCommerce\GoogleListingsAndAds\Value\NotificationStatus;
use Automattic\WooCommerce\GoogleListingsAndAds\Value\SyncStatus;
use WC_Helper_Product;
use WC_Product;

Unchanged files with check annotations Beta

/**
* The client ID.
* @var string

Check failure on line 37 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

There must be exactly one blank line before the tags in a doc comment
*/
private $client_id;
}
);
add_action( 'login_form_jetpack_json_api_authorization', array( $this, 'login_form_json_api_authorization' ) );

Check failure on line 119 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Short array syntax must be used to define arrays
add_filter('jetpack_xmlrpc_test_connection_response', function (){

Check failure on line 121 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Opening parenthesis of a multi-line function call must be the last content on the line

Check failure on line 121 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Only one argument is allowed per line in a multi-line function call

Check failure on line 121 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Expected 1 space before opening brace; found 0
return '1.40';
});

Check failure on line 123 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Closing parenthesis of a multi-line function call must be on a line by itself
}

Check failure on line 125 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Function closing brace must go on the next line following the body; found 1 blank lines before brace
/**
* Register our services if dependency validation passes.
* Handles the login action for Authorizing the JSON API
*/
public function login_form_json_api_authorization() {
add_action( 'wp_login', array( $this, 'store_json_api_authorization_token' ), 10, 2 );

Check failure on line 158 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Short array syntax must be used to define arrays
add_action( 'login_form', array( $this, 'preserve_action_in_login_form_for_json_api_authorization' ) );

Check failure on line 159 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Short array syntax must be used to define arrays
add_filter( 'site_url', array( $this, 'post_login_form_to_signed_url' ), 10, 3 );

Check failure on line 160 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Short array syntax must be used to define arrays
}
/**
* @param WP_User $user User logged in.
*/
public function store_json_api_authorization_token( $user_login, $user ) {
$data = json_decode( base64_decode( stripslashes( $_REQUEST['data'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode

Check warning on line 170 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Equals sign not aligned with surrounding assignments; expected 12 spaces but found 9 spaces

Check warning on line 170 in src/Infrastructure/GoogleListingsAndAdsPlugin.php

GitHub Actions / PHP coding standards

Processing form data without nonce verification.
$this->client_id = $data->client_id;
add_filter( 'login_redirect', array( $this, 'add_token_to_login_redirect_json_api_authorization' ), 10, 3 );
add_filter( 'allowed_redirect_hosts', array( $this, 'allow_wpcom_public_api_domain' ) );
* @param array $args
* @return array|\WP_Error
*/
protected function do_request( array $args ) {

Check warning on line 105 in src/Google/NotificationsService.php

Codecov / codecov/patch

src/Google/NotificationsService.php#L105

Added line #L105 was not covered by tests
return Client::remote_request( $args, wp_json_encode( $args['body'] ) );
}
*
* @return bool
*/
public function is_enabled(): bool {
return apply_filters( 'woocommerce_gla_notifications_enabled', true );

Check warning on line 124 in src/Google/NotificationsService.php

Codecov / codecov/patch

src/Google/NotificationsService.php#L123-L124

Added lines #L123 - L124 were not covered by tests
}
}
$this->share_coupon_syncer_job( DeleteCoupon::class );
// share product notifications job
$this->share_action_scheduler_job(
ProductNotificationJob::class,
NotificationsService::class,
ProductHelper::class
);

Check warning on line 115 in src/Internal/DependencyManagement/JobServiceProvider.php

Codecov / codecov/patch

src/Internal/DependencyManagement/JobServiceProvider.php#L111-L115

Added lines #L111 - L115 were not covered by tests
$this->share_with_tags(
JobRepository::class,
use Automattic\WooCommerce\GoogleListingsAndAds\Value\NotificationStatus;
defined( 'ABSPATH' ) || exit;

Check warning on line 15 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L15

Added line #L15 was not covered by tests
/**
* Class ProductNotificationJob
* @param NotificationsService $notifications_service
* @param ProductHelper $product_helper
*/
public function __construct(

Check warning on line 44 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L44

Added line #L44 was not covered by tests
ActionSchedulerInterface $action_scheduler,
ActionSchedulerJobMonitor $monitor,
NotificationsService $notifications_service,
ProductHelper $product_helper
) {
$this->notifications_service = $notifications_service;
$this->product_helper = $product_helper;
parent::__construct( $action_scheduler, $monitor );

Check warning on line 52 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L50-L52

Added lines #L50 - L52 were not covered by tests
}
/**
*
* @return string
*/
public function get_name(): string {
return 'notifications/products';

Check warning on line 61 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L60-L61

Added lines #L60 - L61 were not covered by tests
}
*
* @param array $args Arguments with the item id and the topic
*/
protected function process_items( array $args ) {
if ( ! isset( $args[0] ) || ! isset( $args[1] ) ) {
return;

Check warning on line 72 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L70-L72

Added lines #L70 - L72 were not covered by tests
}
$item = $args[0];
$topic = $args[1];

Check warning on line 76 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L75-L76

Added lines #L75 - L76 were not covered by tests
if ( $this->notifications_service->notify( $item, $topic ) ) {
$this->set_status( $item, $this->get_after_notification_status( $topic ) );

Check warning on line 79 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L78-L79

Added lines #L78 - L79 were not covered by tests
}
}
*
* @param array $args
*/
public function schedule( array $args = [] ) {
if ( $this->can_schedule( [ $args ] ) ) {
$this->action_scheduler->schedule_immediate(
$this->get_process_item_hook(),
[ $args ]
);

Check warning on line 94 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L89-L94

Added lines #L89 - L94 were not covered by tests
}
}
* @param int $product_id
* @param string $status
*/
protected function set_status( int $product_id, string $status ): void {
$product = $this->product_helper->get_wc_product( $product_id );
$this->product_helper->set_notification_status( $product, $status );

Check warning on line 106 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L104-L106

Added lines #L104 - L106 were not covered by tests
}
/**
* @param string $topic
* @return string
*/
protected function get_after_notification_status( string $topic ): string {
if ( str_contains( $topic, '.create' ) ) {
return NotificationStatus::NOTIFICATION_CREATED;
} elseif ( str_contains( $topic, '.delete' ) ) {
return NotificationStatus::NOTIFICATION_DELETED;

Check warning on line 119 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L115-L119

Added lines #L115 - L119 were not covered by tests
} else {
return NotificationStatus::NOTIFICATION_UPDATED;

Check warning on line 121 in src/Jobs/Notifications/ProductNotificationJob.php

Codecov / codecov/patch

src/Jobs/Notifications/ProductNotificationJob.php#L121

Added line #L121 was not covered by tests
}
}
}
protected function handle_delete_product( int $product_id ) {
$product = wc_get_product( $product_id );
if ( $product instanceof WC_Product && $this->notifications_service->is_enabled() && $this->product_helper->should_trigger_delete_notification( $product ) ) {
$this->product_helper->set_notification_status( $product, NotificationStatus::NOTIFICATION_PENDING_DELETE );
$this->product_notification_job->schedule( [ $product->get_id(), NotificationsService::TOPIC_PRODUCT_DELETED ] );
return;

Check warning on line 266 in src/Product/SyncerHooks.php

Codecov / codecov/patch

src/Product/SyncerHooks.php#L264-L266

Added lines #L264 - L266 were not covered by tests
}
if ( isset( $this->delete_requests_map[ $product_id ] ) ) {
*/
protected function handle_pre_delete_product( int $product_id ) {
if ( $this->notifications_service->is_enabled() ) {
return;

Check warning on line 286 in src/Product/SyncerHooks.php

Codecov / codecov/patch

src/Product/SyncerHooks.php#L286

Added line #L286 was not covered by tests
}
$product = $this->wc->maybe_get_product( $product_id );
*
* @throws InvalidValue When an invalid status type is provided.
*/
public function __construct( string $status ) {
if ( ! in_array( $status, self::ALLOWED_VALUES, true ) ) {
throw InvalidValue::not_in_allowed_list( $status, self::ALLOWED_VALUES );

Check warning on line 47 in src/Value/NotificationStatus.php

Codecov / codecov/patch

src/Value/NotificationStatus.php#L45-L47

Added lines #L45 - L47 were not covered by tests
}
$this->status = $status;

Check warning on line 50 in src/Value/NotificationStatus.php

Codecov / codecov/patch

src/Value/NotificationStatus.php#L50

Added line #L50 was not covered by tests
}
/**
*
* @return string
*/
public function get(): string {
return $this->status;

Check warning on line 59 in src/Value/NotificationStatus.php

Codecov / codecov/patch

src/Value/NotificationStatus.php#L58-L59

Added lines #L58 - L59 were not covered by tests
}
/**
* @return string
*/
public function __toString(): string {
return $this->get();

Check warning on line 66 in src/Value/NotificationStatus.php

Codecov / codecov/patch

src/Value/NotificationStatus.php#L65-L66

Added lines #L65 - L66 were not covered by tests
}
}