Toggle menu
14
222
68
27.1K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Refer to
Module:About



local mAbout = require('Module:About/sandbox')
local about = mAbout._about
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()


--------------------------------------------------------------------------------
-- Basic functionality
--------------------------------------------------------------------------------

function suite:testBasicBlank()
	local result = about()
	--Current functionality. Should probably throw an error if blank in future.
	self:assertStringContains('For other uses, see [[:About/testcases (disambiguation)]].', result, true)
end

function suite:testBasicUse1()
	--Article namespace
	local result = about({
			[1] = 'USE1'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For other uses, see [[:About/testcases (disambiguation)]].', result, true)
	--Category namespace
	result = about({
			[1] = 'USE1'
		}, {PageType = 'category'})
	self:assertStringContains('This category is about USE1. For other uses, see [[:About/testcases (disambiguation)]].', result, true)
	--All other namespaces
	result = about({
			[1] = 'USE1'
		}, {PageType = 'page'})
	self:assertStringContains('This page is about USE1. For other uses, see [[:About/testcases (disambiguation)]].', result, true)
end

function suite:testBasicUse2()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:About/testcases (disambiguation)]].', result, true)
end

function suite:testBasicPage1()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]].', result, true)
end

function suite:testBasicUse3()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1',
			[4] = 'USE3'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]]. For USE3, see [[:About/testcases (disambiguation)]]', result, true)
end

function suite:testBasicPage2()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1',
			[4] = 'USE3',
			[5] = 'PAGE2'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]]. For USE3, see [[:PAGE2]]', result, true)
end

--------------------------------------------------------------------------------
-- "and" functionality
--------------------------------------------------------------------------------

function suite:testAnd1And()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1',
			[4] = 'and',
			[5] = 'PAGE2'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]] and [[:PAGE2]]', result, true)
end

function suite:testAnd2Ands()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1',
			[4] = 'and',
			[5] = 'PAGE2',
			[6] = 'and',
			[7] = 'PAGE3'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]], [[:PAGE2]], and [[:PAGE3]]', result, true)
end

function suite:testAnd3Ands()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1',
			[4] = 'and',
			[5] = 'PAGE2',
			[6] = 'and',
			[7] = 'PAGE3',
			[8] = 'and',
			[9] = 'PAGE4'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]], [[:PAGE2]], [[:PAGE3]], and [[:PAGE4]]', result, true)
end

function suite:testAnd1And1BeforeFor()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1',
			[4] = 'and',
			[5] = 'PAGE2',
			[6] = 'USE3',
			[7] = 'PAGE3'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]] and [[:PAGE2]]. For USE3, see [[:PAGE3]].', result, true)
end

function suite:testAnd1And1BeforeAnd1()
	local result = about({
			[1] = 'USE1',
			[2] = 'USE2',
			[3] = 'PAGE1',
			[4] = 'and',
			[5] = 'PAGE2',
			[6] = 'USE3',
			[7] = 'PAGE3',
			[8] = 'and',
			[9] = 'PAGE4'
		}, {PageType = 'article'})
	self:assertStringContains('This article is about USE1. For USE2, see [[:PAGE1]] and [[:PAGE2]]. For USE3, see [[:PAGE3]] and [[:PAGE4]].', result, true)
end

--------------------------------------------------------------------------------
-- otherText functionality
--------------------------------------------------------------------------------

function suite:testOtherText()
	local result = about({
			[1] = 'USE1',
			[3] = 'PAGE1'
		}, {
			otherText = 'other values of otherText',
			PageType = 'article'
		})
	self:assertStringContains('This article is about USE1. For other values of otherText, see [[:PAGE1]]', result, true)
end


--------------------------------------------------------------------------------
-- otherText functionality
--------------------------------------------------------------------------------

function suite:testNoSelfref()
	local result = about({
			[1] = 'USE1',
			[2] = 'PAGE1',
		})
	self:assertNotStringContains('selfref', result, true)
end

function suite:testSelfref()
	local result = about({
			[1] = 'USE1',
			[2] = 'PAGE1',
			['selfref'] = 'true'
		})
	self:assertStringContains('selfref', result, true)
end

--------------------------------------------------------------------------------
-- Defaulting functionality
--------------------------------------------------------------------------------

--TODO

--------------------------------------------------------------------------------
return suite