From a486b66b002b7dc2eb5d1a7d10c92064e8371282 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 5 Apr 2023 16:35:03 -0700 Subject: [PATCH] test: add test case for #114 (#116) --- .bazelignore | 1 + e2e/update_snapshots_test.sh | 1 + example/snapshots/BUILD.bazel | 2 +- jest/tests/BUILD.bazel | 3 ++ jest/tests/package.json | 15 ++++++ jest/tests/package_json_module/BUILD.bazel | 50 +++++++++++++++++++ jest/tests/package_json_module/README.md | 0 .../__snapshots__/greetings.test.js.snap | 9 ++++ .../__snapshots__/link.test.js.snap | 9 ++++ .../package_json_module/babel.config.cjs | 6 +++ jest/tests/package_json_module/greetings.js | 3 ++ .../package_json_module/greetings.test.js | 7 +++ jest/tests/package_json_module/jest.config.js | 4 ++ jest/tests/package_json_module/link.js | 3 ++ jest/tests/package_json_module/link.test.js | 9 ++++ jest/tests/package_json_module/package.json | 3 ++ jest/tests/package_json_module/simple.test.js | 3 ++ pnpm-lock.yaml | 24 +++++++++ pnpm-workspace.yaml | 1 + 19 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 jest/tests/package.json create mode 100644 jest/tests/package_json_module/BUILD.bazel create mode 100644 jest/tests/package_json_module/README.md create mode 100644 jest/tests/package_json_module/__snapshots__/greetings.test.js.snap create mode 100644 jest/tests/package_json_module/__snapshots__/link.test.js.snap create mode 100644 jest/tests/package_json_module/babel.config.cjs create mode 100644 jest/tests/package_json_module/greetings.js create mode 100644 jest/tests/package_json_module/greetings.test.js create mode 100644 jest/tests/package_json_module/jest.config.js create mode 100644 jest/tests/package_json_module/link.js create mode 100644 jest/tests/package_json_module/link.test.js create mode 100644 jest/tests/package_json_module/package.json create mode 100644 jest/tests/package_json_module/simple.test.js diff --git a/.bazelignore b/.bazelignore index 0f8fb29..b0477c1 100644 --- a/.bazelignore +++ b/.bazelignore @@ -1,3 +1,4 @@ e2e/ node_modules example/node_modules +jest/tests/node_modules diff --git a/e2e/update_snapshots_test.sh b/e2e/update_snapshots_test.sh index 5fce807..62a9cd3 100755 --- a/e2e/update_snapshots_test.sh +++ b/e2e/update_snapshots_test.sh @@ -35,5 +35,6 @@ update_snapshot_e2e_test example/snapshots/__snapshots__/link.test.js.snap //exa update_snapshot_e2e_test example/snapshots_files/__snapshots__/link.test.js.snap //example/snapshots_files:test update_snapshot_e2e_test example/custom_snapshot_resolver/__my_snapshots__/link.test.js.snap //example/custom_snapshot_resolver:test update_snapshot_e2e_test example/custom_snapshot_resolver_files/link.test.js.snap //example/custom_snapshot_resolver_files:test +update_snapshot_e2e_test jest/tests/package_json_module/__snapshots__/link.test.js.snap //jest/tests/package_json_module:test echo "All tests passed" diff --git a/example/snapshots/BUILD.bazel b/example/snapshots/BUILD.bazel index 896be50..721ca2f 100644 --- a/example/snapshots/BUILD.bazel +++ b/example/snapshots/BUILD.bazel @@ -26,7 +26,7 @@ jest_test( snapshots = True, ) -# The tests and tested are normally in their own targets. +# Tests are normally in their own targets. js_library( name = "tests", testonly = True, diff --git a/jest/tests/BUILD.bazel b/jest/tests/BUILD.bazel index a681647..32a1a0b 100644 --- a/jest/tests/BUILD.bazel +++ b/jest/tests/BUILD.bazel @@ -1,6 +1,9 @@ load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@npm//:defs.bzl", "npm_link_all_packages") load("//jest:defs.bzl", "jest_test") +npm_link_all_packages(name = "node_modules") + exports_files([ "case3.jest.config.js", "case3.test.js", diff --git a/jest/tests/package.json b/jest/tests/package.json new file mode 100644 index 0000000..88a5687 --- /dev/null +++ b/jest/tests/package.json @@ -0,0 +1,15 @@ +{ + "private": true, + "dependencies": { + "react": "18.2.0" + }, + "devDependencies": { + "@babel/core": "7.20.2", + "@babel/preset-env": "7.20.2", + "@babel/preset-react": "7.18.6", + "@jest/test-sequencer": "29.3.1", + "babel-jest": "29.3.1", + "jest-junit": "15.0.0", + "react-test-renderer": "18.2.0" + } +} diff --git a/jest/tests/package_json_module/BUILD.bazel b/jest/tests/package_json_module/BUILD.bazel new file mode 100644 index 0000000..9a0889f --- /dev/null +++ b/jest/tests/package_json_module/BUILD.bazel @@ -0,0 +1,50 @@ +load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("//jest:defs.bzl", "jest_test") + +jest_test( + name = "test", + config = "jest.config.js", + data = [ + "babel.config.cjs", + "package.json", + ":lib", + ":tests", + "//jest/tests:node_modules/@babel/core", + "//jest/tests:node_modules/@babel/preset-env", + "//jest/tests:node_modules/@babel/preset-react", + "//jest/tests:node_modules/babel-jest", + ], + snapshots = True, +) + +# Tests are normally in their own targets. +js_library( + name = "tests", + testonly = True, + srcs = [ + "greetings.test.js", + "link.test.js", + "simple.test.js", + ], + deps = [ + "//jest/tests:node_modules/react-test-renderer", + ], +) + +js_library( + name = "lib", + srcs = [ + "greetings.js", + "link.js", + ], + deps = [ + "//jest/tests:node_modules/react", + ], +) + +# TEST: Ensure the {name}_update_snapshots target builds successfully +build_test( + name = "update_snapshots_build", + targets = [":test_update_snapshots"], +) diff --git a/jest/tests/package_json_module/README.md b/jest/tests/package_json_module/README.md new file mode 100644 index 0000000..e69de29 diff --git a/jest/tests/package_json_module/__snapshots__/greetings.test.js.snap b/jest/tests/package_json_module/__snapshots__/greetings.test.js.snap new file mode 100644 index 0000000..b733ed3 --- /dev/null +++ b/jest/tests/package_json_module/__snapshots__/greetings.test.js.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders correctly 1`] = ` +

