mediawiki-extensions-Scribunto/tests/engines/LuaCommon/SiteLibraryTests.lua
Brad Jorsch f31aa37adc Properly handle spaces/underscores in mw.site.namespaces
The PHP call that makes mw.site.namespaces work case-insensitively
doesn't handle non-standard spaces/underscores. So standardize them
before the call.

Bug: 56216
Change-Id: I4758478b126858fb581614f64eb15472f42fef51
2013-10-31 11:09:16 -04:00

111 lines
2.9 KiB
Lua

local testframework = require 'Module:TestFramework'
local function nsTest( ... )
local args = { ... }
local t = mw.site.namespaces
local path = 'mw.site.namespaces'
for i = 1, #args do
t = t[args[i]]
path = path .. string.format( '[%q]', args[i] )
if t == nil then
error( path .. ' is nil!' )
end
end
return t
end
return testframework.getTestProvider( {
{ name = 'parameter: siteName',
func = type, args = { mw.site.siteName },
expect = { 'string' }
},
{ name = 'parameter: server',
func = type, args = { mw.site.server },
expect = { 'string' }
},
{ name = 'parameter set: scriptPath',
func = type, args = { mw.site.scriptPath },
expect = { 'string' }
},
{ name = 'parameter set: stats.pages',
func = type, args = { mw.site.stats.pages },
expect = { 'number' }
},
{ name = 'pagesInCategory',
func = type, args = { mw.site.stats.pagesInCategory( "Example" ) },
expect = { 'number' }
},
{ name = 'pagesInNamespace',
func = type, args = { mw.site.stats.pagesInNamespace( 0 ) },
expect = { 'number' }
},
{ name = 'usersInGroup',
func = type, args = { mw.site.stats.usersInGroup( 'sysop' ) },
expect = { 'number' }
},
{ name = 'Project namespace by number',
func = nsTest, args = { 4, 'canonicalName' },
expect = { 'Project' }
},
{ name = 'Project namespace by name',
func = nsTest, args = { 'Project', 'id' },
expect = { 4 }
},
{ name = 'Project namespace by name (2)',
func = nsTest, args = { 'PrOjEcT', 'canonicalName' },
expect = { 'Project' }
},
{ name = 'Project namespace subject is itself',
func = nsTest, args = { 'Project', 'subject', 'canonicalName' },
expect = { 'Project' }
},
{ name = 'Project talk namespace via Project',
func = nsTest, args = { 'Project', 'talk', 'canonicalName' },
expect = { 'Project talk' }
},
{ name = 'Project namespace via Project talk',
func = nsTest, args = { 'Project_talk', 'subject', 'canonicalName' },
expect = { 'Project' }
},
{ name = 'Project talk namespace via Project (associated)',
func = nsTest, args = { 'Project', 'associated', 'canonicalName' },
expect = { 'Project talk' }
},
{ name = 'Project talk namespace by name (standard caps, no underscores)',
func = nsTest, args = { 'Project talk', 'id' },
expect = { 5 }
},
{ name = 'Project talk namespace by name (standard caps, underscores)',
func = nsTest, args = { 'Project_talk', 'id' },
expect = { 5 }
},
{ name = 'Project talk namespace by name (odd caps, no underscores)',
func = nsTest, args = { 'pRoJeCt tAlK', 'id' },
expect = { 5 }
},
{ name = 'Project talk namespace by name (odd caps, underscores)',
func = nsTest, args = { 'pRoJeCt_tAlK', 'id' },
expect = { 5 }
},
{ name = 'Project talk namespace by name (extraneous spaces and underscores)',
func = nsTest, args = { '_ _ _Project_ _talk_ _ _', 'id' },
expect = { 5 }
},
} )