Difference between revisions of "Module:TNT/testcases"

From blackwiki
Jump to navigation Jump to search
test>Yurik
test>Yurik
(support multiple modules)
Line 1: Line 1:
local TNT = require('Module:TNT')
 
 
local ScribuntoUnit = require('Module:ScribuntoUnit')
 
local ScribuntoUnit = require('Module:ScribuntoUnit')
 
local p = ScribuntoUnit:new()
 
local p = ScribuntoUnit:new()
 +
 +
function p:module()
 +
return self.frame and self.frame.args.module or 'TNT'
 +
end
 +
 +
function p:invokeTNT(wikicode)
 +
return '{{#invoke:' .. p:module() .. '|' .. wikicode .. '}}'
 +
end
  
 
function p:test_msg()
 
function p:test_msg()
 
     -- dataset resolution
 
     -- dataset resolution
     self:assertResultEquals('text message', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text}}', 'msg00')
+
     self:assertResultEquals('text message', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text'), 'msg00')
     self:assertResultEquals('text message', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases|text}}', 'msg01')
+
     self:assertResultEquals('text message', p:invokeTNT('msg|I18n/Module:TNT/testcases|text'), 'msg01')
     self:assertResultEquals('text message', '{{#invoke:TNT|msg| I18n/Module:TNT/testcases.tab |text}}', 'msg02')
+
     self:assertResultEquals('text message', p:invokeTNT('msg| I18n/Module:TNT/testcases.tab |text'), 'msg02')
     self:assertResultEquals('text message', '{{#invoke:TNT|msg| I18n/Module:TNT/testcases |text}}', 'msg03')
+
     self:assertResultEquals('text message', p:invokeTNT('msg| I18n/Module:TNT/testcases |text'), 'msg03')
     self:assertResultEquals('text message', '{{#invoke:TNT|msg|Module:TNT/testcases.tab |text}}', 'msg04')
+
     self:assertResultEquals('text message', p:invokeTNT('msg|Module:TNT/testcases.tab |text'), 'msg04')
     self:assertResultEquals('text message', '{{#invoke:TNT|msg|Module:TNT/testcases |text}}', 'msg05')
+
     self:assertResultEquals('text message', p:invokeTNT('msg|Module:TNT/testcases |text'), 'msg05')
  
 
     -- spacing
 
     -- spacing
     self:assertResultEquals('text message', '{{ #invoke:TNT | msg | I18n/Module:TNT/testcases.tab | text }}', 'msg10')
+
     self:assertResultEquals('text message', p:invokeTNT(' msg | I18n/Module:TNT/testcases.tab | text '), 'msg10')
     self:assertResultEquals('text message', '{{ \n #invoke:TNT \n | \n msg \n | \n I18n/Module:TNT/testcases.tab \n | \n text \n }}', 'msg11')
+
     self:assertResultEquals('text message', p:invokeTNT(' \n msg \n | \n I18n/Module:TNT/testcases.tab \n | \n text \n '), 'msg11')
     self:assertResultEquals('текст', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text|lang=ru}}', 'msg12')
+
     self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text|lang=ru'), 'msg12')
     self:assertResultEquals('text message', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text|lang=fr}}', 'msg13')
+
     self:assertResultEquals('text message', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text|lang=fr'), 'msg13')
  
 
     -- 1 parameter
 
     -- 1 parameter
     self:assertResultEquals('text message a', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_1|a}}', 'msg20')
+
     self:assertResultEquals('text message a', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1|a'), 'msg20')
     self:assertResultEquals('text message a', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_1| a }}', 'msg21')
+
     self:assertResultEquals('text message a', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1| a '), 'msg21')
     self:assertResultEquals('text message a', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_1| \na \n }}', 'msg22')
+
     self:assertResultEquals('text message a', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1| \na \n '), 'msg22')
     self:assertResultEquals('текст абв', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_1|абв|lang=ru}}', 'msg23')
+
     self:assertResultEquals('текст абв', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1|абв|lang=ru'), 'msg23')
  
 
     -- multiple parameters
 
     -- multiple parameters
     self:assertResultEquals('text message a and b', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_2|a|b}}', 'msg30')
+
     self:assertResultEquals('text message a and b', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2|a|b'), 'msg30')
     self:assertResultEquals('text message a and b', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_2| a | b }}', 'msg31')
+
     self:assertResultEquals('text message a and b', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2| a | b '), 'msg31')
     self:assertResultEquals('text message a and b', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_2| \na \n | \nb \n }}', 'msg32')
