return function()local A=require(script.Parent.new)it("\115\104\111\117\108\100 \100\101\102\097\117\108\116 \116\111 \097 \102\111\108\100\101\114",function()local b=A();(expect(b:IsA("\070\111\108\100\101\114"))).to.equal(true)end)it("\115\104\111\117\108\100 \111\112\116\105\111\110\097\108\108\121 \116\097\107\101 \097 \108\105\115\116 \111\102 \112\114\111\112\101\114\116\105\101\115",function()local b=A({Name="\083\097\109\112\108\101"});(expect(b.Name)).to.equal("\083\097\109\112\108\101")end)it("\115\104\111\117\108\100 \097\108\108\111\119 \116\104\101 \067\108\097\115\115\078\097\109\101 \116\111 \098\101 \115\112\101\099\105\102\105\101\100",function()local b=A({ClassName="\077\111\100\101\108"});(expect(b:IsA("\077\111\100\101\108"))).to.equal(true)end)it("\115\104\111\117\108\100 \111\112\116\105\111\110\097\108\108\121 \116\097\107\101 \097 \109\097\112 \111\102 \099\104\105\108\100\114\101\110",function()local b=A(nil,{Part=Instance.new("\080\097\114\116")});(expect(b.Part)).to.be.ok()end)it("\115\104\111\117\108\100 \098\101 \097\098\108\101 \116\111 \109\105\109\105\099 \116\104\101 \068\097\116\097\077\111\100\101\108",function()local b=A({Name="\103\097\109\101"},{ServerScriptService=A(nil,{Script=Instance.new("\083\099\114\105\112\116")});ReplicatedStorage=A(nil,{Module=Instance.new("\077\111\100\117\108\101\083\099\114\105\112\116")})});(expect(b.Name)).to.equal("\103\097\109\101");(expect(b.ServerScriptService)).to.be.ok();(expect(b.ServerScriptService.Script)).to.be.ok();(expect(b.ReplicatedStorage)).to.be.ok();(expect(b.ReplicatedStorage.Module)).to.be.ok()end)end
return function()
	local new = require(script.Parent.new)

	it("should default to a folder", function()
		local instance = new()
		expect(instance:IsA("Folder")).to.equal(true)
	end)

	it("should optionally take a list of properties", function()
		local withProps = new({
			Name = "Sample",
		})

		expect(withProps.Name).to.equal("Sample")
	end)

	it("should allow the ClassName to be specified", function()
		local instance = new({
			ClassName = "Model"
		})

		expect(instance:IsA("Model")).to.equal(true)
	end)

	it("should optionally take a map of children", function()
		local withChildren = new(nil, {
			Part = Instance.new("Part"),
		})

		expect(withChildren.Part).to.be.ok()
	end)

	it("should be able to mimic the DataModel", function()
		local mockDataModel = new({
			Name = "game"
		}, {
			ServerScriptService = new(nil, {
				Script = Instance.new("Script")
			}),
			ReplicatedStorage = new(nil, {
				Module = Instance.new("ModuleScript")
			})
		})

		expect(mockDataModel.Name).to.equal("game")
		expect(mockDataModel.ServerScriptService).to.be.ok()
		expect(mockDataModel.ServerScriptService.Script).to.be.ok()
		expect(mockDataModel.ReplicatedStorage).to.be.ok()
		expect(mockDataModel.ReplicatedStorage.Module).to.be.ok()
	end)
end
