71 lines
1.3 KiB
Lua
71 lines
1.3 KiB
Lua
return function()
|
|
local createElement = require(script.Parent.createElement)
|
|
local Reconciler = require(script.Parent.Reconciler)
|
|
|
|
local PureComponent = require(script.Parent.PureComponent)
|
|
|
|
it("should be extendable", function()
|
|
local MyComponent = PureComponent:extend("MyComponent")
|
|
|
|
expect(MyComponent).to.be.ok()
|
|
end)
|
|
|
|
it("should skip updates for shallow-equal props", function()
|
|
local updateCount = 0
|
|
local setValue
|
|
|
|
local PureChild = PureComponent:extend("PureChild")
|
|
|
|
function PureChild:willUpdate(newProps, newState)
|
|
updateCount = updateCount + 1
|
|
end
|
|
|
|
function PureChild:render()
|
|
end
|
|
|
|
local PureContainer = PureComponent:extend("PureContainer")
|
|
|
|
function PureContainer:init()
|
|
self.state = {
|
|
value = 0,
|
|
}
|
|
end
|
|
|
|
function PureContainer:didMount()
|
|
setValue = function(value)
|
|
self:setState({
|
|
value = value,
|
|
})
|
|
end
|
|
end
|
|
|
|
function PureContainer:render()
|
|
return createElement(PureChild, {
|
|
value = self.state.value,
|
|
})
|
|
end
|
|
|
|
local element = createElement(PureContainer)
|
|
local instance = Reconciler.mount(element)
|
|
|
|
expect(updateCount).to.equal(0)
|
|
|
|
setValue(1)
|
|
|
|
expect(updateCount).to.equal(1)
|
|
|
|
setValue(1)
|
|
|
|
expect(updateCount).to.equal(1)
|
|
|
|
setValue(2)
|
|
|
|
expect(updateCount).to.equal(2)
|
|
|
|
setValue(1)
|
|
|
|
expect(updateCount).to.equal(3)
|
|
|
|
Reconciler.unmount(instance)
|
|
end)
|
|
end |