+
     self:assertResultEquals('text message a and b', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2| \na \n | \nb \n '), 'msg32')
     self:assertResultEquals('текст абв и где', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_2|абв|где|lang=ru}}', 'msg33')
+
     self:assertResultEquals('текст абв и где', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2|абв|где|lang=ru'), 'msg33')
  
 
     -- parameters as part of wiki text
 
     -- parameters as part of wiki text
     self:assertResultEquals('text message [[a|b]]', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_link|a|b}}', 'msg40')
+
     self:assertResultEquals('text message [[a|b]]', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_link|a|b'), 'msg40')
     self:assertResultEquals('text message [[a|b]]', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_link| a | b }}', 'msg41')
+
     self:assertResultEquals('text message [[a|b]]', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_link| a | b '), 'msg41')
     self:assertResultEquals('текст [[абв|где]]', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_link|абв|где|lang=ru}}', 'msg42')
+
     self:assertResultEquals('текст [[абв|где]]', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_link|абв|где|lang=ru'), 'msg42')
  
 
     -- fallbacks
 
     -- fallbacks
     self:assertResultEquals('текст', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_no_en}}', 'msg50')
+
     self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_no_en'), 'msg50')
     self:assertResultEquals('текст', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_no_en|lang=ru}}', 'msg51')
+
     self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_no_en|lang=ru'), 'msg51')
     self:assertResultEquals('текст', '{{#invoke:TNT|msg|I18n/Module:TNT/testcases.tab|text_no_en|lang=fr}}', 'msg52')
+
     self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_no_en|lang=fr'), 'msg52')
 
end
 
end
  
Line 44: Line 51:
 
     self:assertResultEquals(
 
     self:assertResultEquals(
 
         '<strong class="error"><span class="scribunto-error" id="mw-scribunto-error-0">Lua error: bad argument #1 to &quot;get&quot; (not a valid title).</span></strong>',
 
         '<strong class="error"><span class="scribunto-error" id="mw-scribunto-error-0">Lua error: bad argument #1 to &quot;get&quot; (not a valid title).</span></strong>',
         '{{#invoke:TNT|msg}}', 'msgerr00')
+
         p:invokeTNT('msg'), 'msgerr00')
 
end
 
end
  
 
function p:test_link()
 
function p:test_link()
     self:assertResultEquals('commons:Data:abc.tab', '{{#invoke:TNT|link|abc.tab}}', 'link00')
+
     self:assertResultEquals('commons:Data:abc.tab', p:invokeTNT('link|abc.tab'), 'link00')
     self:assertResultEquals('commons:Data:abc.tab', '{{#invoke:TNT | link | abc.tab }}', 'link01')
+
     self:assertResultEquals('commons:Data:abc.tab', p:invokeTNT('| link | abc.tab '), 'link01')
     self:assertResultEquals('commons:Data:abc.tab', '{{#invoke:TNT | link |\n abc.tab\n }}', 'link02')
+
     self:assertResultEquals('commons:Data:abc.tab', p:invokeTNT('| link |\n abc.tab\n '), 'link02')
 
end
 
end
  
 
function p:test_doc()
 
function p:test_doc()
     local tnt = require('Module:TNT')
