Clients/Client2018/content/LuaPackages/RoactImpl/Instrumentation.spec.lua

98 lines
2.3 KiB
Lua

return function()
local Component = require(script.Parent.PureComponent)
local GlobalConfig = require(script.Parent.GlobalConfig)
local Reconciler = require(script.Parent.Reconciler)
local createElement = require(script.Parent.createElement)
local Instrumentation = require(script.Parent.Instrumentation)
it("should count and time renders when enabled", function()
GlobalConfig.set({
["componentInstrumentation"] = true,
})
local triggerUpdate
local TestComponent = Component:extend("TestComponent")
function TestComponent:init()
self.state = {
value = 0
}
end
function TestComponent:render()
return nil
end
function TestComponent:didMount()
triggerUpdate = function()
self:setState({
value = self.state.value + 1
})
end
end
local instance = Reconciler.mount(createElement(TestComponent))
local stats = Instrumentation.getCollectedStats()
expect(stats.TestComponent).to.be.ok()
expect(stats.TestComponent.renderCount).to.equal(1)
triggerUpdate()
expect(stats.TestComponent.renderCount).to.equal(2)
Reconciler.unmount(instance)
Instrumentation.clearCollectedStats()
GlobalConfig.reset()
end)
it("should count and time shouldUpdate calls when enabled", function()
GlobalConfig.set({
["componentInstrumentation"] = true,
})
local triggerUpdate
local willDoUpdate = false
local TestComponent = Component:extend("TestComponent")
function TestComponent:init()
self.state = {
value = 0,
}
end
function TestComponent:shouldUpdate()
return willDoUpdate
end
function TestComponent:didMount()
triggerUpdate = function()
self:setState({
value = self.state.value + 1,
})
end
end
function TestComponent:render() end
local instance = Reconciler.mount(createElement(TestComponent))
local stats = Instrumentation.getCollectedStats()
willDoUpdate = true
triggerUpdate()
expect(stats.TestComponent).to.be.ok()
expect(stats.TestComponent.updateReqCount).to.equal(1)
expect(stats.TestComponent.didUpdateCount).to.equal(1)
willDoUpdate = false
triggerUpdate()
expect(stats.TestComponent.updateReqCount).to.equal(2)
expect(stats.TestComponent.didUpdateCount).to.equal(1)
Reconciler.unmount(instance)
Instrumentation.clearCollectedStats()
GlobalConfig.reset()
end)
end