+ Hello + World + ! +

+`; diff --git a/jest/tests/package_json_module/__snapshots__/link.test.js.snap b/jest/tests/package_json_module/__snapshots__/link.test.js.snap new file mode 100644 index 0000000..3928238 --- /dev/null +++ b/jest/tests/package_json_module/__snapshots__/link.test.js.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders correctly 1`] = ` + + Aspect + +`; diff --git a/jest/tests/package_json_module/babel.config.cjs b/jest/tests/package_json_module/babel.config.cjs new file mode 100644 index 0000000..48a4d79 --- /dev/null +++ b/jest/tests/package_json_module/babel.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + "@babel/preset-env", + ["@babel/preset-react", { runtime: "automatic" }], + ], +}; diff --git a/jest/tests/package_json_module/greetings.js b/jest/tests/package_json_module/greetings.js new file mode 100644 index 0000000..ab2b94e --- /dev/null +++ b/jest/tests/package_json_module/greetings.js @@ -0,0 +1,3 @@ +export default function Greetings(props) { + return

Hello {props.name}!

; +} diff --git a/jest/tests/package_json_module/greetings.test.js b/jest/tests/package_json_module/greetings.test.js new file mode 100644 index 0000000..e87bcb3 --- /dev/null +++ b/jest/tests/package_json_module/greetings.test.js @@ -0,0 +1,7 @@ +import renderer from "react-test-renderer"; +import Greetings from "./greetings"; + +it("renders correctly", () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/jest/tests/package_json_module/jest.config.js b/jest/tests/package_json_module/jest.config.js new file mode 100644 index 0000000..dee1a25 --- /dev/null +++ b/jest/tests/package_json_module/jest.config.js @@ -0,0 +1,4 @@ +export default { + testEnvironment: "node", + testMatch: ["**/*.test.js"], +}; diff --git a/jest/tests/package_json_module/link.js b/jest/tests/package_json_module/link.js new file mode 100644 index 0000000..8a5ca9b --- /dev/null +++ b/jest/tests/package_json_module/link.js @@ -0,0 +1,3 @@ +export default function Link({ page, children }) { + return {children}; +} diff --git a/jest/tests/package_json_module/link.test.js b/jest/tests/package_json_module/link.test.js new file mode 100644 index 0000000..69803e4 --- /dev/null +++ b/jest/tests/package_json_module/link.test.js @@ -0,0 +1,9 @@ +import renderer from "react-test-renderer"; +import Link from "./link"; + +it("renders correctly", () => { + const tree = renderer + .create(Aspect) + .toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/jest/tests/package_json_module/package.json b/jest/tests/package_json_module/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/jest/tests/package_json_module/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/jest/tests/package_json_module/simple.test.js b/jest/tests/package_json_module/simple.test.js new file mode 100644 index 0000000..4a39f12 --- /dev/null +++ b/jest/tests/package_json_module/simple.test.js @@ -0,0 +1,3 @@ +test("2+2==4", () => { + expect(2 + 2).toEqual(4); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 00d965d..6f6670c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,6 +2,9 @@ lockfileVersion: 5.4 importers: + .: + specifiers: {} + example: specifiers: '@babel/core': 7.20.2 @@ -23,6 +26,27 @@ importers: jest-junit: 15.0.0 react-test-renderer: 18.2.0_react@18.2.0 + jest/tests: + specifiers: + '@babel/core': 7.20.2 + '@babel/preset-env': 7.20.2 + '@babel/preset-react': 7.18.6 + '@jest/test-sequencer': 29.3.1 + babel-jest: 29.3.1 + jest-junit: 15.0.0 + react: 18.2.0 + react-test-renderer: 18.2.0 + dependencies: + react: 18.2.0 + devDependencies: + '@babel/core': 7.20.2 + '@babel/preset-env': 7.20.2_@babel+core@7.20.2 + '@babel/preset-react': 7.18.6_@babel+core@7.20.2 + '@jest/test-sequencer': 29.3.1 + babel-jest: 29.3.1_@babel+core@7.20.2 + jest-junit: 15.0.0 + react-test-renderer: 18.2.0_react@18.2.0 + packages: /@ampproject/remapping/2.2.0: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a6943d9..803e2f4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,3 @@ packages: - "example" + - "jest/tests"