Difference between revisions of "Module:Userbox/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Mr. Stradivarius
(finish the id render tests)
blackwiki>Mr. Stradivarius
(add id2 tests)
Line 31: Line 31:
 
local function renderId(data)
 
local function renderId(data)
 
data.showId = true
 
data.showId = true
 +
return render(data)
 +
end
 +
 +
local function renderId2(data)
 +
data.showId2 = true
 
return render(data)
 
return render(data)
 
end
 
end
Line 82: Line 87:
 
     self:assertStringContains(inTagAttr('background:red;', 'table', 'style'), render{backgroundColor = 'red'})
 
     self:assertStringContains(inTagAttr('background:red;', 'table', 'style'), render{backgroundColor = 'red'})
 
end
 
end
 +
 +
--------------------------------------------------------------------------------
 +
-- Render id tests
 +
--------------------------------------------------------------------------------
  
 
function suite:testRenderIdBorder()
 
function suite:testRenderIdBorder()
Line 133: Line 142:
 
function suite:testRenderId()
 
function suite:testRenderId()
 
     self:assertStringContains('<th[^>]->Id text.</th>', renderId{id = 'Id text.'})
 
     self:assertStringContains('<th[^>]->Id text.</th>', renderId{id = 'Id text.'})
 +
end
 +
 +
--------------------------------------------------------------------------------
 +
-- Render id2 tests
 +
--------------------------------------------------------------------------------
 +
 +
function suite:testRenderId2Border()
 +
    self:assertStringContains(inTagAttr('border:0;', 'th', 'style'), renderId2{})
 +
end
 +
 +
function suite:testRenderId2Width()
 +
    self:assertStringContains(inTagAttr('width:50px;', 'th', 'style'), renderId2{id2Width = '50px'})
 +
end
 +
 +
function suite:testRenderId2Height()
 +
    self:assertStringContains(inTagAttr('height:50px;', 'th', 'style'), renderId2{id2Height = '50px'})
 +
end
 +
 +
function suite:testRenderId2BackgroundColor()
 +
    self:assertStringContains(inTagAttr('background:red;', 'th', 'style'), renderId2{id2BackgroundColor = 'red'})
 +
end
 +
 +
function suite:testRenderId2TextAlign()
 +
    self:assertStringContains(inTagAttr('text%-align:center;', 'th', 'style'), renderId2{id2TextAlign = 'center'})
 +
end
 +
 +
function suite:testRenderId2FontSize()
 +
    self:assertStringContains(inTagAttr('font%-size:16pt;', 'th', 'style'), renderId2{id2FontSize = '16pt'})
 +
end
 +
 +
function suite:testRenderId2Color()
 +
    self:assertStringContains(inTagAttr('color:blue;', 'th', 'style'), renderId2{id2Color = 'blue'})
 +
end
 +
 +
function suite:testRenderId2Padding()
 +
    self:assertStringContains(inTagAttr('padding:3px;', 'th', 'style'), renderId2{id2Padding = '3px'})
 +
end
 +
 +
function suite:testRenderId2LineHeight()
 +
    self:assertStringContains(inTagAttr('line%-height:1.5em;', 'th', 'style'), renderId2{id2LineHeight = '1.5em'})
 +
end
 +
 +
function suite:testRenderId2VerticalAlign()
 +
    self:assertStringContains(inTagAttr('vertical%-align:middle;', 'th', 'style'), renderId2{})
 +
end
 +
 +
function suite:testRenderId2OtherParams()
 +
    self:assertStringContains(inTagAttr('font%-family:serif;', 'th', 'style'), renderId2{id2OtherParams = 'font-family:serif'})
 +
end
 +
 +
function suite:testRenderId2()
 +
    self:assertStringContains('<th[^>]->Id2 text.</th>', renderId2{id2 = 'Id2 text.'})
 
end
 
end
  
 
return suite
 
return suite

Revision as of 10:22, 9 January 2014

Documentation for this module may be created at Module:Userbox/testcases/doc

