return function() local makeActionCreator = require(script.Parent.makeActionCreator) describe("the generated action creator", function() it("should throw if given an invalid arguments", function() expect(function() makeActionCreator(100) end).to.throw() expect(function() makeActionCreator("Test", 12) end).to.throw() end) it("should generate a callable table with a 'name' field", function() local actionCreator = makeActionCreator("Action") expect(type(actionCreator)).to.equal("table") expect(actionCreator.name).to.equal("Action") expect(actionCreator).never.to.throw() end) end) describe("the action object generated by the action creator", function() it("should expect a matching number of inputs", function() local actionWithFields = makeActionCreator("AddItem", "id", "title") expect(function() actionWithFields(10, "Apple", "extra arg") end).to.throw() expect(function() actionWithFields(10) end).to.throw() expect(function() actionWithFields(10, "Orange") end).never.to.throw() end) it("should correctly count trailing nils", function() local actionWithFields = makeActionCreator("SetProperty", "value", "default") expect(function() actionWithFields("1", nil) end).never.to.throw() end) end) end