+
     local tnt = require('Module:' .. p:module())
 
     self:assertEquals(
 
     self:assertEquals(
 
             '{"paramOrder":["1","2"],"description":"DO NOT EDIT OR TRANSLATE unless you are changing unit tests","params":{"1":{"suggested":false,"type":"string","required":true,"label":"en_label_1","example":"en_example_1","description":"en_desc_1"},"2":{"suggested":true,"type":"string","required":false,"label":"fr_label_2","example":"pl_example_2","description":"en_desc_2"}}}',
 
             '{"paramOrder":["1","2"],"description":"DO NOT EDIT OR TRANSLATE unless you are changing unit tests","params":{"1":{"suggested":false,"type":"string","required":true,"label":"en_label_1","example":"en_example_1","description":"en_desc_1"},"2":{"suggested":true,"type":"string","required":false,"label":"fr_label_2","example":"pl_example_2","description":"en_desc_2"}}}',

Revision as of 04:08, 28 April 2019

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

local ScribuntoUnit = require('Module:ScribuntoUnit')
local p = ScribuntoUnit:new()

function p:module()
	return self.frame and self.frame.args.module or 'TNT'
end

function p:invokeTNT(wikicode)
	return '{{#invoke:' .. p:module() .. '|' .. wikicode .. '}}'
end

function p:test_msg()
    -- dataset resolution
    self:assertResultEquals('text message', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text'), 'msg00')
    self:assertResultEquals('text message', p:invokeTNT('msg|I18n/Module:TNT/testcases|text'), 'msg01')
    self:assertResultEquals('text message', p:invokeTNT('msg| I18n/Module:TNT/testcases.tab |text'), 'msg02')
    self:assertResultEquals('text message', p:invokeTNT('msg| I18n/Module:TNT/testcases |text'), 'msg03')
    self:assertResultEquals('text message', p:invokeTNT('msg|Module:TNT/testcases.tab |text'), 'msg04')
    self:assertResultEquals('text message', p:invokeTNT('msg|Module:TNT/testcases |text'), 'msg05')

    -- spacing
    self:assertResultEquals('text message', p:invokeTNT(' msg | I18n/Module:TNT/testcases.tab | text '), 'msg10')
    self:assertResultEquals('text message', p:invokeTNT(' \n msg \n | \n I18n/Module:TNT/testcases.tab \n | \n text \n '), 'msg11')
    self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text|lang=ru'), 'msg12')
    self:assertResultEquals('text message', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text|lang=fr'), 'msg13')

    -- 1 parameter
    self:assertResultEquals('text message a', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1|a'), 'msg20')
    self:assertResultEquals('text message a', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1| a '), 'msg21')
    self:assertResultEquals('text message a', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1| \na \n '), 'msg22')
    self:assertResultEquals('текст абв', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_1|абв|lang=ru'), 'msg23')

    -- multiple parameters
    self:assertResultEquals('text message a and b', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2|a|b'), 'msg30')
    self:assertResultEquals('text message a and b', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2| a | b '), 'msg31')
    self:assertResultEquals('text message a and b', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2| \na \n | \nb \n '), 'msg32')
    self:assertResultEquals('текст абв и где', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_2|абв|где|lang=ru'), 'msg33')

    -- parameters as part of wiki text
    self:assertResultEquals('text message [[a|b]]', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_link|a|b'), 'msg40')
    self:assertResultEquals('text message [[a|b]]', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_link| a | b '), 'msg41')
    self:assertResultEquals('текст [[абв|где]]', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_link|абв|где|lang=ru'), 'msg42')

    -- fallbacks
    self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_no_en'), 'msg50')
    self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_no_en|lang=ru'), 'msg51')
    self:assertResultEquals('текст', p:invokeTNT('msg|I18n/Module:TNT/testcases.tab|text_no_en|lang=fr'), 'msg52')
end

function p:test_msg_errors()
    self:assertResultEquals(
        '<strong class="error"><span class="scribunto-error" id="mw-scribunto-error-0">Lua error: bad argument #1 to &quot;get&quot; (not a valid title).</span></strong>',
        p:invokeTNT('msg'), 'msgerr00')
end

function p:test_link()
    self:assertResultEquals('commons:Data:abc.tab', p:invokeTNT('link|abc.tab'), 'link00')
    self:assertResultEquals('commons:Data:abc.tab', p:invokeTNT('| link | abc.tab '), 'link01')
    self:assertResultEquals('commons:Data:abc.tab', p:invokeTNT('| link |\n abc.tab\n '), 'link02')
end

function p:test_doc()
    local tnt = require('Module:' .. p:module())
    self:assertEquals(
            '{"paramOrder":["1","2"],"description":"DO NOT EDIT OR TRANSLATE unless you are changing unit tests","params":{"1":{"suggested":false,"type":"string","required":true,"label":"en_label_1","example":"en_example_1","description":"en_desc_1"},"2":{"suggested":true,"type":"string","required":false,"label":"fr_label_2","example":"pl_example_2","description":"en_desc_2"}}}',
            tnt.getTemplateData('Module:TNT/testcases templatedata 1'),
            'doc00')
    self:assertEquals(
            '{"paramOrder":["param1","param2"],"description":"DO NOT EDIT OR TRANSLATE unless you are changing unit tests","params":{"param2":{"suggested":true,"type":"string","required":false,"label":"fr_label_2","example":"pl_example_2","description":"en_desc_2"},"param1":{"suggested":false,"type":"string","required":true,"label":"en_label_1","example":"en_example_1","description":"en_desc_1"}}}',
            tnt.getTemplateData('Module:TNT/testcases templatedata 2'),
            'doc01')
end

return p