Files
formipay/node_modules/handle-thing/test/api-test.js
dwindown e8fbfb14c1 fix: prevent asset conflicts between React and Grid.js versions
Add coexistence checks to all enqueue methods to prevent loading
both React and Grid.js assets simultaneously.

Changes:
- ReactAdmin.php: Only enqueue React assets when ?react=1
- Init.php: Skip Grid.js when React active on admin pages
- Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0
- Customer.php, Product.php, License.php: Add coexistence checks

Now the toggle between Classic and React versions works correctly.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 17:02:14 +07:00

111 lines
2.6 KiB
JavaScript

/* eslint-env mocha */
var assert = require('assert')
var net = require('net')
var streamPair = require('stream-pair')
var thing = require('../')
describe('Handle Thing', function () {
var handle
var pair
var socket;
[ 'normal', 'lazy' ].forEach(function (mode) {
describe(mode, function () {
beforeEach(function () {
pair = streamPair.create()
handle = thing.create(mode === 'normal' ? pair.other : null)
socket = new net.Socket({
handle: handle,
readable: true,
writable: true
})
if (mode === 'lazy') {
setTimeout(function () {
handle.setStream(pair.other)
}, 50)
}
})
afterEach(function () {
assert(handle._stream)
})
it('should write data to Socket', function (done) {
pair.write('hello')
pair.write(' world')
pair.end('... ok')
var chunks = ''
socket.on('data', function (chunk) {
chunks += chunk
})
socket.on('end', function () {
assert.strictEqual(chunks, 'hello world... ok')
// allowHalfOpen is `false`, so the `end` should be followed by `close`
socket.once('close', function () {
done()
})
})
})
it('should read data from Socket', function (done) {
socket.write('hello')
socket.write(' world')
socket.end('... ok')
var chunks = ''
pair.on('data', function (chunk) {
chunks += chunk
})
pair.on('end', function () {
assert.strictEqual(chunks, 'hello world... ok')
done()
})
})
it('should invoke `close` callback', function (done) {
handle._options.close = function (callback) {
done()
process.nextTick(callback)
}
pair.end('hello')
socket.resume()
})
it('should kill pending requests', function (done) {
handle._options.close = function () {
setTimeout(done, 75)
}
socket.write('hello')
socket.destroy()
})
if (mode === 'normal') {
it('should invoke `getPeerName` callback', function () {
handle._options.getPeerName = function () {
return { address: 'ohai' }
}
assert.strictEqual(socket.remoteAddress, 'ohai')
})
it('should emit ECONNRESET at `close` event', function (done) {
pair.other.emit('close')
socket.on('error', function (err) {
assert(/ECONNRESET/.test(err.message))
done()
})
})
}
})
})
})