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

Migrate JSPackagerClientTest to Kotlin #37747

Conversation

brunohensel
Copy link
Contributor

Summary:

Migrate JSPackagerClientTest.java to Kotlin. See #37708

Changelog:

[INTERNAL] [CHANGED] - Migrate JSPackagerClientTest to Kotlin

Test Plan:

Tests pass: ./gradlew :packages:react-native:ReactAndroid:test
Formatted with KtFmt

@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jun 7, 2023
@analysis-bot
Copy link

analysis-bot commented Jun 7, 2023

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 8,744,422 +0
android hermes armeabi-v7a 8,056,628 +1
android hermes x86 9,235,550 +2
android hermes x86_64 9,086,381 +0
android jsc arm64-v8a 9,307,265 +1
android jsc armeabi-v7a 8,496,808 -2
android jsc x86 9,369,282 -1
android jsc x86_64 9,624,204 +1

Base commit: 08dc0a6
Branch: main

val client = JSPackagerClient("test_client", mSettings, createRH("methodValue", handler))

client.onMessage(
"{\"version\": 2, \"method\": \"methodValue\", \"params\": \"paramsValue\"}"
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you use Kotlin multiline string here (i.e. """...""", then you won't need to escape the quotes?..

@facebook-github-bot
Copy link
Contributor

@rshest has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

Copy link
Contributor

@cortinico cortinico left a comment

Choose a reason for hiding this comment

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

Thanks for sending this @brunohensel

I've left some comments that needs to be addressed before we can merge this. Thanks for doing this work.


@RunWith(RobolectricTestRunner::class)
class JSPackagerClientTest {
private fun createRH(action: String, handler: RequestHandler): Map<String, RequestHandler> {
Copy link
Contributor

Choose a reason for hiding this comment

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

Since we are at this, let's call this createRequestHandler?

Plus let's move the private methods at the bottom after all the tests

Copy link
Contributor Author

@brunohensel brunohensel Jun 7, 2023

Choose a reason for hiding this comment

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

Since I'm going to change some semantics here, I noticed that JSPackagerClient is always called passing in the same settings and clientId as test_client. Wdyt encoding this as default arguments to a function, passing in on the call site only the handler and connectionCallback? Like getClient(requestHandlers = handler, connectionCallback = connectionCallback)

Copy link
Contributor

Choose a reason for hiding this comment

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

Yup that's also a valid point for improvement 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I just pushed the changes, let me know if I have to revert something.

Comment on lines 16 to 18
val m: MutableMap<String, RequestHandler> = HashMap()
m[action] = handler
return m
Copy link
Contributor

Choose a reason for hiding this comment

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

This method should just become:

private fun createRequestHandler(action: String, handler: RequestHandler): Map<String, RequestHandler> = mapOf(action to handler)

we don't need explicit HashMap or so

brunohensel and others added 5 commits June 7, 2023 12:01
…react/packagerconnection/JSPackagerClientTest.kt

Co-authored-by: Nicola Corti <corti.nico@gmail.com>
…react/packagerconnection/JSPackagerClientTest.kt

Co-authored-by: Nicola Corti <corti.nico@gmail.com>
…react/packagerconnection/JSPackagerClientTest.kt

Co-authored-by: Nicola Corti <corti.nico@gmail.com>
…react/packagerconnection/JSPackagerClientTest.kt

Co-authored-by: Nicola Corti <corti.nico@gmail.com>
@facebook-github-bot
Copy link
Contributor

@rshest has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

Copy link
Contributor

@cortinico cortinico left a comment

Choose a reason for hiding this comment

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

LGTM 👍

@Pranav-yadav Pranav-yadav added the Tests This PR adds or edits a test case. label Jun 7, 2023
@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Jun 8, 2023
@facebook-github-bot
Copy link
Contributor

@rshest merged this pull request in ad6718a.

adamaveray added a commit to adamaveray/react-native that referenced this pull request Jun 8, 2023
* main: (1824 commits)
  Convert FallbackJSBundleLoaderTest to Kotlin (facebook#37750)
  Migrate JSPackagerClientTest to Kotlin (facebook#37747)
  (refactor): kotlin-ify `ShareModuleTest.java` (facebook#37746)
  Upgrade `@react-native/codegen-typescript-test`'s Jest dependency to Jest 29 (facebook#37745)
  Move flow-typed definitions to repo root (facebook#37636)
  Convert InterpolatorTypeTest to Kotlin (facebook#37724)
  Update documentation of ReactHost.reload method (facebook#37691)
  Reduce visibility of ReactHost.destroy() method (facebook#37693)
  Reduce visibility in React Context (facebook#37695)
  Remove InstanceHandleHelper as unused (facebook#37740)
  Convert CompositeReactPackageTest to Kotlin (facebook#37734)
  Add license header to SetSpanOperation.java
  Convert FakeEventDispatcher to kotlin (facebook#37739)
  Convert FakeRCTEventEmitter to Kotlin (facebook#37733)
  Convert InteropModuleRegistryTest to Kotlin (facebook#37735)
  Bump `autorebase.yml` to `v1.8` (facebook#37584)
  Convert StackTraceHelperTest to Kotlin (facebook#37741)
  Convert BlobModuleTest class to Kotlin (facebook#37719)
  Update prettier to v2.8.8 (facebook#37738)
  Introduce BoltsFutureTask class to avoid leaking bolts.Task into ReactHost API (facebook#37744)
  ...

# Conflicts:
#	BUCK
#	packages/react-native/React/Views/UIResponder+FirstResponder.h
#	packages/react-native/React/Views/UIResponder+FirstResponder.m
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged This PR has been merged. Tests This PR adds or edits a test case.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants