Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Userbox/testcases
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
-------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------- -- Unit tests for [[Module:Userbox/sandbox]]. 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 local categories = ubx.categories -------------------------------------------------------------------------------- -- 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', 'td', 'style'), renderId{}) end function suite:testRenderIdWidth() self:assertStringContains(inTagAttr('width:50px', 'td', 'style'), renderId{idWidth = '50px'}) end function suite:testRenderIdHeight() self:assertStringContains(inTagAttr('height:50px', 'td', 'style'), renderId{idHeight = '50px'}) end function suite:testRenderIdBackgroundColor() self:assertStringContains(inTagAttr('background:red', 'td', 'style'), renderId{idBackgroundColor = 'red'}) end function suite:testRenderIdTextAlign() self:assertStringContains(inTagAttr('text%-align:center', 'td', 'style'), renderId{idTextAlign = 'center'}) end function suite:testRenderIdFontSize() self:assertStringContains(inTagAttr('font%-size:16pt', 'td', 'style'), renderId{idFontSize = '16pt'}) end function suite:testRenderIdColor() self:assertStringContains(inTagAttr('color:blue', 'td', 'style'), renderId{idColor = 'blue'}) end function suite:testRenderIdPadding() self:assertStringContains(inTagAttr('padding:3px', 'td', 'style'), renderId{idPadding = '3px'}) end function suite:testRenderIdLineHeight() self:assertStringContains(inTagAttr('line%-height:1.5em', 'td', 'style'), renderId{idLineHeight = '1.5em'}) end function suite:testRenderIdVerticalAlign() self:assertStringContains(inTagAttr('vertical%-align:middle', 'td', 'style'), renderId{}) end function suite:testRenderIdOtherParams() self:assertStringContains(inTagAttr('font%-family:serif', 'td', 'style'), renderId{idOtherParams = 'font-family:serif'}) end function suite:testRenderIdClass() self:assertStringContains(inTagAttr('foobar', 'td', 'class'), renderId{idClass = 'foobar'}) end function suite:testRenderId() self:assertStringContains('<td[^>]->Id text.</td>', renderId{id = 'Id text.'}) end -------------------------------------------------------------------------------- -- Render info tests -------------------------------------------------------------------------------- function suite:testRenderInfoBorder() self:assertStringContains(inTagAttr('border:0', 'td', 'style'), render{}) end function suite:testRenderInfoTextAlign() self:assertStringContains(inTagAttr('text%-align:center', 'td', 'style'), render{infoTextAlign = 'center'}) end function suite:testRenderInfoFontSize() self:assertStringContains(inTagAttr('font%-size:16pt', 'td', 'style'), render{infoFontSize = '16pt'}) end function suite:testRenderInfoPadding() self:assertStringContains(inTagAttr('padding:3px', 'td', 'style'), render{infoPadding = '3px'}) end function suite:testRenderInfoHeight() self:assertStringContains(inTagAttr('height:50px', 'td', 'style'), render{infoHeight = '50px'}) end function suite:testRenderInfoLineHeight() self:assertStringContains(inTagAttr('line%-height:1.5em', 'td', 'style'), render{infoLineHeight = '1.5em'}) end function suite:testRenderInfoColor() self:assertStringContains(inTagAttr('color:blue', 'td', 'style'), render{infoColor = 'blue'}) end function suite:testRenderInfoVerticalAlign() self:assertStringContains(inTagAttr('vertical%-align:middle', 'td', 'style'), render{}) end function suite:testRenderInfoOtherParams() self:assertStringContains(inTagAttr('font%-family:serif', 'td', 'style'), render{infoOtherParams = 'font-family:serif'}) end function suite:testRenderInfoClass() self:assertStringContains(inTagAttr('foobar', 'td', 'class'), render{infoClass = 'foobar'}) end function suite:testRenderInfo() self:assertStringContains('<td[^>]->Info text.</td>', render{info = 'Info text.'}) end -------------------------------------------------------------------------------- -- Render id2 tests -------------------------------------------------------------------------------- function suite:testRenderId2Border() self:assertStringContains(inTagAttr('border:0', 'td', 'style'), renderId2{}) end function suite:testRenderId2Width() self:assertStringContains(inTagAttr('width:50px', 'td', 'style'), renderId2{id2Width = '50px'}) end function suite:testRenderId2Height() self:assertStringContains(inTagAttr('height:50px', 'td', 'style'), renderId2{id2Height = '50px'}) end function suite:testRenderId2BackgroundColor() self:assertStringContains(inTagAttr('background:red', 'td', 'style'), renderId2{id2BackgroundColor = 'red'}) end function suite:testRenderId2TextAlign() self:assertStringContains(inTagAttr('text%-align:center', 'td', 'style'), renderId2{id2TextAlign = 'center'}) end function suite:testRenderId2FontSize() self:assertStringContains(inTagAttr('font%-size:16pt', 'td', 'style'), renderId2{id2FontSize = '16pt'}) end function suite:testRenderId2Color() self:assertStringContains(inTagAttr('color:blue', 'td', 'style'), renderId2{id2Color = 'blue'}) end function suite:testRenderId2Padding() self:assertStringContains(inTagAttr('padding:3px', 'td', 'style'), renderId2{id2Padding = '3px'}) end function suite:testRenderId2LineHeight() self:assertStringContains(inTagAttr('line%-height:1.5em', 'td', 'style'), renderId2{id2LineHeight = '1.5em'}) end function suite:testRenderId2VerticalAlign() self:assertStringContains(inTagAttr('vertical%-align:middle', 'td', 'style'), renderId2{}) end function suite:testRenderId2OtherParams() self:assertStringContains(inTagAttr('font%-family:serif', 'td', 'style'), renderId2{id2OtherParams = 'font-family:serif'}) end function suite:testRenderId2() self:assertStringContains('<td[^>]->Id2 text.</td>', renderId2{id2 = 'Id2 text.'}) end -------------------------------------------------------------------------------- -- Userbox div and table tag tests -------------------------------------------------------------------------------- function suite:testUserboxFloat() self:assertEquals('left', userbox{}.float) self:assertEquals('right', userbox{float = 'right'}.float) end function suite:testUserboxBorderWidth() self:assertEquals('1px', userbox{}.borderWidth) self:assertEquals('2px', userbox{['border-width'] = '2'}.borderWidth) self:assertEquals('3px', userbox{['border-s'] = '3'}.borderWidth) end function suite:testUserboxBorderColor() self:assertEquals('#999', userbox{}.borderColor) self:assertEquals('red', userbox{['border-color'] = 'red'}.borderColor) self:assertEquals('yellow', userbox{[1] = 'yellow'}.borderColor) self:assertEquals('blue', userbox{['border-c'] = 'blue'}.borderColor) self:assertEquals('green', userbox{['id-c'] = 'green'}.borderColor) end function suite:testUserboxWidth() self:assertEquals('238px', userbox{}.width) self:assertEquals('236px', userbox{['border-s'] = '2'}.width) end function suite:testUserboxBodyClass() self:assertEquals(nil, userbox{}.bodyClass) self:assertEquals('foobar', userbox{bodyclass = 'foobar'}.bodyClass) end function suite:testUserboxBackgroundColor() self:assertEquals('#eee', userbox{}.backgroundColor) self:assertEquals('red', userbox{['info-background'] = 'red'}.backgroundColor) self:assertEquals('yellow', userbox{[2] = 'yellow'}.backgroundColor) self:assertEquals('blue', userbox{['info-c'] = 'blue'}.backgroundColor) end -------------------------------------------------------------------------------- -- Userbox id tests -------------------------------------------------------------------------------- function suite:testUserboxId() self:assertEquals(nil, userbox{}.id) self:assertEquals('Id text.', userbox{logo = 'Id text.'}.id) self:assertEquals('More id text.', userbox{[3] = 'More id text.'}.id) self:assertEquals('Even more id text.', userbox{id = 'Even more id text.'}.id) end function suite:testUserboxShowId() self:assertEquals(true, userbox{id = 'Id text.'}.showId) self:assertEquals(false, userbox{}.showId) end function suite:testUserboxIdWidth() self:assertEquals('45px', userbox{}.idWidth) self:assertEquals('50px', userbox{['logo-width'] = '50'}.idWidth) self:assertEquals('55px', userbox{['id-w'] = '55'}.idWidth) end function suite:testUserboxIdHeight() self:assertEquals('45px', userbox{}.idHeight) self:assertEquals('50px', userbox{['logo-height'] = '50'}.idHeight) self:assertEquals('55px', userbox{['id-h'] = '55'}.idHeight) end function suite:testUserboxIdBackgroundColor() self:assertEquals('#ddd', userbox{}.idBackgroundColor) self:assertEquals('red', userbox{['logo-background'] = 'red'}.idBackgroundColor) self:assertEquals('yellow', userbox{[1] = 'yellow'}.idBackgroundColor) self:assertEquals('blue', userbox{['id-c'] = 'blue'}.idBackgroundColor) end function suite:testUserboxIdTextAlign() self:assertEquals('center', userbox{}.idTextAlign) self:assertEquals('right', userbox{['id-a'] = 'right'}.idTextAlign) end function suite:testUserboxIdFontSize() self:assertEquals('14pt', userbox{}.idFontSize) self:assertEquals('16pt', userbox{['logo-size'] = '16'}.idFontSize) self:assertEquals('18pt', userbox{[5] = '18'}.idFontSize) self:assertEquals('20pt', userbox{['id-s'] = '20'}.idFontSize) end function suite:testUserboxIdColor() self:assertEquals('black', userbox{}.idColor) self:assertEquals('red', userbox{['logo-color'] = 'red'}.idColor) self:assertEquals('blue', userbox{['id-fc'] = 'blue'}.idColor) end function suite:testUserboxIdPadding() self:assertEquals('0 1px 0 0', userbox{}.idPadding) self:assertEquals('1px 1px 1px 1px', userbox{['logo-padding'] = '1px 1px 1px 1px'}.idPadding) self:assertEquals('2px 2px 2px 2px', userbox{['id-p'] = '2px 2px 2px 2px'}.idPadding) end function suite:testUserboxIdLineHeight() self:assertEquals('1.25em', userbox{}.idLineHeight) self:assertEquals('1.5em', userbox{['logo-line-height'] = '1.5em'}.idLineHeight) self:assertEquals('1.75em', userbox{['id-lh'] = '1.75em'}.idLineHeight) end function suite:testUserboxIdOtherParams() self:assertEquals(nil, userbox{}.idOtherParams) self:assertEquals('font-family:serif', userbox{['logo-other-param'] = 'font-family:serif'}.idOtherParams) self:assertEquals('font-family:times', userbox{['id-op'] = 'font-family:times'}.idOtherParams) end function suite:testUserboxIdClass() self:assertEquals(nil, userbox{}.idClass) self:assertEquals('foobar', userbox{['id-class'] = 'foobar'}.idClass) end -------------------------------------------------------------------------------- -- Userbox info tests -------------------------------------------------------------------------------- function suite:testUserboxInfo() self:assertEquals("<code>{{{info}}}</code>", userbox{}.info) self:assertEquals('Info text.', userbox{info = 'Info text.'}.info) self:assertEquals('More info text.', userbox{[4] = 'More info text.'}.info) end function suite:testUserboxInfoTextAlign() self:assertEquals('left', userbox{}.infoTextAlign) self:assertEquals('right', userbox{['info-a'] = 'right'}.infoTextAlign) end function suite:testUserboxInfoFontSize() self:assertEquals('8pt', userbox{}.infoFontSize) self:assertEquals('10pt', userbox{['info-size'] = '10'}.infoFontSize) self:assertEquals('12pt', userbox{['info-s'] = '12'}.infoFontSize) end function suite:testUserboxInfoHeight() self:assertEquals('45px', userbox{}.infoHeight) self:assertEquals('50px', userbox{['logo-height'] = '50'}.infoHeight) self:assertEquals('55px', userbox{['id-h'] = '55'}.infoHeight) end function suite:testUserboxInfoPadding() self:assertEquals('0 4px 0 4px', userbox{}.infoPadding) self:assertEquals('1px 1px 1px 1px', userbox{['info-padding'] = '1px 1px 1px 1px'}.infoPadding) self:assertEquals('2px 2px 2px 2px', userbox{['info-p'] = '2px 2px 2px 2px'}.infoPadding) end function suite:testUserboxInfoLineHeight() self:assertEquals('1.25em', userbox{}.infoLineHeight) self:assertEquals('1.5em', userbox{['info-line-height'] = '1.5em'}.infoLineHeight) self:assertEquals('1.75em', userbox{['info-lh'] = '1.75em'}.infoLineHeight) end function suite:testUserboxInfoColor() self:assertEquals('black', userbox{}.infoColor) self:assertEquals('red', userbox{['info-color'] = 'red'}.infoColor) self:assertEquals('blue', userbox{['info-fc'] = 'blue'}.infoColor) end function suite:testUserboxInfoOtherParams() self:assertEquals(nil, userbox{}.infoOtherParams) self:assertEquals('font-family:serif', userbox{['info-other-param'] = 'font-family:serif'}.infoOtherParams) self:assertEquals('font-family:times', userbox{['info-op'] = 'font-family:times'}.infoOtherParams) end function suite:testUserboxInfoClass() self:assertEquals(nil, userbox{}.infoClass) self:assertEquals('foobar', userbox{['info-class'] = 'foobar'}.infoClass) end -------------------------------------------------------------------------------- -- Userbox2 div and table tag tests -------------------------------------------------------------------------------- function suite:testUserbox2Float() self:assertEquals('left', userbox2{}.float) self:assertEquals('right', userbox2{float = 'right'}.float) end function suite:testUserbox2BorderWidth() self:assertEquals('1px', userbox2{}.borderWidth) self:assertEquals('2px', userbox2{[9] = '2'}.borderWidth) self:assertEquals('3px', userbox2{['border-s'] = '3'}.borderWidth) end function suite:testUserbox2BorderColor() self:assertEquals('#999999', userbox2{}.borderColor) self:assertEquals('red', userbox2{[1] = 'red'}.borderColor) self:assertEquals('blue', userbox2{['border-c'] = 'blue'}.borderColor) self:assertEquals('green', userbox2{['id1-c'] = 'green'}.borderColor) end function suite:testUserbox2Width() self:assertEquals('238px', userbox2{}.width) end function suite:testUserbox2BodyClass() self:assertEquals(nil, userbox2{}.bodyClass) self:assertEquals('foobar', userbox2{bodyclass = 'foobar'}.bodyClass) end function suite:testUserbox2BackgroundColor() self:assertEquals('#eeeeee', userbox2{}.backgroundColor) self:assertEquals('yellow', userbox2{[2] = 'yellow'}.backgroundColor) self:assertEquals('blue', userbox2{['info-c'] = 'blue'}.backgroundColor) end -------------------------------------------------------------------------------- -- Userbox2 id tests -------------------------------------------------------------------------------- function suite:testUserbox2Id() self:assertEquals('id1', userbox2{}.id) self:assertEquals('Id text.', userbox2{logo = 'Id text.'}.id) self:assertEquals('More id text.', userbox2{[3] = 'More id text.'}.id) self:assertEquals('Even more id text.', userbox2{id1 = 'Even more id text.'}.id) end function suite:testUserbox2ShowId() self:assertEquals(true, userbox2{}.showId) end function suite:testUserbox2IdWidth() self:assertEquals('45px', userbox2{}.idWidth) self:assertEquals('50px', userbox2{['id1-w'] = '50'}.idWidth) end function suite:testUserbox2IdHeight() self:assertEquals('45px', userbox2{}.idHeight) self:assertEquals('50px', userbox2{['id-h'] = '50'}.idHeight) end function suite:testUserbox2IdBackgroundColor() self:assertEquals('#dddddd', userbox2{}.idBackgroundColor) self:assertEquals('yellow', userbox2{[1] = 'yellow'}.idBackgroundColor) self:assertEquals('blue', userbox2{['id1-c'] = 'blue'}.idBackgroundColor) end function suite:testUserbox2IdTextAlign() self:assertEquals('center', userbox2{}.idTextAlign) end function suite:testUserbox2IdFontSize() self:assertEquals('14pt', userbox2{}.idFontSize) self:assertEquals('16pt', userbox2{['id1-s'] = '16'}.idFontSize) end function suite:testUserbox2IdLineHeight() self:assertEquals('1.25em', userbox2{}.idLineHeight) self:assertEquals('1.5em', userbox2{['id1-lh'] = '1.5em'}.idLineHeight) end function suite:testUserbox2IdColor() self:assertEquals('black', userbox2{}.idColor) self:assertEquals('blue', userbox2{['id1-fc'] = 'blue'}.idColor) end function suite:testUserbox2IdPadding() self:assertEquals('0 1px 0 0', userbox2{}.idPadding) self:assertEquals('1px 1px 1px 1px', userbox2{['id1-p'] = '1px 1px 1px 1px'}.idPadding) end function suite:testUserbox2IdOtherParams() self:assertEquals(nil, userbox2{}.idOtherParams) self:assertEquals('font-family:times', userbox2{['id1-op'] = 'font-family:times'}.idOtherParams) end -------------------------------------------------------------------------------- -- Userbox2 info tests -------------------------------------------------------------------------------- function suite:testUserbox2Info() self:assertEquals("<code>{{{info}}}</code>", userbox2{}.info) self:assertEquals('Info text.', userbox2{[4] = 'Info text.'}.info) self:assertEquals('More info text.', userbox2{info = 'More info text.'}.info) end function suite:testUserbox2InfoTextAlign() self:assertEquals('left', userbox2{}.infoTextAlign) self:assertEquals('right', userbox2{['info-a'] = 'right'}.infoTextAlign) end function suite:testUserbox2InfoFontSize() self:assertEquals('8pt', userbox2{}.infoFontSize) self:assertEquals('10pt', userbox2{['info-s'] = '10'}.infoFontSize) end function suite:testUserbox2InfoColor() self:assertEquals('black', userbox2{}.infoColor) self:assertEquals('red', userbox2{[8] = 'red'}.infoColor) self:assertEquals('blue', userbox2{['info-fc'] = 'blue'}.infoColor) end function suite:testUserbox2InfoPadding() self:assertEquals('0 4px 0 4px', userbox2{}.infoPadding) self:assertEquals('1px 1px 1px 1px', userbox2{['info-p'] = '1px 1px 1px 1px'}.infoPadding) end function suite:testUserbox2InfoLineHeight() self:assertEquals('1.25em', userbox2{}.infoLineHeight) self:assertEquals('1.5em', userbox2{['info-lh'] = '1.5em'}.infoLineHeight) end function suite:testUserbox2InfoOtherParams() self:assertEquals(nil, userbox2{}.infoOtherParams) self:assertEquals('font-family:times', userbox2{['info-op'] = 'font-family:times'}.infoOtherParams) end -------------------------------------------------------------------------------- -- Userbox2 id2 tests -------------------------------------------------------------------------------- function suite:testUserbox2Id2() self:assertEquals('id2', userbox2{}.id2) self:assertEquals('Id2 text.', userbox2{logo = 'Id2 text.'}.id2) self:assertEquals('More id2 text.', userbox2{[5] = 'More id2 text.'}.id2) self:assertEquals('Even more id2 text.', userbox2{id2 = 'Even more id2 text.'}.id2) end function suite:testUserbox2ShowId2() self:assertEquals(true, userbox2{}.showId2) end function suite:testUserbox2Id2Width() self:assertEquals('45px', userbox2{}.id2Width) self:assertEquals('50px', userbox2{['id2-w'] = '50'}.id2Width) end function suite:testUserbox2Id2Height() self:assertEquals('45px', userbox2{}.id2Height) self:assertEquals('50px', userbox2{['id-h'] = '50'}.id2Height) end function suite:testUserbox2Id2BackgroundColor() self:assertEquals('#dddddd', userbox2{}.id2BackgroundColor) self:assertEquals('yellow', userbox2{[7] = 'yellow'}.id2BackgroundColor) self:assertEquals('blue', userbox2{['id2-c'] = 'blue'}.id2BackgroundColor) self:assertEquals('red', userbox2{[1] = 'red'}.id2BackgroundColor) end function suite:testUserbox2Id2TextAlign() self:assertEquals('center', userbox2{}.id2TextAlign) end function suite:testUserbox2Id2FontSize() self:assertEquals('14pt', userbox2{}.id2FontSize) self:assertEquals('16pt', userbox2{['id2-s'] = '16'}.id2FontSize) end function suite:testUserbox2Id2LineHeight() self:assertEquals('1.25em', userbox2{}.id2LineHeight) self:assertEquals('1.5em', userbox2{['id2-lh'] = '1.5em'}.id2LineHeight) end function suite:testUserbox2Id2Color() self:assertEquals('black', userbox2{}.id2Color) self:assertEquals('blue', userbox2{['id2-fc'] = 'blue'}.id2Color) end function suite:testUserbox2Id2Padding() self:assertEquals('0 0 0 1px', userbox2{}.id2Padding) self:assertEquals('1px 1px 1px 1px', userbox2{['id2-p'] = '1px 1px 1px 1px'}.id2Padding) end function suite:testUserbox2Id2OtherParams() self:assertEquals(nil, userbox2{}.id2OtherParams) self:assertEquals('font-family:times', userbox2{['id2-op'] = 'font-family:times'}.id2OtherParams) end -------------------------------------------------------------------------------- -- Userboxr div and table tag tests -------------------------------------------------------------------------------- function suite:testUserboxrFloat() self:assertEquals('left', userboxr{}.float) self:assertEquals('right', userboxr{float = 'right'}.float) end function suite:testUserboxrBorderWidth() self:assertEquals('1px', userboxr{}.borderWidth) self:assertEquals('2px', userboxr{['border-width'] = '2'}.borderWidth) self:assertEquals('3px', userboxr{['border-s'] = '3'}.borderWidth) end function suite:testUserboxrBorderColor() self:assertEquals('#999', userboxr{}.borderColor) self:assertEquals('red', userboxr{['border-color'] = 'red'}.borderColor) self:assertEquals('yellow', userboxr{[1] = 'yellow'}.borderColor) self:assertEquals('blue', userboxr{['border-c'] = 'blue'}.borderColor) self:assertEquals('green', userboxr{['id-c'] = 'green'}.borderColor) end function suite:testUserboxrWidth() self:assertEquals('238px', userboxr{}.width) end function suite:testUserboxrBodyClass() self:assertEquals(nil, userboxr{}.bodyClass) self:assertEquals('foobar', userboxr{bodyclass = 'foobar'}.bodyClass) end function suite:testUserboxrBackgroundColor() self:assertEquals('#eee', userboxr{}.backgroundColor) self:assertEquals('red', userboxr{['info-background'] = 'red'}.backgroundColor) self:assertEquals('yellow', userboxr{[2] = 'yellow'}.backgroundColor) self:assertEquals('blue', userboxr{['info-c'] = 'blue'}.backgroundColor) end -------------------------------------------------------------------------------- -- Userboxr info tests -------------------------------------------------------------------------------- function suite:testUserboxrInfo() self:assertEquals("<code>{{{info}}}</code>", userboxr{}.info) self:assertEquals('Info text.', userboxr{info = 'Info text.'}.info) self:assertEquals('More info text.', userboxr{[4] = 'More info text.'}.info) end function suite:testUserboxrInfoTextAlign() self:assertEquals('left', userboxr{}.infoTextAlign) self:assertEquals('right', userboxr{['info-align'] = 'right'}.infoTextAlign) self:assertEquals('center', userboxr{['info-a'] = 'center'}.infoTextAlign) end function suite:testUserboxrInfoFontSize() self:assertEquals('8pt', userboxr{}.infoFontSize) self:assertEquals('10pt', userboxr{['info-size'] = '10'}.infoFontSize) self:assertEquals('12pt', userboxr{['info-s'] = '12'}.infoFontSize) end function suite:testUserboxrInfoPadding() self:assertEquals('0 4px 0 4px', userboxr{}.infoPadding) self:assertEquals('1px 1px 1px 1px', userboxr{['info-padding'] = '1px 1px 1px 1px'}.infoPadding) self:assertEquals('2px 2px 2px 2px', userboxr{['info-p'] = '2px 2px 2px 2px'}.infoPadding) end function suite:testUserboxrInfoLineHeight() self:assertEquals('1.25em', userboxr{}.infoLineHeight) self:assertEquals('1.5em', userboxr{['info-line-height'] = '1.5em'}.infoLineHeight) self:assertEquals('1.75em', userboxr{['info-lh'] = '1.75em'}.infoLineHeight) end function suite:testUserboxrInfoColor() self:assertEquals('black', userboxr{}.infoColor) self:assertEquals('red', userboxr{['info-color'] = 'red'}.infoColor) self:assertEquals('blue', userboxr{['info-fc'] = 'blue'}.infoColor) end function suite:testUserboxrInfoOtherParams() self:assertEquals(nil, userboxr{}.infoOtherParams) self:assertEquals('font-family:serif', userboxr{['info-other-param'] = 'font-family:serif'}.infoOtherParams) self:assertEquals('font-family:times', userboxr{['info-op'] = 'font-family:times'}.infoOtherParams) end -------------------------------------------------------------------------------- -- Userboxr id2 tests -------------------------------------------------------------------------------- function suite:testUserboxrId2() self:assertEquals('id', userboxr{}.id2) self:assertEquals('Id text.', userboxr{logo = 'Id text.'}.id2) self:assertEquals('More id text.', userboxr{[3] = 'More id text.'}.id2) self:assertEquals('Even more id text.', userboxr{id = 'Even more id text.'}.id2) end function suite:testUserboxrShowId() self:assertEquals(true, userboxr{}.showId2) end function suite:testUserboxrId2Width() self:assertEquals('45px', userboxr{}.id2Width) self:assertEquals('50px', userboxr{['logo-width'] = '50'}.id2Width) self:assertEquals('55px', userboxr{['id-w'] = '55'}.id2Width) end function suite:testUserboxrId2Height() self:assertEquals('45px', userboxr{}.id2Height) self:assertEquals('50px', userboxr{['logo-height'] = '50'}.id2Height) self:assertEquals('55px', userboxr{['id-h'] = '55'}.id2Height) end function suite:testUserboxrId2BackgroundColor() self:assertEquals('#ddd', userboxr{}.id2BackgroundColor) self:assertEquals('red', userboxr{['logo-background'] = 'red'}.id2BackgroundColor) self:assertEquals('yellow', userboxr{[1] = 'yellow'}.id2BackgroundColor) self:assertEquals('blue', userboxr{['id-c'] = 'blue'}.id2BackgroundColor) end function suite:testUserboxrId2TextAlign() self:assertEquals('center', userboxr{}.id2TextAlign) self:assertEquals('right', userboxr{['id-a'] = 'right'}.id2TextAlign) end function suite:testUserboxrId2FontSize() self:assertEquals('14pt', userboxr{}.id2FontSize) self:assertEquals('16pt', userboxr{['logo-size'] = '16'}.id2FontSize) self:assertEquals('18pt', userboxr{[5] = '18'}.id2FontSize) self:assertEquals('20pt', userboxr{['id-s'] = '20'}.id2FontSize) end function suite:testUserboxrId2Color() self:assertEquals('black', userboxr{}.id2Color) self:assertEquals('red', userboxr{['logo-color'] = 'red'}.id2Color) self:assertEquals('blue', userboxr{['id-fc'] = 'blue'}.id2Color) end function suite:testUserboxrId2Padding() self:assertEquals('0 0 0 1px', userboxr{}.id2Padding) self:assertEquals('1px 1px 1px 1px', userboxr{['logo-padding'] = '1px 1px 1px 1px'}.id2Padding) self:assertEquals('2px 2px 2px 2px', userboxr{['id-p'] = '2px 2px 2px 2px'}.id2Padding) end function suite:testUserboxrId2LineHeight() self:assertEquals('1.25em', userboxr{}.id2LineHeight) self:assertEquals('1.5em', userboxr{['logo-line-height'] = '1.5em'}.id2LineHeight) self:assertEquals('1.75em', userboxr{['id-lh'] = '1.75em'}.id2LineHeight) end function suite:testUserboxrId2OtherParams() self:assertEquals(nil, userboxr{}.id2OtherParams) self:assertEquals('font-family:serif', userboxr{['logo-other-param'] = 'font-family:serif'}.id2OtherParams) self:assertEquals('font-family:times', userboxr{['id-op'] = 'font-family:times'}.id2OtherParams) end -------------------------------------------------------------------------------- -- Categories tests -------------------------------------------------------------------------------- local function mainspaceCats(args) return categories(args, 'Foo') end local function templateCats(args) return categories(args, 'Template:Edit protected') end local function userCats(args) return categories(args, 'User:Example') end local function templateSubpageCats(args) return categories(args, 'Template:Edit protected/sandbox') end local function userSubpageCats(args) return categories(args, 'User:Example/Lipsum') end local userBasepage = 'Example' local templateBasepage = 'Edit protected' function suite:testUserCategories() self:assertEquals('[[Category:Foobar]]', userCats{usercategory = 'Foobar'}) self:assertEquals('[[Category:Foobar2]]', userCats{usercategory2 = 'Foobar2'}) self:assertEquals('[[Category:Foobar3]]', userCats{usercategory3 = 'Foobar3'}) end function suite:testTemplateCategories() self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar'}) self:assertEquals('[[Category:Foobar2| ' .. templateBasepage .. ']]', templateCats{usercategory2 = 'Foobar2'}) self:assertEquals('[[Category:Foobar3| ' .. templateBasepage .. ']]', templateCats{usercategory3 = 'Foobar3'}) end function suite:testMultipleUserCategories() self:assertEquals( '[[Category:Foobar]][[Category:Foobar2]][[Category:Foobar3]]', userCats{usercategory = 'Foobar', usercategory2 = 'Foobar2', usercategory3 = 'Foobar3'} ) end function suite:testMultipleTemplateCategories() self:assertEquals( '[[Category:Foobar| ' .. templateBasepage .. ']]' .. '[[Category:Foobar2| ' .. templateBasepage .. ']]' .. '[[Category:Foobar3| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar', usercategory2 = 'Foobar2', usercategory3 = 'Foobar3'} ) end function suite:testNocat() self:assertEquals(nil, userCats{nocat = 'true', usercategory = 'Foobar'}) self:assertEquals(nil, templateCats{nocat = 'true', usercategory = 'Foobar'}) end function suite:testNoCategories() self:assertEquals('', userCats{}) self:assertEquals('', templateCats{}) end function suite:testUserCategorySubpages() self:assertEquals('[[Category:Foobar]]', userSubpageCats{usercategory = 'Foobar'}) self:assertEquals('[[Category:Foobar]]', userCats{usercategory = 'Foobar'}) end function suite:testTemplateCategorySubpages() self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateSubpageCats{usercategory = 'Foobar'}) self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar'}) end function suite:testUserCategoryNoSubpages() self:assertEquals(nil, userSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'}) self:assertEquals('[[Category:Foobar]]', userCats{usercategory = 'Foobar', notcatsubpages = 'yes'}) end function suite:testTemplateCategoryNoSubpages() self:assertEquals(nil, templateSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'}) self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar', notcatsubpages = 'yes'}) end function suite:assertHasContrastCat(args, title, yes) local oldTitle = mw.title.getCurrentTitle mw.title.getCurrentTitle = function() return mw.title.new(title) end local data = userbox(args) local output = render(data) mw.title.getCurrentTitle = oldTitle if yes then self:assertStringContains("[[Category:Userboxes with insufficient color contrast]]", output, true) else self:assertNotStringContains("[[Category:Userboxes with insufficient color contrast]]", output, true) end end function suite:testInfoContrastTemplate() self:assertHasContrastCat({info = 'info', ['info-color'] = '#000000', ['info-background'] = '#000001'}, "Template:Foo", true) self:assertHasContrastCat({info = 'info', ['info-color'] = '#000000', ['info-background'] = '#FFFFFF'}, "Template:Foo", false) end function suite:testInfoContrastUser() self:assertHasContrastCat({info = 'info', ['info-color'] = '#000000', ['info-background'] = '#000001'}, "User:Foo", false) self:assertHasContrastCat({info = 'info', ['info-color'] = '#000000', ['info-background'] = '#FFFFFF'}, "User:Foo", false) end function suite:testInfoContrastUserSubpage() self:assertHasContrastCat({info = 'info', ['info-color'] = '#000000', ['info-background'] = '#000001'}, "User:Foo/bar", true) self:assertHasContrastCat({info = 'info', ['info-color'] = '#000000', ['info-background'] = '#FFFFFF'}, "User:Foo/bar", false) end function suite:testIdContrastTemplate() self:assertHasContrastCat({info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#000001'}, "Template:Foo", true) self:assertHasContrastCat({info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#FFFFFF'}, "Template:Foo", false) end function suite:testIdContrastUser() self:assertHasContrastCat({info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#000001'}, "User:Foo", false) self:assertHasContrastCat({info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#FFFFFF'}, "User:Foo", false) end function suite:testIdContrastUserSubpage() self:assertHasContrastCat({info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#000001'}, "User:Foo/bar", true) self:assertHasContrastCat({info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#FFFFFF'}, "User:Foo/bar", false) end function suite:testMainspaceCategory() self:assertEquals('[[Category:Pages with templates in the wrong namespace]]', mainspaceCats{info = 'info'}) end return suite
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Userbox/testcases/doc
(
edit
)