dev

This module contains testcases for its parent module, Existsmod.

See also


-- <nowiki>
local existsmod = require("Dev:Existsmod").module_exists
local ScribuntoUnit = require("Module:ScribuntoUnit")
local suite = ScribuntoUnit:new()

function suite:test_no_prefix()
    self:assertTrue(existsmod("I18n", true, false))
    self:assertFalse(existsmod("!I18n", true, false))
end

function suite:test_module_prefix()
    self:assertTrue(existsmod("Module:I18n", true, false))
    self:assertFalse(existsmod("Module:!I18n", true, false))
end

function suite:test_dev_prefix()
    self:assertTrue(existsmod("Dev:I18n", true, false))
    self:assertFalse(existsmod("Dev:!I18n", true, false))
end

function suite:test_ifexist_parity()
    self:assertSameResult("{{#ifexist:}}", "{{#invoke:Existsmod|main}}")
    self:assertSameResult("{{#ifexist:||missing}}", "{{#invoke:Existsmod|main|||missing}}")
    self:assertSameResult("{{#ifexist:|found}}", "{{#invoke:Existsmod|main||found}}")
    self:assertSameResult("{{#ifexist:|found|missing}}", "{{#invoke:Existsmod|main||found|missing}}")
    self:assertSameResult("{{#ifexist:Module:I18n}}", "{{#invoke:Existsmod|main|Module:I18n}}")
    self:assertSameResult("{{#ifexist:Module:I18n||missing}}", "{{#invoke:Existsmod|main|Module:I18n||missing}}")
    self:assertSameResult("{{#ifexist:Module:I18n|found}}", "{{#invoke:Existsmod|main|Module:I18n|found}}")
    self:assertSameResult("{{#ifexist:Module:I18n|found|missing}}", "{{#invoke:Existsmod|main|Module:I18n|found|missing}}")
    -- Generated by {{#ifexist:Module:!I18n}}
    self:assertSameResult("", "{{#invoke:Existsmod|main|Module:!I18n}}")
    -- Generated by {{#ifexist:Module:!I18n||missing}}
    self:assertSameResult("missing", "{{#invoke:Existsmod|main|Module:!I18n||missing}}")
    -- Generated by {{#ifexist:Module:!I18n|found}}
    self:assertSameResult("", "{{#invoke:Existsmod|main|Module:!I18n|found}}")
    -- Generated by {{#ifexist:Module:!I18n|found|missing}}
    self:assertSameResult("missing", "{{#invoke:Existsmod|main|Module:!I18n|found|missing}}")
end

function suite:test_path_normalization()
    self:assertTrue(existsmod("i18n", true, false))
    self:assertFalse(existsmod("i18N", true, false))
    self:assertTrue(existsmod("I18n", true, false))

    self:assertTrue(existsmod("module:i18n", true, false))
    self:assertFalse(existsmod("module:i18N", true, false))
    self:assertTrue(existsmod("module:I18n", true, false))
    self:assertTrue(existsmod("modulE:i18n", true, false))
    self:assertTrue(existsmod("Module:i18n", true, false))

    self:assertTrue(existsmod("dev:i18n", true, false))
    self:assertFalse(existsmod("dev:i18N", true, false))
    self:assertTrue(existsmod("dev:I18n", true, false))
    self:assertTrue(existsmod("deV:i18n", true, false))
    self:assertTrue(existsmod("Dev:i18n", true, false))
end

function suite:test_spaces_in_name()
    self:assertTrue(existsmod("User error", true, false))
end

function suite:test_module_is_redirect()
    self:assertTrue(existsmod("Existsmod/redirect test", true, false))
end

function suite:test_module_is_subpage()
    self:assertTrue(existsmod("Sandbox/DarthKitty", true, false))
end

return suite