Module:Highest archive number/testcases

From Wikipedia, the free encyclopedia
-- Unit tests for [[Module:Highest archive number]]. Click on the talk page to
-- run the tests.

local han = require('Module:Highest archive number/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

-- Monkey patch mw.title.new
local existingPages = {}
local oldTitleNew = mw.title.new
mw.title.new = function(page)
	local title = oldTitleNew(page)
	rawset(title, "exists", existingPages[page] ~= nil)
	return title
end

-- Test data
local NO_ARCHIVES = {}

local ARCHIVES_1_TO_5 = {
	["Talk:Foo/Archive 1"] = true,
	["Talk:Foo/Archive 2"] = true,
	["Talk:Foo/Archive 3"] = true,
	["Talk:Foo/Archive 4"] = true,
	["Talk:Foo/Archive 5"] = true,
}

local ARCHIVES_3_TO_5 = {
	["Talk:Foo/Archive 3"] = true,
	["Talk:Foo/Archive 4"] = true,
	["Talk:Foo/Archive 5"] = true,
}

-- Tests
function suite:testNoArchives()
	existingPages = NO_ARCHIVES
	self:assertEquals(han._main("Talk:Foo/Archive "), nil)
end

function suite:testArchivesStartingFromOne()
	existingPages = ARCHIVES_1_TO_5
	self:assertEquals(han._main("Talk:Foo/Archive "), 5)
end

function suite:testArchivesStartingFromThreeWithCustomStart()
	existingPages = ARCHIVES_3_TO_5
	self:assertEquals(han._main("Talk:Foo/Archive ", 3), 5)
end

function suite:testMain()
	existingPages = ARCHIVES_3_TO_5
	local frame = mw.getCurrentFrame()
	local childFrame = frame:newChild{
		title = "Module:Highest archive number",
		args = {"Talk:Foo/Archive ", start="3"}
	}
	self:assertEquals(han.main(childFrame), 5)
end

function suite:testWrapperTemplate()
	existingPages = ARCHIVES_1_TO_5
	local frame = mw.getCurrentFrame()
	local parentFrame = frame:newChild{
		title = "Template:Highest archive number", args = {"Talk:Foo/Archive "}
	}
	local childFrame = parentFrame:newChild{
		title = "Module:Highest archive number", args = {}
	}
	self:assertEquals(han.main(childFrame), 5)
end

return suite