-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[router] remove duplicate context mocking function #26651
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
expo-bot
added
bot: passed checks
ExpoBot has nothing to complain about
and removed
bot: suggestions
ExpoBot has some suggestions
labels
Jan 24, 2024
EvanBacon
reviewed
Jan 25, 2024
@@ -45,26 +45,30 @@ describe('baseUrl', () => { | |||
process.env.EXPO_BASE_URL = '/expo/prefix'; | |||
|
|||
const path = '/expo/prefix/bar'; | |||
const config = configFromFs(['_layout.tsx', 'bar.tsx', 'index.tsx']); | |||
const config = getMockConfig({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be nice if this function also accepted an array of strings for brevity.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done & updated the documentation
EvanBacon
approved these changes
Jan 25, 2024
marklawlor
force-pushed
the
marklawlor/router/remove-configFromFs
branch
from
January 29, 2024 00:54
bb5bc29
to
8c1d540
Compare
expo-bot
added
bot: suggestions
ExpoBot has some suggestions
and removed
bot: passed checks
ExpoBot has nothing to complain about
labels
Jan 29, 2024
github-actions
bot
added
bot: fingerprint compatible
and removed
bot: fingerprint changed
labels
Jan 29, 2024
expo-bot
added
bot: passed checks
ExpoBot has nothing to complain about
and removed
bot: suggestions
ExpoBot has some suggestions
labels
Jan 29, 2024
amandeepmittal
approved these changes
Jan 29, 2024
Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
marklawlor
force-pushed
the
marklawlor/router/remove-configFromFs
branch
from
January 29, 2024 12:23
9d825d0
to
8e526ff
Compare
github-actions
bot
added
bot: fingerprint changed
and removed
bot: fingerprint compatible
labels
Jan 29, 2024
marklawlor
added a commit
that referenced
this pull request
Feb 28, 2024
# Why There are two functions used to mocking a context in our tests, with `createMockContextModule` only being used by the `configFromFs`. Unfortunately the tests using `configFromFs` are subtlety incorrect. `context.keys()` are relative paths (with a `./` prefix). Without this, `getRoutes()` creates a two tier state, with an empty name route for the top level `{ name: '' }`. `createMockContextModule` does not enforce this, so while technically the `getPathsFromState` tests are correct, what they are testing and what our expectation is are different. You can verify that these tests were incorrect by making this change on `main` ```diff - const config = configFromFs(['_layout.tsx', 'bar.tsx', 'index.tsx']); + const config = configFromFs(['./_layout.tsx', './bar.tsx', './index.tsx']); expect(getStateFromPath<object>(path, config)).toEqual({ - routes: [{ name: '', state: { routes: [{ name: 'bar', path: '/bar' }] } }], + routes: [{ name: 'bar', path: '/bar' }], }); ``` I've updated the `getPathsFromState` to use a new helper `getMockState` that utilises the `getMockContext` function. A future advantage of this refactor is the ability to test the configs being generated with `unstable_settings` ```tsx const config = getMockConfig({ page: { unstable_settings: {}, default: () => null } }) ``` # Test Plan <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [ ] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). --------- Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
bot: fingerprint changed
bot: passed checks
ExpoBot has nothing to complain about
published
Changes from the PR have been published to npm
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why
There are two functions used to mocking a context in our tests, with
createMockContextModule
only being used by theconfigFromFs
.Unfortunately the tests using
configFromFs
are subtlety incorrect.context.keys()
are relative paths (with a./
prefix). Without this,getRoutes()
creates a two tier state, with an empty name route for the top level{ name: '' }
.createMockContextModule
does not enforce this, so while technically thegetPathsFromState
tests are correct, what they are testing and what our expectation is are different.You can verify that these tests were incorrect by making this change on
main
I've updated the
getPathsFromState
to use a new helpergetMockState
that utilises thegetMockContext
function.A future advantage of this refactor is the ability to test the configs being generated with
unstable_settings
Test Plan
Checklist
npx expo prebuild
& EAS Build (eg: updated a module plugin).