Jump to content

Module:TemplateDataDoc/testcases

From mediawiki.org
Module documentation

Yes All tests passed.

Name Expected Actual
Yes testConvertFormatString
Yes testGetFormatParts
Yes testProcessJson


Yes All tests passed.

Name Expected Actual
Yes testConvertFormatString
Yes testGetFormatParts
Yes testProcessJson

-- Unit tests for [[Module:TemplateDataDoc]]. Click talk page to run tests.
require('strict')

local ScribuntoUnit = require( 'Module:ScribuntoUnit' )
local suite = ScribuntoUnit:new()
local libName = 'TemplateDataDoc'


-- Helper to run all tests using sandbox version of the library from the debug console. To run against main lib, use  =p.run()
function suite.runSandbox()
    local frame = mw.getCurrentFrame():newChild{ title='testcases', args={ module=libName .. '/sandbox', displayMode='log' } }
    return suite.run( frame )
end

-- Allow test runner to use the sandbox and the primary versions of the library with the same testcases
function suite:module()
    return require( 'Module:' .. ( self.frame and self.frame.args.module or libName ) )
end

------------------------------------------------------------------------
-- Test convertFormatString
------------------------------------------------------------------------
function suite:testConvertFormatString()
    local tt = self:module()

	local formatInline, flagInline = tt.convertFormatString( 'inline' )
    self:assertEquals( '{{_|_=_}}', formatInline )
    self:assertEquals( false, flagInline )

	local formatBlock, flagBlock = tt.convertFormatString( 'block' )
    self:assertEquals( '{{_\n| _ = _\n}}', formatBlock )
    self:assertEquals( true, flagBlock )

	local formatCustom, flagCustom = tt.convertFormatString( '{{ _ | _ = _ }}' )
    self:assertEquals( '{{ _ | _ = _ }}', formatCustom )
    self:assertEquals( false, flagCustom )
end

------------------------------------------------------------------------
-- Test getFormatParts
------------------------------------------------------------------------
function suite:testGetFormatParts()
    local tt = self:module()

	local flag1, start1, end1, paramKey1, paramValue1 = tt.getFormatParts( 'inline', 'Test' )
    self:assertEquals( false, flag1 )
    self:assertEquals( '{{Test', start1 )
    self:assertEquals( '}}', end1 )
    self:assertEquals( '|_=', paramKey1 )
    self:assertEquals( '_', paramValue1 )

	local flag2, start2, end2, paramKey2, paramValue2 = tt.getFormatParts( 'block', 'Test_2' )
    self:assertEquals( true, flag2 )
    self:assertEquals( '{{Test_2\n', start2 )
    self:assertEquals( '}}', end2 )
    self:assertEquals( '| _ =', paramKey2 )
    self:assertEquals( ' _\n', paramValue2 )

	local flag3, start3, end3, paramKey3, paramValue3 = tt.getFormatParts( '{{\n_\n|\n_\n=\n_\n}}\n', 'Test 3' )
    self:assertEquals( false, flag3 )
    self:assertEquals( '{{\nTest 3\n', start3 )
    self:assertEquals( '}}\n', end3 )
    self:assertEquals( '|\n_\n=', paramKey3 )
    self:assertEquals( '\n_\n', paramValue3 )
end

------------------------------------------------------------------------
-- Test processJson
------------------------------------------------------------------------
function suite:testProcessJson()
    local tt = self:module()

	local json = '{ "params": { "1": { "label": "1" }, "2": { "label": "2" } } }'
    local data = tt.processJson( json )
    self:assertEquals( 2, #data.params )
end

return suite