return function() local Portal = require(script.Parent.Portal) local Component = require(script.Parent.Component) local ElementKind = require(script.Parent.ElementKind) describe("of", function() it("should return nil for non-table values", function() expect(ElementKind.of(nil)).to.equal(nil) expect(ElementKind.of(5)).to.equal(nil) expect(ElementKind.of(newproxy(true))).to.equal(nil) end) it("should return nil for table values without an ElementKind key", function() expect(ElementKind.of({})).to.equal(nil) end) it("should return the ElementKind from a table", function() local value = { [ElementKind] = ElementKind.Stateful, } expect(ElementKind.of(value)).to.equal(ElementKind.Stateful) end) end) describe("fromComponent", function() it("should handle host components", function() expect(ElementKind.fromComponent("foo")).to.equal(ElementKind.Host) end) it("should handle function components", function() local function foo() end expect(ElementKind.fromComponent(foo)).to.equal(ElementKind.Function) end) it("should handle stateful components", function() local Foo = Component:extend("Foo") expect(ElementKind.fromComponent(Foo)).to.equal(ElementKind.Stateful) end) it("should handle portals", function() expect(ElementKind.fromComponent(Portal)).to.equal(ElementKind.Portal) end) it("should return nil for invalid inputs", function() expect(ElementKind.fromComponent(5)).to.equal(nil) expect(ElementKind.fromComponent(newproxy(true))).to.equal(nil) end) end) end