Jump to content

Module:Template parameter value/testcases: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Use module entry points as best as possible to get around preprocessing in template entry point
no longer need the hacky workaround, +error tests
Line 8: Line 8:


function p:_internal_test(module, name)
function p:_internal_test(module, name)
module.test = function(...)
--Lazy and potentially risky hooking of functions, just cause
local s,r = module.getValue(...)
if not module.getValue then --Temporary handler while live uses a different system (dont ask)
return r --Just the return string, boolean success state isn't our concern
module.test = function(a,b,c,d)
d = d or {}
local f = mw.getCurrentFrame()
f.getParent = function() return f end
f.args = {a, b, tostring(d.templateIndex or "1"), c, tostring(d.parameterIndex or "1")}
return module.main(f)
end
else
module.test = function(...)
local s,r = module.getValue(...)
return r --Truncate to one value
end
end
end

--Basic errors tests
self:equals(name.."error test 1", module.test(), "Missing required parameters 'templates' and 'parameter'")
self:equals(name.."error test 2", module.test("", "", ""), "Requested title doesn't exist")
self:equals(name.."error test 3", module.test(TestPage, "", ""), "No valid template found")


--Test _id grabbing for the TemplateN series
--Test _id grabbing for the TemplateN series

Revision as of 22:01, 2 March 2023

--Go to the talk page to see the results of the tests. See [[Template:Template parameter value/testpage]] for the content used in testing
local p = require('Module:UnitTests')
local TestPage = "Template:Template parameter value/testpage"

local function process(x)
	return x--return mw.getCurrentFrame():preprocess(x)
end

function p:_internal_test(module, name)
	module.test = function(...)
		local s,r = module.getValue(...)
		return r --Just the return string, boolean success state isn't our concern
	end

	--Basic errors tests
	self:equals(name.."error test 1", module.test(), "Missing required parameters 'templates' and 'parameter'")
	self:equals(name.."error test 2", module.test("", "", ""), "Requested title doesn't exist")
	self:equals(name.."error test 3", module.test(TestPage, "", ""), "No valid template found")

	--Test _id grabbing for the TemplateN series
	self:equals(name.."basic grabbing 1", module.test(TestPage, "X13", "_id"), "1")
	self:equals(name.."basic grabbing 2", module.test(TestPage, "X11", "_id"), "2")
	self:equals(name.."basic grabbing 3", module.test(TestPage, "X11", "_id", {templateIndex=1}), "2")
	self:equals(name.."basic grabbing 4", module.test(TestPage, "X12", "_id"), "3")
	self:equals(name.."basic grabbing 5", module.test(TestPage, "X11", "_id", {templateIndex=2}), "4")
	self:equals(name.."basic grabbing 6", module.test(TestPage, "X11", "_id", {templateIndex=3}), "5")
	self:equals(name.."basic grabbing 7", module.test(TestPage, "X11", "_id", {templateIndex=4}), "subtemplate")
	self:equals(name.."basic grabbing 8", module.test(TestPage, "X11", "_id", {templateIndex=4, parameterIndex=2}), "6")
	self:equals(name.."basic grabbing 9", module.test(TestPage, "X11", "_id", {templateIndex=4, ignoreSubtemplates=true}), "6")
	
	--Test grabbing for the other tests (NumericalParameters, HeavyNesting)
	self:equals(name.."numerical parameters 1", module.test(TestPage, "X21", "1"), "X")
	self:equals(name.."numerical parameters 2", module.test(TestPage, "X21", "2"), "Y")
	self:equals(name.."numerical parameters 3", module.test(TestPage, "X21", "3"), "Z")
	self:equals(name.."numerical parameters 4", module.test(TestPage, "X21", "4"), "W")
	self:equals(name.."numerical parameters 5", module.test(TestPage, "X21", "5"), "")
	self:equals(name.."numerical parameters 6", module.test(TestPage, "X21", "6"), "P")
	
	self:equals(name.."nesting templates 1", module.test(TestPage, "X22", "1"), "2")
	self:equals(name.."nesting templates 2", module.test(TestPage, "X22", "1", {ignoreSubtemplates=true}), "")
	self:equals(name.."nesting templates 3", module.test(TestPage, "X22", "A1"), "Nest1")
	self:equals(name.."nesting templates 4", module.test(TestPage, "X22", "A2"), "Nest2{{X20 |x=y|1=2|_id=9}} Content", {nowiki=1})
	self:equals(name.."nesting templates 5", module.test(TestPage, "X22", "A3a"), "{{Text|A|4|A4=A5}}", {nowiki=1})
	self:equals(name.."nesting templates 6", module.test(TestPage, "X22", "A3b"), "1{{Text|A|4|A4=A5}}2", {nowiki=1})
	self:equals(name.."nesting templates 7", module.test(TestPage, "X22", "A4", {parameterIndex=2}), "A5")
	self:equals(name.."nesting templates 8", module.test(TestPage, "X22", "A4", {parameterIndex=3}), "[[Help:Example|{{X20|[[Help:Example]]|_id=%10}}]]", {nowiki=1})
	self:equals(name.."nesting templates 9", module.test(TestPage, "X22", "A5"), "")
	self:equals(name.."nesting templates 10", module.test(TestPage, "X22", "A6"), "")
	self:equals(name.."nesting templates 11", module.test(TestPage, "X22", "A7"), "{{X22 |_id=11}}", {nowiki=1})
end

function p:test_live()
	p:_internal_test(require("Module:Template parameter value"), "Live ")
end

function p:test_sandbox()
	p:_internal_test(require("Module:Template parameter value/sandbox"), "Sandbox ")
end

return p