return function()local K=require(script.Parent.Parent.Type)local e=require(script.Parent.Parent.Component)it("\115\104\111\117\108\100 \098\101 \101\120\116\101\110\100\097\098\108\101",function()local B=e:extend("\084\104\101 \083\101\110\097\116\101");(expect(B)).to.be.ok();(expect(K.of(B))).to.equal(K.StatefulComponentClass)end)it("\115\104\111\117\108\100 \112\114\101\118\101\110\116 \101\120\116\101\110\100\105\110\103 \097 \117\115\101\114 \099\111\109\112\111\110\101\110\116",function()local K=e:extend("\083\104\101\101\118");(expect(function()K:extend("\070\114\097\110\107")end)).to.throw()end)it("\115\104\111\117\108\100 \117\115\101 \097 \103\105\118\101\110 \110\097\109\101",function()local K=e:extend("\070\111\111\066\097\114")local B=tostring(K);(expect(B)).to.be.a("\115\116\114\105\110\103");(expect(B:find("\070\111\111\066\097\114"))).to.be.ok()end)end
return function()
	local Type = require(script.Parent.Parent.Type)

	local Component = require(script.Parent.Parent.Component)

	it("should be extendable", function()
		local MyComponent = Component:extend("The Senate")

		expect(MyComponent).to.be.ok()
		expect(Type.of(MyComponent)).to.equal(Type.StatefulComponentClass)
	end)

	it("should prevent extending a user component", function()
		local MyComponent = Component:extend("Sheev")

		expect(function()
			MyComponent:extend("Frank")
		end).to.throw()
	end)

	it("should use a given name", function()
		local MyComponent = Component:extend("FooBar")

		local name = tostring(MyComponent)

		expect(name).to.be.a("string")
		expect(name:find("FooBar")).to.be.ok()
	end)
end