Fix desktop template tests (#3327)

Summary:
When creating a brand new Flipper desktop plugin, the tests don't pass

### To Reproduce

```
npx flipper-pkg init
cd flipper-plugin-new
yarn jest
```

The test are not passing.
It would seem that we have 2 issues since this commit: e46fcba0b2 (diff-26467a831e67f87a2bd99be5b62a71a6e3e4e7f86135c11ccede9a02e58c44feR48)

#### 1. `electronRequire` is not defined

![image](https://user-images.githubusercontent.com/4534323/150385278-29527a4d-4783-4902-aeea-986b3c634a29.png)

Adding:
```ts
// ts-ignore
global.electronRequire = require;
```
fixes the issue of course like [here](e46fcba0b2 (diff-a283d77d8667b28aec5319fe5671a91489485a683898efedf9441b816c84a447R15)) but might not be very ideal
When fixing this, we hit a second issue:

#### 2. Hooks cannot be defined inside tests

![image](https://user-images.githubusercontent.com/4534323/150385722-c0604cfc-33ef-4d8e-a8fd-d60042a87699.png)

This is because we now require `testing-library/react` on the fly: e46fcba0b2 (diff-26467a831e67f87a2bd99be5b62a71a6e3e4e7f86135c11ccede9a02e58c44feR198)
which will run `afterEach` if defined: 071a6fdc1d/src/index.js (L12)

A non ideal fix is to require `require("testing-library/react");` before running the test

## Changelog

Fix: ensure desktop plugin template tests run

Pull Request resolved: https://github.com/facebook/flipper/pull/3327

Test Plan:
I've cloned the repo and run:

```
cd flipper/desktop/pkg
yarn
cd ../../..
./flipper/desktop/pkg/bin/run init
```
I run the tests on the newly package created and they're now good

![image](https://user-images.githubusercontent.com/4534323/150391527-d834ec5b-57d8-4948-b9f3-17ade4eda79b.png)

## Side note

The fixes are not great, if you guys have better ones to suggest, really addressing the root cause of the issue, I'll happily close the PR

Also it's so easy to test desktop plugins with the awesome work you've done �, it'd be sad if the community could not totally benefit from it.
Since I had this issue before (https://github.com/facebook/flipper/pull/3039), I'd be really happy to help (if given some directions 🙏) set up a test to ensure a plugin generated is always well set up.

Reviewed By: passy

Differential Revision: D33713611

Pulled By: aigoncharov

fbshipit-source-id: 43834b30f24c2549d80923d2194487b9f9e6a1ae
This commit is contained in:
almouro
2022-01-21 13:36:26 -08:00
committed by Facebook GitHub Bot
parent b5cd33f7e8
commit 3eb53f5987
3 changed files with 17 additions and 2 deletions

View File

@@ -57,6 +57,11 @@ test('It generates the correct files for client plugin', async () => {
['@babel/preset-env', {targets: {node: 'current'}}]
],
};
",
"/dev/null/jest-setup.ts": "// See https://github.com/facebook/flipper/pull/3327 for why we need this
// @ts-ignore
global.electronRequire = require;
require(\\"@testing-library/react\\");
",
"/dev/null/package.json": "{
\\"$schema\\": \\"https://fbflipper.com/schemas/plugin-package/v2.json\\",
@@ -104,7 +109,10 @@ test('It generates the correct files for client plugin', async () => {
\\"typescript\\": \\"latest\\"
},
\\"jest\\": {
\\"testEnvironment\\": \\"jsdom\\"
\\"testEnvironment\\": \\"jsdom\\",
\\"setupFiles\\": [
\\"<rootDir>/jest-setup.ts\\"
]
}
}
",

View File

@@ -0,0 +1,4 @@
// See https://github.com/facebook/flipper/pull/3327 for why we need this
// @ts-ignore
global.electronRequire = require;
require("@testing-library/react");

View File

@@ -44,6 +44,9 @@
"typescript": "latest"
},
"jest": {
"testEnvironment": "jsdom"
"testEnvironment": "jsdom",
"setupFiles": [
"<rootDir>/jest-setup.ts"
]
}
}