Skip to content

Commit

Permalink
feat: add reactStrictMode option to enable strict mode render (#1241)
Browse files Browse the repository at this point in the history
* feat: add `reactStrictMode` option and override `getConfig` and `configure` functions from DTL

* feat: update types for overridden `getConfig` and `configure` functions

* test: add tests for checking configure APIs support RTL option and do not degrade

* refactor: use a wrapper option for simplicity

* refactor: use same function for wrapping UI if needed

* feat: enable strict mode render if `reactStrictMode` option is true

* test: add tests for checking strict mode works and can be combine with wrapper

---------

Co-authored-by: Sebastian Silbermann <silbermann.sebastian@gmail.com>
  • Loading branch information
yinm and eps1lon committed Jan 30, 2024
1 parent 03a301f commit 0880eba
Show file tree
Hide file tree
Showing 8 changed files with 443 additions and 174 deletions.
2 changes: 1 addition & 1 deletion src/__tests__/__snapshots__/render.js.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`supports fragments 1`] = `
exports[`render API supports fragments 1`] = `
<DocumentFragment>
<div>
<code>
Expand Down
66 changes: 66 additions & 0 deletions src/__tests__/config.js
@@ -0,0 +1,66 @@
import {configure, getConfig} from '../'

describe('configuration API', () => {
let originalConfig
beforeEach(() => {
// Grab the existing configuration so we can restore
// it at the end of the test
configure(existingConfig => {
originalConfig = existingConfig
// Don't change the existing config
return {}
})
})

afterEach(() => {
configure(originalConfig)
})

describe('DTL options', () => {
test('configure can set by a plain JS object', () => {
const testIdAttribute = 'not-data-testid'
configure({testIdAttribute})

expect(getConfig().testIdAttribute).toBe(testIdAttribute)
})

test('configure can set by a function', () => {
// setup base option
const baseTestIdAttribute = 'data-testid'
configure({testIdAttribute: baseTestIdAttribute})

const modifiedPrefix = 'modified-'
configure(existingConfig => ({
testIdAttribute: `${modifiedPrefix}${existingConfig.testIdAttribute}`,
}))

expect(getConfig().testIdAttribute).toBe(
`${modifiedPrefix}${baseTestIdAttribute}`,
)
})
})

describe('RTL options', () => {
test('configure can set by a plain JS object', () => {
configure({reactStrictMode: true})

expect(getConfig().reactStrictMode).toBe(true)
})

test('configure can set by a function', () => {
configure(existingConfig => ({
reactStrictMode: !existingConfig.reactStrictMode,
}))

expect(getConfig().reactStrictMode).toBe(true)
})
})

test('configure can set DTL and RTL options at once', () => {
const testIdAttribute = 'not-data-testid'
configure({testIdAttribute, reactStrictMode: true})

expect(getConfig().testIdAttribute).toBe(testIdAttribute)
expect(getConfig().reactStrictMode).toBe(true)
})
})

0 comments on commit 0880eba

Please sign in to comment.