<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ACheck_DYK_hook%2Ftestcases</id>
	<title>Module:Check DYK hook/testcases - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ACheck_DYK_hook%2Ftestcases"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Check_DYK_hook/testcases&amp;action=history"/>
	<updated>2026-06-19T10:39:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Check_DYK_hook/testcases&amp;diff=135541&amp;oldid=prev</id>
		<title>imported&gt;Mr. Stradivarius: add &quot;hook&quot; keyword parameter test, and use a proper frame object for the error test</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Check_DYK_hook/testcases&amp;diff=135541&amp;oldid=prev"/>
		<updated>2020-11-29T12:27:06Z</updated>

		<summary type="html">&lt;p&gt;add &amp;quot;hook&amp;quot; keyword parameter test, and use a proper frame object for the error test&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Load necessary modules&lt;br /&gt;
local mCheckDYKHook = require(&amp;#039;Module:Check DYK hook/sandbox&amp;#039;)&lt;br /&gt;
local ScribuntoUnit = require(&amp;#039;Module:ScribuntoUnit&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Initialise test suite&lt;br /&gt;
local suite = ScribuntoUnit:new()&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper methods&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeFrameWithArgs(args)&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	return frame:newChild{args = args}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:assertErrorMessageContains(func, expectedMessage)&lt;br /&gt;
	local success, actualMessage = pcall(func)&lt;br /&gt;
	self:assertFalse(success)&lt;br /&gt;
	self:assertStringContains(expectedMessage, actualMessage, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tests for p._isValidHook&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local moduleTestData = {&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testIsValidHook_ReturnsTrue_ForHooksStartingWithThat&amp;quot;,&lt;br /&gt;
		hook     = &amp;quot;... that foo bar baz?&amp;quot;,&lt;br /&gt;
		expected = true,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testIsValidHook_ReturnsTrue_ForHooksStartingWithAbout&amp;quot;,&lt;br /&gt;
		hook     = &amp;quot;... about the foo bar baz?&amp;quot;,&lt;br /&gt;
		expected = true,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testIsValidHook_ReturnsFalse_ForHooksStartingWithOtherWords&amp;quot;,&lt;br /&gt;
		hook     = &amp;quot;... foo bar baz?&amp;quot;,&lt;br /&gt;
		expected = false,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testIsValidHook_ReturnsTrue_ForHooksEndingWithAQuestionMark&amp;quot;,&lt;br /&gt;
		hook     = &amp;quot;... that foo bar baz?&amp;quot;,&lt;br /&gt;
		expected = true,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testIsValidHook_ReturnsTrue_ForHooksEndingWithAQuestionMarkHTMLEncodedInsideASpan&amp;quot;,&lt;br /&gt;
		hook     = &amp;#039;... that foo bar [[baz|&amp;lt;span class=&amp;quot;something&amp;quot;&amp;gt;baz&amp;amp;#63;&amp;lt;/span&amp;gt;]]&amp;#039;,&lt;br /&gt;
		expected = true,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testIsValidHook_ReturnsTrue_ForHooksEndingWithYouProbablyDid&amp;quot;,&lt;br /&gt;
		hook     = &amp;#039;... that foo bar baz? You probably did...&amp;#039;,&lt;br /&gt;
		expected = true,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testIsValidHook_ReturnsFalse_ForHooksNotEndingInAQuestionMark&amp;quot;,&lt;br /&gt;
		hook     = &amp;#039;... that foo bar baz&amp;#039;,&lt;br /&gt;
		expected = false,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, testData in ipairs(moduleTestData) do&lt;br /&gt;
	suite[testData.testName] = function(self)&lt;br /&gt;
		local result = mCheckDYKHook._isValidHook(testData.hook)&lt;br /&gt;
		if testData.expected then&lt;br /&gt;
			self:assertTrue(result)&lt;br /&gt;
		else&lt;br /&gt;
			self:assertFalse(result)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testIsValidHook_RaisesError_WhenHookIsNotAString()&lt;br /&gt;
	self:assertErrorMessageContains(&lt;br /&gt;
		function ()&lt;br /&gt;
			mCheckDYKHook._isValidHook(7)&lt;br /&gt;
		end,&lt;br /&gt;
		&amp;quot;bad argument #1 to &amp;#039;_isValidHook&amp;#039; (string expected, got number)&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tests for p.isValidHook&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local templateTestData = {&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testTemplateIsValidHook_ReturnsYes_ForHooksStartingWithThat&amp;quot;,&lt;br /&gt;
		args     = {&amp;quot;... that foo bar baz?&amp;quot;},&lt;br /&gt;
		expected = &amp;quot;yes&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testTemplateIsValidHook_ReturnsBlank_ForHooksStartingWithOtherWords&amp;quot;,&lt;br /&gt;
		args     = {&amp;quot;... foo bar baz?&amp;quot;},&lt;br /&gt;
		expected = &amp;quot;&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testTemplateIsValidHook_ReturnsYes_ForHooksWithWhitespace&amp;quot;,&lt;br /&gt;
		args     = {&amp;quot;\n  ... that foo bar baz?  \n&amp;quot;},&lt;br /&gt;
		expected = &amp;quot;yes&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testTemplateIsValidHook_ReturnsBlank_ForInvalidHooksWithWhitespace&amp;quot;,&lt;br /&gt;
		args     = {&amp;quot;\n  ... that foo bar baz  \n&amp;quot;},&lt;br /&gt;
		expected = &amp;quot;&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testTemplateIsValidHook_ReturnsYes_ForHooksEndingWithAQuestionMarkHTMLEncodedInsideASpan&amp;quot;,&lt;br /&gt;
		args     = {&amp;#039;... that foo bar [[baz|&amp;lt;span class=&amp;quot;something&amp;quot;&amp;gt;baz&amp;amp;#63;&amp;lt;/span&amp;gt;]]&amp;#039;},&lt;br /&gt;
		expected = &amp;quot;yes&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testTemplateIsValidHook_ReturnsYes_ForHooksEndingWithAQuestionMarkHTMLEncodedInsideASpanWithWhitespace&amp;quot;,&lt;br /&gt;
		args     = {&amp;#039;\n  ... that foo bar [[baz|&amp;lt;span class=&amp;quot;something&amp;quot;&amp;gt;baz&amp;amp;#63;&amp;lt;/span&amp;gt;]]  \n&amp;#039;},&lt;br /&gt;
		expected = &amp;quot;yes&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		testName = &amp;quot;testTemplateIsValidHook_ReturnsYes_WhenCalledWithValidHookWithHookKeywordArgument&amp;quot;,&lt;br /&gt;
		args     = {hook = &amp;quot;... that foo bar baz?&amp;quot;},&lt;br /&gt;
		expected = &amp;quot;yes&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, testData in ipairs(templateTestData) do&lt;br /&gt;
	suite[testData.testName] = function(self)&lt;br /&gt;
		self:assertEquals(&lt;br /&gt;
			mCheckDYKHook.isValidHook(makeFrameWithArgs(testData.args)),&lt;br /&gt;
			testData.expected&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testTemplateIsValidHook_RaisesError_WhenNoHookSupplied()&lt;br /&gt;
	self:assertErrorMessageContains(&lt;br /&gt;
		function ()&lt;br /&gt;
			mCheckDYKHook.isValidHook(makeFrameWithArgs{nil})&lt;br /&gt;
		end,&lt;br /&gt;
		&amp;quot;No hook specified&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return suite&lt;/div&gt;</summary>
		<author><name>imported&gt;Mr. Stradivarius</name></author>
	</entry>
</feed>