Skip to content

Web SDK Refactor: Login Operation Executor Tests#1279

Merged
fadi-george merged 3 commits into
web-refractorfrom
fg/logic-exec-tests
Apr 21, 2025
Merged

Web SDK Refactor: Login Operation Executor Tests#1279
fadi-george merged 3 commits into
web-refractorfrom
fg/logic-exec-tests

Conversation

@fadi-george

@fadi-george fadi-george commented Apr 21, 2025

Copy link
Copy Markdown
Contributor

Description

1 Line Summary

Continuation of the Web SDK Refactor project.

Details

  • add tests for Login Operation Executor
  • changed from Object.assign to variable assignment for subscriptions variable since delete subscription would need to remove properties and Object.assign will fail to do that
  • for create subscription operation, made it more like the Android SDK implementation with passing just enabled, notifications_types (status), type, token (address)
  • for update subscription operation, made it pass along notification_types & token
  • added BaseFullSubscriptionOperation which has more subscription properties used for CreateSubscriptionOperation and UpdateSubscriptionOperation

Systems Affected

  • WebSDK
  • Backend
  • Dashboard

Validation

Tests

Info

Checklist

  • All the automated tests pass or I explained why that is not possible
  • I have personally tested this on my machine or explained why that is not possible
  • I have included test coverage for these changes or explained why they are not needed

Programming Checklist
Interfaces:

  • Don't use default export
  • New interfaces are in model files

Functions:

  • Don't use default export
  • All function signatures have return types
  • Helpers should not access any data but rather be given the data to operate on.

Typescript:

  • No Typescript warnings
  • Avoid silencing null/undefined warnings with the exclamation point

Other:

  • Iteration: refrain from using elem of array syntax. Prefer forEach or use map
  • Avoid using global OneSignal accessor for context if possible. Instead, we can pass it to function/constructor so that we don't call OneSignal.context

Screenshots

Info

Checklist

  • I have included screenshots/recordings of the intended results or explained why they are not needed

Related Tickets



This change is Reviewable


Base automatically changed from fg/login-exec-3 to web-refractor April 21, 2025 18:48
* An Operation to transfer a subscription to a new owner on the OneSignal backend.
*/
export class TransferSubscriptionOperation extends BaseSubscriptionOperation {
constructor(appId: string, onesignalId: string, subscriptionId: string);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what adding this line accomplishes from a user's perspective. From how I'm reading it, you can either call the constructor with all parameters, no parameters, or some combination of any of them. Is that not the same as all parameters being optional?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its useful in the case you try to do something like this

new TransferSubscriptionOperation(APP_ID)

where now Typescript will complain that youre missing parameters.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it's more like: include all parameters or include none?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes

@fadi-george fadi-george requested a review from sherwinski April 21, 2025 19:39
@fadi-george fadi-george merged commit 7e75c29 into web-refractor Apr 21, 2025
@fadi-george fadi-george deleted the fg/logic-exec-tests branch April 21, 2025 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants