Skip to content

Commit

Permalink
refactor: use eslint-plugin-jest (#464)
Browse files Browse the repository at this point in the history
  • Loading branch information
G-Rath authored Apr 8, 2024
1 parent ce75a9c commit 924061f
Show file tree
Hide file tree
Showing 16 changed files with 228 additions and 75 deletions.
19 changes: 16 additions & 3 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,23 @@ module.exports = {
overrides: [
{
files: ["test/**"],
// todo: these should be sourced from eslint-plugin-jest
env: { jest: true },
extends: ["plugin:jest/recommended", "plugin:jest/style"],
rules: {
"global-require": "off"
"global-require": "off",
"jest/prefer-called-with": "error",
"jest/no-conditional-in-test": "error",
"jest/no-test-return-statement": "error",
"jest/prefer-expect-resolves": "error",
"jest/require-to-throw-message": "error",
"jest/require-top-level-describe": "error",
"jest/prefer-hooks-on-top": "error",
"jest/prefer-lowercase-title": [
"error",
{ ignoreTopLevelDescribe: true }
],
"jest/prefer-spy-on": "error",
"jest/prefer-strict-equal": "error",
"jest/prefer-todo": "error"
}
}
]
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"eslint-config-airbnb": "^19.0.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jest": "^27.9.0",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.26.0",
Expand Down
14 changes: 9 additions & 5 deletions test/package/config.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@ describe("Config", () => {
test("public path", () => {
process.env.RAILS_ENV = "development"
const config = require("../../package/config")
expect(config.publicPath).toEqual("/packs/")
expect(config.publicPath).toBe("/packs/")
})

test("public path with asset host", () => {
process.env.RAILS_ENV = "development"
process.env.SHAKAPACKER_ASSET_HOST = "http://foo.com/"
const config = require("../../package/config")
expect(config.publicPath).toEqual("http://foo.com/packs/")
expect(config.publicPath).toBe("http://foo.com/packs/")
})

test("should return additional paths as listed in app config, with resolved paths", () => {
const config = require("../../package/config")

expect(config.additional_paths).toEqual([
expect(config.additional_paths).toStrictEqual([
"app/assets",
"/etc/yarn",
"some.config.js",
Expand All @@ -35,12 +35,16 @@ describe("Config", () => {
test("should default manifestPath to the public dir", () => {
const config = require("../../package/config")

expect(config.manifestPath).toEqual(resolve("public/packs/manifest.json"))
expect(config.manifestPath).toStrictEqual(
resolve("public/packs/manifest.json")
)
})

test("should allow overriding manifestPath", () => {
process.env.SHAKAPACKER_CONFIG = "config/shakapacker_manifest_path.yml"
const config = require("../../package/config")
expect(config.manifestPath).toEqual(resolve("app/javascript/manifest.json"))
expect(config.manifestPath).toStrictEqual(
resolve("app/javascript/manifest.json")
)
})
})
10 changes: 5 additions & 5 deletions test/package/dev_server.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ describe("DevServer", () => {

const devServer = require("../../package/dev_server")
expect(devServer).toBeDefined()
expect(devServer.host).toEqual("0.0.0.0")
expect(devServer.port).toEqual("5000")
expect(devServer.host).toBe("0.0.0.0")
expect(devServer.port).toBe("5000")
expect(devServer.disable_host_check).toBe(false)
})

Expand All @@ -32,13 +32,13 @@ describe("DevServer", () => {

const devServer = require("../../package/dev_server")
expect(devServer).toBeDefined()
expect(devServer.host).toEqual("0.0.0.0")
expect(devServer.port).toEqual("5000")
expect(devServer.host).toBe("0.0.0.0")
expect(devServer.port).toBe("5000")
})

test("with NODE_ENV and RAILS_ENV set to production", () => {
process.env.RAILS_ENV = "production"
process.env.NODE_ENV = "production"
expect(require("../../package/dev_server")).toEqual({})
expect(require("../../package/dev_server")).toStrictEqual({})
})
})
14 changes: 9 additions & 5 deletions test/package/development.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ describe("Development environment", () => {

const webpackConfig = generateWebpackConfig()

expect(webpackConfig.output.path).toEqual(resolve("public", "packs"))
expect(webpackConfig.output.publicPath).toEqual("/packs/")
expect(webpackConfig.output.path).toStrictEqual(
resolve("public", "packs")
)
expect(webpackConfig.output.publicPath).toBe("/packs/")
})

test("should use development config and environment if WEBPACK_SERVE", () => {
Expand All @@ -31,9 +33,11 @@ describe("Development environment", () => {

const webpackConfig = generateWebpackConfig()

expect(webpackConfig.output.path).toEqual(resolve("public", "packs"))
expect(webpackConfig.output.publicPath).toEqual("/packs/")
expect(webpackConfig.devServer).toEqual(undefined)
expect(webpackConfig.output.path).toStrictEqual(
resolve("public", "packs")
)
expect(webpackConfig.output.publicPath).toBe("/packs/")
expect(webpackConfig.devServer).toBeUndefined()
})
})
})
8 changes: 4 additions & 4 deletions test/package/env.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ describe("Env", () => {
test("with NODE_ENV and RAILS_ENV set to development", () => {
process.env.RAILS_ENV = "development"
process.env.NODE_ENV = "development"
expect(require("../../package/env")).toEqual({
expect(require("../../package/env")).toStrictEqual({
railsEnv: "development",
nodeEnv: "development",
isProduction: false,
Expand All @@ -22,7 +22,7 @@ describe("Env", () => {
test("with undefined NODE_ENV and RAILS_ENV set to development", () => {
process.env.RAILS_ENV = "development"
delete process.env.NODE_ENV
expect(require("../../package/env")).toEqual({
expect(require("../../package/env")).toStrictEqual({
railsEnv: "development",
nodeEnv: "production",
isProduction: true,
Expand All @@ -34,7 +34,7 @@ describe("Env", () => {
test("with undefined NODE_ENV and RAILS_ENV", () => {
delete process.env.NODE_ENV
delete process.env.RAILS_ENV
expect(require("../../package/env")).toEqual({
expect(require("../../package/env")).toStrictEqual({
railsEnv: "production",
nodeEnv: "production",
isProduction: true,
Expand All @@ -46,7 +46,7 @@ describe("Env", () => {
test("with a non-standard environment", () => {
process.env.RAILS_ENV = "staging"
process.env.NODE_ENV = "staging"
expect(require("../../package/env")).toEqual({
expect(require("../../package/env")).toStrictEqual({
railsEnv: "staging",
nodeEnv: "production",
isProduction: true,
Expand Down
34 changes: 17 additions & 17 deletions test/package/environments/base.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,55 +16,55 @@ describe("Base config", () => {

describe("config", () => {
test("should return entry", () => {
expect(baseConfig.entry.application).toEqual(
expect(baseConfig.entry.application).toStrictEqual(
resolve("app", "javascript", "entrypoints", "application.js")
)
})

test("should return false for css_extract_ignore_order_warnings when using default config", () => {
expect(config.css_extract_ignore_order_warnings).toEqual(false)
expect(config.css_extract_ignore_order_warnings).toBe(false)
})

test("should return true for css_extract_ignore_order_warnings when configured", () => {
process.env.SHAKAPACKER_CONFIG =
"config/shakapacker_css_extract_ignore_order_warnings.yml"
const config2 = require("../../../package/config")

expect(config2.css_extract_ignore_order_warnings).toEqual(true)
expect(config2.css_extract_ignore_order_warnings).toBe(true)
})

test("should return only 2 entry points with config.nested_entries == false", () => {
expect(config.nested_entries).toEqual(false)
expect(config.nested_entries).toBe(false)

expect(baseConfig.entry.multi_entry.sort()).toEqual([
expect(baseConfig.entry.multi_entry.sort()).toStrictEqual([
resolve("app", "javascript", "entrypoints", "multi_entry.css"),
resolve("app", "javascript", "entrypoints", "multi_entry.js")
])
expect(baseConfig.entry["generated/something"]).toEqual(undefined)
expect(baseConfig.entry["generated/something"]).toBeUndefined()
})

test("should returns top level and nested entry points with config.nested_entries == true", () => {
process.env.SHAKAPACKER_CONFIG = "config/shakapacker_nested_entries.yml"
const config2 = require("../../../package/config")
const baseConfig2 = require("../../../package/environments/base")

expect(config2.nested_entries).toEqual(true)
expect(config2.nested_entries).toBe(true)

expect(baseConfig2.entry.application).toEqual(
expect(baseConfig2.entry.application).toStrictEqual(
resolve("app", "javascript", "entrypoints", "application.js")
)
expect(baseConfig2.entry.multi_entry.sort()).toEqual([
expect(baseConfig2.entry.multi_entry.sort()).toStrictEqual([
resolve("app", "javascript", "entrypoints", "multi_entry.css"),
resolve("app", "javascript", "entrypoints", "multi_entry.js")
])
expect(baseConfig2.entry["generated/something"]).toEqual(
expect(baseConfig2.entry["generated/something"]).toStrictEqual(
resolve("app", "javascript", "entrypoints", "generated", "something.js")
)
})

test("should return output", () => {
expect(baseConfig.output.filename).toEqual("js/[name]-[contenthash].js")
expect(baseConfig.output.chunkFilename).toEqual(
expect(baseConfig.output.filename).toBe("js/[name]-[contenthash].js")
expect(baseConfig.output.chunkFilename).toBe(
"js/[name]-[contenthash].chunk.js"
)
})
Expand All @@ -75,20 +75,20 @@ describe("Base config", () => {
const defaultRules = Object.keys(rules)
const configRules = baseConfig.module.rules

expect(defaultRules.length).toEqual(3)
expect(configRules.length).toEqual(3)
expect(defaultRules).toHaveLength(3)
expect(configRules).toHaveLength(3)
})

test("should return default plugins", () => {
expect(baseConfig.plugins.length).toEqual(2)
expect(baseConfig.plugins).toHaveLength(2)
})

test("should return default resolveLoader", () => {
expect(baseConfig.resolveLoader.modules).toEqual(["node_modules"])
expect(baseConfig.resolveLoader.modules).toStrictEqual(["node_modules"])
})

test("should return default resolve.modules with additions", () => {
expect(baseConfig.resolve.modules).toEqual([
expect(baseConfig.resolve.modules).toStrictEqual([
resolve("app", "javascript"),
resolve("app/assets"),
resolve("/etc/yarn"),
Expand Down
16 changes: 6 additions & 10 deletions test/package/environments/development.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ describe("Development specific config", () => {
config.useContentHash = true
const environmentConfig = require("../../../package/environments/development")

expect(environmentConfig.output.filename).toEqual(
expect(environmentConfig.output.filename).toBe(
"js/[name]-[contenthash].js"
)
expect(environmentConfig.output.chunkFilename).toEqual(
expect(environmentConfig.output.chunkFilename).toBe(
"js/[name]-[contenthash].chunk.js"
)
})
Expand All @@ -32,10 +32,8 @@ describe("Development specific config", () => {
config.useContentHash = false
const environmentConfig = require("../../../package/environments/development")

expect(environmentConfig.output.filename).toEqual("js/[name].js")
expect(environmentConfig.output.chunkFilename).toEqual(
"js/[name].chunk.js"
)
expect(environmentConfig.output.filename).toBe("js/[name].js")
expect(environmentConfig.output.chunkFilename).toBe("js/[name].chunk.js")
})
})

Expand All @@ -45,10 +43,8 @@ describe("Development specific config", () => {
delete config.useContentHash
const environmentConfig = require("../../../package/environments/development")

expect(environmentConfig.output.filename).toEqual("js/[name].js")
expect(environmentConfig.output.chunkFilename).toEqual(
"js/[name].chunk.js"
)
expect(environmentConfig.output.filename).toBe("js/[name].js")
expect(environmentConfig.output.chunkFilename).toBe("js/[name].chunk.js")
})
})
})
12 changes: 6 additions & 6 deletions test/package/environments/production.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ describe("Production specific config", () => {
config.useContentHash = true
const environmentConfig = require("../../../package/environments/production")

expect(environmentConfig.output.filename).toEqual(
expect(environmentConfig.output.filename).toBe(
"js/[name]-[contenthash].js"
)
expect(environmentConfig.output.chunkFilename).toEqual(
expect(environmentConfig.output.chunkFilename).toBe(
"js/[name]-[contenthash].chunk.js"
)
})
Expand Down Expand Up @@ -48,10 +48,10 @@ describe("Production specific config", () => {
config.useContentHash = false
const environmentConfig = require("../../../package/environments/production")

expect(environmentConfig.output.filename).toEqual(
expect(environmentConfig.output.filename).toBe(
"js/[name]-[contenthash].js"
)
expect(environmentConfig.output.chunkFilename).toEqual(
expect(environmentConfig.output.chunkFilename).toBe(
"js/[name]-[contenthash].chunk.js"
)
})
Expand Down Expand Up @@ -79,10 +79,10 @@ describe("Production specific config", () => {
delete config.useContentHash
const environmentConfig = require("../../../package/environments/production")

expect(environmentConfig.output.filename).toEqual(
expect(environmentConfig.output.filename).toBe(
"js/[name]-[contenthash].js"
)
expect(environmentConfig.output.chunkFilename).toEqual(
expect(environmentConfig.output.chunkFilename).toBe(
"js/[name]-[contenthash].chunk.js"
)
})
Expand Down
2 changes: 1 addition & 1 deletion test/package/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ describe("index", () => {
webpackConfig1.output.path = "new path"

expect(webpackConfig2).not.toHaveProperty("newKey")
expect(webpackConfig2.output.path).not.toEqual("new value")
expect(webpackConfig2.output.path).not.toBe("new value")
})

test("webpackConfig merges extra config", () => {
Expand Down
6 changes: 4 additions & 2 deletions test/package/production.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@ describe("Production environment", () => {

const webpackConfig = generateWebpackConfig()

expect(webpackConfig.output.path).toEqual(resolve("public", "packs"))
expect(webpackConfig.output.publicPath).toEqual("/packs/")
expect(webpackConfig.output.path).toStrictEqual(
resolve("public", "packs")
)
expect(webpackConfig.output.publicPath).toBe("/packs/")

expect(webpackConfig).toMatchObject({
devtool: "source-map",
Expand Down
Loading

0 comments on commit 924061f

Please sign in to comment.