Jump to content
Search

The new Ubuntu Wiki is live. Legacy content may be unavailable and page links may have changed. Read the announcement on Discourse.

Module:Sandbox/kkuo/testcases

From Ubuntu Wiki

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

local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local cclicense = require('Module:Sandbox/kkuo')

function suite:getMockFrame(args)
    return {
        getParent = function() return { args = args } end,
        args = {},
        expandTemplate = function(_, templateData) return templateData end
    }
end

function suite:testCC0()
    local frame = self:getMockFrame({zero = "yes"})
    local res = cclicense.main(frame)
    
    self:assertEquals('This file is licensed under the [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0 Universal] license.', res.args.title)
    self:assertTrue(res.args.description:find('without asking permission', 1, true) ~= nil)
    self:assertEquals('CC0 1.0', res.args.shortname)
    self:assertEquals('CC0 1.0 Universal', res.args.longname)
    self:assertEquals('https://creativecommons.org/publicdomain/zero/1.0/', res.args.link)
    self:assertTrue(res.args.icons:find('Cc-zero.svg|32px', 1, true) ~= nil)
    
    self:assertEquals('false', res.args.linkreq)
    self:assertEquals('false', res.args.attrreq)
    self:assertEquals('false', res.args.nonfree)
end

function suite:testCCBY40Default()
    local frame = self:getMockFrame({version = "4.0"})
    local res = cclicense.main(frame)
    
    self:assertEquals('https://creativecommons.org/licenses/by/4.0/', res.args.link)
    self:assertEquals('This file is licensed under the [https://creativecommons.org/licenses/by/4.0/ Creative Commons Attribution 4.0 International] license.', res.args.title)
end

function suite:testCCBYSA40WithAttribution()
    local frame = self:getMockFrame({by = "1", sa = "true", version = "4.0", attribution = "Canonical Ltd."})
    local res = cclicense.main(frame)
    
    self:assertEquals('This file is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International] license.', res.args.title)
    self:assertTrue(res.args.description:find('You are free:', 1, true) ~= nil)
    self:assertTrue(res.args.description:find('to share', 1, true) ~= nil)
    self:assertTrue(res.args.description:find('to remix', 1, true) ~= nil)
    self:assertTrue(res.args.description:find('attribution', 1, true) ~= nil)
    self:assertTrue(res.args.description:find('share alike', 1, true) ~= nil)
    
    self:assertEquals('Canonical Ltd.', res.args.attribution)
    self:assertEquals('CC BY-SA 4.0', res.args.shortname)
    self:assertEquals('https://creativecommons.org/licenses/by-sa/4.0/', res.args.link)
    self:assertTrue(res.args.icons:find('Cc-by.svg|32px', 1, true) ~= nil)
    self:assertTrue(res.args.icons:find('Cc-sa.svg|32px', 1, true) ~= nil)
    self:assertEquals('true', res.args.linkreq)
    self:assertEquals('true', res.args.attrreq)
    self:assertEquals('false', res.args.nonfree)
end

function suite:testNDPrecedenceOverSA()
    local frame = self:getMockFrame({by = "1", nd = "1", sa = "1"})
    local res = cclicense.main(frame)
    
    self:assertTrue(res.args.description:find('no derivatives', 1, true) ~= nil)
    self:assertTrue(res.args.description:find('share alike', 1, true) == nil)
    self:assertTrue(res.args.description:find('to remix', 1, true) == nil)
    self:assertEquals('true', res.args.nonfree)
end

return suite