return function()
	local InGameMenu = script.Parent.Parent
	local OpenReportDialog = require(InGameMenu.Actions.OpenReportDialog)
	local CloseReportDialog = require(InGameMenu.Actions.CloseReportDialog)
	local OpenReportSentDialog = require(InGameMenu.Actions.OpenReportSentDialog)
	local CloseReportSentDialog = require(InGameMenu.Actions.CloseReportSentDialog)
	local report = require(script.Parent.report)

	it("should be closed by default", function()
		local defaultState = report(nil, {})
		expect(defaultState.dialogOpen).to.equal(false)
		expect(defaultState.reportSentOpen).to.equal(false)
	end)

	describe("OpenReportDialog", function()
		it("should set the report dialog open for a user", function()
			local oldState = report(nil, {})
			local newState = report(oldState, OpenReportDialog(261, "Shedletsky"))
			expect(oldState).to.never.equal(newState)
			expect(newState.dialogOpen).to.equal(true)
			expect(newState.userId).to.equal(261)
			expect(newState.userName).to.equal("Shedletsky")
		end)

		it("should set the report dialog open for a game", function()
			local oldState = report(nil, {})
			oldState = report(oldState, OpenReportDialog(261, "Shedletsky"))
			local newState = report(oldState, OpenReportDialog())
			expect(oldState).to.never.equal(newState)
			expect(newState.dialogOpen).to.equal(true)
			expect(newState.userId).to.equal(nil)
			expect(newState.userName).to.equal(nil)
		end)
	end)

	describe("CloseReportDialog", function()
		it("should set the report dialog closed", function()
			local oldState = report(nil, {})
			oldState = report(oldState, OpenReportDialog(261, "Shedletsky"))
			local newState = report(oldState, CloseReportDialog())
			expect(oldState).to.never.equal(newState)
			expect(newState.dialogOpen).to.equal(false)
		end)
	end)

	describe("OpenReportSentDialog", function()
		it("should set the report send dialog open", function()
			local oldState = report(nil, {})
			local newState = report(oldState, OpenReportSentDialog())
			expect(oldState).to.never.equal(newState)
			expect(newState.reportSentOpen).to.equal(true)
		end)
	end)

	describe("CloseReportSentDialog", function()
		it("should set the report send dialog open", function()
			local oldState = report(nil, {})
			local newState = report(oldState, CloseReportSentDialog())
			expect(oldState).to.never.equal(newState)
			expect(newState.reportSentOpen).to.equal(false)
		end)
	end)
end