-- Unit tests for [[Module:Userbox]]. Click talk page to run tests.
local ubx = require('Module:Userbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

local userbox = ubx.userbox
local userbox2 = ubx['userbox-2']
local userboxr = ubx['userbox-r']
local render = ubx.render

--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------

local function inTag(s, tag)
	-- Makes a pattern that tests whether s is inside a given html tag.
	return '<' .. tag .. ' [^>]-' .. s
end

local function inAttr(s, attr)
	-- Makes a pattern that tests whether s is inside a given html attribute.
	return attr .. '="[^"]-' .. s
end

local function inTagAttr(s, tag, attr)
	-- Makes a pattern that tests whether s is inside a given html tag
	-- and a given html attribute.
	return inTag(inAttr(s, attr), tag)
end

local function renderId(data)
	data.showId = true
	return render(data)
end

local function renderId2(data)
	data.showId2 = true
	return render(data)
end

--------------------------------------------------------------------------------
-- Render tests
--------------------------------------------------------------------------------

function suite:testRenderFloat()
    self:assertStringContains(inTagAttr('float:right;', 'div', 'style'), render{float = 'right'})
end

function suite:testRenderBorder()
    self:assertStringContains(inTagAttr('border:5px', 'div', 'style'), render{borderWidth = '5px'})
    self:assertStringContains('solid red', render{borderColor='red'})
end

function suite:testRenderMargin()
    self:assertStringContains(inTagAttr('margin:1px;', 'div', 'style'), render{})
end

function suite:testRenderWidth()
    self:assertStringContains(inTagAttr('width:120px;', 'div', 'style'), render{width = '120px'})
end

function suite:testRenderUserboxClass()
    self:assertStringContains(inTagAttr('wikipediauserbox', 'div', 'class'), render{})
end

function suite:testRenderBodyClass()
    self:assertStringContains(inTagAttr('foobar', 'div', 'class'), render{bodyClass = 'foobar'})
end

function suite:testRenderBorderCollapse()
    self:assertStringContains(inTagAttr('border-collapse:collapse;', 'table', 'style'), render{})
end

function suite:testRenderBorderCollapse()
    self:assertStringContains(inTagAttr('width:120px;', 'table', 'style'), render{width = '120px'})
end

function suite:testRenderTableWidth()
    self:assertStringContains(inTagAttr('width:120px;', 'table', 'style'), render{width = '120px'})
end

function suite:testRenderMarginBottom()
    self:assertStringContains(inTagAttr('margin%-bottom:0;', 'table', 'style'), render{})
end

function suite:testRenderBackgroundColor()
    self:assertStringContains(inTagAttr('background:red;', 'table', 'style'), render{backgroundColor = 'red'})
end

--------------------------------------------------------------------------------
-- Render id tests
--------------------------------------------------------------------------------

function suite:testRenderIdBorder()
    self:assertStringContains(inTagAttr('border:0;', 'th', 'style'), renderId{})
end

function suite:testRenderIdWidth()
    self:assertStringContains(inTagAttr('width:50px;', 'th', 'style'), renderId{idWidth = '50px'})
end

function suite:testRenderIdHeight()
    self:assertStringContains(inTagAttr('height:50px;', 'th', 'style'), renderId{idHeight = '50px'})
end

function suite:testRenderIdBackgroundColor()
    self:assertStringContains(inTagAttr('background:red;', 'th', 'style'), renderId{idBackgroundColor = 'red'})
end

function suite:testRenderIdTextAlign()
    self:assertStringContains(inTagAttr('text%-align:center;', 'th', 'style'), renderId{idTextAlign = 'center'})
end

function suite:testRenderIdFontSize()
    self:assertStringContains(inTagAttr('font%-size:16pt;', 'th', 'style'), renderId{idFontSize = '16pt'})
end

function suite:testRenderIdColor()
    self:assertStringContains(inTagAttr('color:blue;', 'th', 'style'), renderId{idColor = 'blue'})
end

function suite:testRenderIdPadding()
    self:assertStringContains(inTagAttr('padding:3px;', 'th', 'style'), renderId{idPadding = '3px'})
end

function suite:testRenderIdLineHeight()
    self:assertStringContains(inTagAttr('line%-height:1.5em;', 'th', 'style'), renderId{idLineHeight = '1.5em'})
end

function suite:testRenderIdVerticalAlign()
    self:assertStringContains(inTagAttr('vertical%-align:middle;', 'th', 'style'), renderId{})
end

function suite:testRenderIdOtherParams()
    self:assertStringContains(inTagAttr('font%-family:serif;', 'th', 'style'), renderId{idOtherParams = 'font-family:serif'})
end

function suite:testRenderIdClass()
    self:assertStringContains(inTagAttr('foobar', 'th', 'class'), renderId{idClass = 'foobar'})
end

function suite:testRenderId()
    self:assertStringContains('<th[^>]->Id text.</th>', renderId{id = 'Id text.'})
end

--------------------------------------------------------------------------------
-- Render id2 tests
--------------------------------------------------------------------------------

function suite:testRenderId2Border()
    self:assertStringContains(inTagAttr('border:0;', 'th', 'style'), renderId2{})
end

function suite:testRenderId2Width()
    self:assertStringContains(inTagAttr('width:50px;', 'th', 'style'), renderId2{id2Width = '50px'})
end

function suite:testRenderId2Height()
    self:assertStringContains(inTagAttr('height:50px;', 'th', 'style'), renderId2{id2Height = '50px'})
end

function suite:testRenderId2BackgroundColor()
    self:assertStringContains(inTagAttr('background:red;', 'th', 'style'), renderId2{id2BackgroundColor = 'red'})
end

function suite:testRenderId2TextAlign()
    self:assertStringContains(inTagAttr('text%-align:center;', 'th', 'style'), renderId2{id2TextAlign = 'center'})
end

function suite:testRenderId2FontSize()
    self:assertStringContains(inTagAttr('font%-size:16pt;', 'th', 'style'), renderId2{id2FontSize = '16pt'})
end

function suite:testRenderId2Color()
    self:assertStringContains(inTagAttr('color:blue;', 'th', 'style'), renderId2{id2Color = 'blue'})
end

function suite:testRenderId2Padding()
    self:assertStringContains(inTagAttr('padding:3px;', 'th', 'style'), renderId2{id2Padding = '3px'})
end

function suite:testRenderId2LineHeight()
    self:assertStringContains(inTagAttr('line%-height:1.5em;', 'th', 'style'), renderId2{id2LineHeight = '1.5em'})
end

function suite:testRenderId2VerticalAlign()
    self:assertStringContains(inTagAttr('vertical%-align:middle;', 'th', 'style'), renderId2{})
end

function suite:testRenderId2OtherParams()
    self:assertStringContains(inTagAttr('font%-family:serif;', 'th', 'style'), renderId2{id2OtherParams = 'font-family:serif'})
end

function suite:testRenderId2()
    self:assertStringContains('<th[^>]->Id2 text.</th>', renderId2{id2 = 'Id2 text.'})
end

return suite