Moduuli:Kielilinkki/testit

Wikisanakirjasta

Moduuli:Kielilinkki[muokkaa]

Kaikki testit läpäisty.

Testi Odotettu Tulos
testAutomaattilinkki
testAutomaattilinkkiInvoke
testLinkkiTaiNil
testLisaparametritClass
testLisaparametritElem
testLisaparametritKuvaus
testLisaparametritKuvausParam
testPeruslinkki
testPeruslinkkiInvoke
testPeruslinkkiVaihtoehtoinenTapa


Hiekkalaatikko[muokkaa]

Kaikki testit läpäisty.

Testi Odotettu Tulos
testAutomaattilinkki
testAutomaattilinkkiInvoke
testLinkkiTaiNil
testLisaparametritClass
testLisaparametritElem
testLisaparametritKuvaus
testLisaparametritKuvausParam
testPeruslinkki
testPeruslinkkiInvoke
testPeruslinkkiVaihtoehtoinenTapa

-- Unit tests for [[Module:Kielilinkki]]. Click talk page to run tests.

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

local libName = 'Kielilinkki'


-- 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='testit', args={module=libName .. '/hiekkalaatikko', 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

--[[
    Library-specific tests
]]

------------------------------------------------------------------------
-- Helper functions
------------------------------------------------------------------------


------------------------------------------------------------------------
-- Test linkki-funktio, peruskäyttö
------------------------------------------------------------------------

function suite:testPeruslinkki()
    local m = self:module()
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki("fi", "kohde", "teksti"))
    self:assertEquals('<span class="Zzzz linkki" lang="es">[[kohde#Espanja|kohde]]</span>',
                      m.linkki("es", "kohde", nil))
    self:assertEquals('<span class="Jpan linkki" lang="ja">[[良い#Japani|良い]]</span>',
                      m.linkki("ja", "良い", nil))
    
    local stat, msg = pcall(m.linkki, nil, "kohde", "teksti")
    self:assertFalse(stat)
    self:assertStringContains("Pakollinen kieliparametri puuttuu!", msg, true)
    
    local stat, msg = pcall(m.linkki, "fi", nil, "teksti")
    self:assertFalse(stat)
    self:assertStringContains("Pakollinen linkkiparametri puuttuu!", msg, true)

end

function suite:testPeruslinkkiVaihtoehtoinenTapa()
    local m = self:module()
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki{ kieli = "fi", 
                                kohde = "kohde", 
                                teksti = "teksti"
                      }
    )
    
    self:assertEquals('<span class="Zzzz linkki" lang="es">[[kohde#Espanja|kohde]]</span>',
                      m.linkki{ kieli = "es", 
                                kohde = "kohde"
                      }
    )
    
    self:assertEquals('<span class="Jpan linkki" lang="ja">[[良い#Japani|良い]]</span>',
                      m.linkki{
                          kieli = "ja", 
                          kohde = "良い"
                      }
    )
    
end


------------------------------------------------------------------------
-- Test linkki_tai_nil-funktio, peruskäyttö
------------------------------------------------------------------------

function suite:testLinkkiTaiNil()
    local m = self:module()
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki_tai_nil("fi", "kohde", "teksti"))
    self:assertEquals('<span class="Zzzz linkki" lang="es">[[kohde#Espanja|kohde]]</span>',
                      m.linkki_tai_nil("es", "kohde"))
    self:assertEquals('<span class="Jpan linkki" lang="ja">[[良い#Japani|良い]]</span>',
                      m.linkki_tai_nil("ja", "良い"))
    
    
    self:assertTrue(m.linkki_tai_nil("fi") == nil)

end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri elem
------------------------------------------------------------------------

function suite:testLisaparametritElem()
    local m = self:module()
    self:assertEquals('<b class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</b>',
                      m.linkki{
                          kieli = "fi",
                          kohde = "kohde",
                          teksti = "teksti",
                          elem   = "b"
                      }
    )
    
end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri class
------------------------------------------------------------------------

function suite:testLisaparametritClass()
    local m = self:module()
    
    self:assertEquals('<span class="Zzzz kaannos" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki{
                          kieli  = "fi",
                          kohde  = "kohde",
                          teksti = "teksti",
                          class  = "kaannos"
                      }
    )
    
    self:assertEquals('<span class="Zzzz kaannos xxxxxx" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki{
                          kieli  = "fi",
                          kohde  = "kohde",
                          teksti = "teksti",
                          class  = "kaannos xxxxxx"
                      }
    )
    
end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri kuvaus
------------------------------------------------------------------------

function suite:testLisaparametritKuvaus()
    local m = self:module()
    
    self:assertEquals('<span class="Zzzz linkki" lang="fi" data-kuvaus="fi-subs-gen">[[kohde#Suomi|kohteen]]</span>',
                      m.linkki{
                          kieli  = "fi",
                          kohde  = "kohde",
                          teksti = "kohteen",
                          kuvaus = "fi-subs-gen"
                      }
    )
    
end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri kuvaus-param
------------------------------------------------------------------------

function suite:testLisaparametritKuvausParam()
    local m = self:module()

    local p = {
        kieli  = "ja",
        kohde  = "日本語",
        teksti = "nihongo",
        kuvaus = "ja-transkriptio",
        ["kuvaus-param"] = { [4] = "nihongo" }
    }
    
    local       odotettu = '<span class="Jpan linkki" '
        .. 'lang="ja" '
        .. 'data-kuvaus="ja-transkriptio" '
        .. 'data-kuvaus-param="{&amp;quot;4&amp;quot;:&amp;quot;nihongo&amp;quot;}">'
        .. '[[日本語#Japani|nihongo]]'
        .. '</span>'
    self:assertEquals(odotettu, m.linkki(p))

end


------------------------------------------------------------------------
-- Test linkki-funktio, automaattinen linkki
------------------------------------------------------------------------

function suite:testAutomaattilinkki()
    local m = self:module()

    self:assertEquals('<span class="Zzzz linkki" lang="sr">[[oko#Serbia|ȍko]]</span>',
                      m.linkki{
                          kieli = "sr",
                          kohde = "ȍko",
                          autolinkki = true
                      }
    )
    
    self:assertEquals('<span class="Arab linkki" lang="ar">[[بطة#Arabia|بَطَّة]]</span>',
                      m.linkki{
                          kieli = "ar",
                          kohde = "بَطَّة",
                          autolinkki = true
                      }
    )
    
end


------------------------------------------------------------------------
-- Test #invoke-testit
------------------------------------------------------------------------

------------------------------------------------------------------------
-- Test Linkki-funktio, peruskäyttö
------------------------------------------------------------------------

function suite:testPeruslinkkiInvoke()
    local m = self:module()
    local TITLE = mw.title.getCurrentTitle().fullText

    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.Linkki({ args = { "fi", "kohde", "teksti" } }))
    
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|kohde]]</span>',
                      m.Linkki({ args = { "fi", "kohde" } }))
    
    
    -- Jos kohdetta ei anneta, käytetään samaa sivua.
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[' .. TITLE .. '#Suomi|teksti]]</span>',
                      m.Linkki({ args = { "fi", nil, "teksti" } }))
    
    -- Ilman kohdetta ja tekstiä, käytetään samaa sivua.
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[' .. TITLE .. '#Suomi|' .. TITLE .. ']]</span>',
                      m.Linkki({ args = { "fi" } }))
    
    -- Ilman parametreja suomi ja sama sivu.
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[' .. TITLE .. '#Suomi|' .. TITLE .. ']]</span>',
                      m.Linkki({ args = { } }))
end

------------------------------------------------------------------------
-- Test Linkki-funktio, automaattinen linkki
------------------------------------------------------------------------

function suite:testAutomaattilinkkiInvoke()
    local m = self:module()

    self:assertEquals('<span class="Zzzz linkki" lang="sr">[[oko#Serbia|ȍko]]</span>',
                      m.Linkki({ args = { "sr", "ȍko", nil, ["autolinkki"] = "1" } }))
    
    self:assertEquals('<span class="Arab linkki" lang="ar">[[بطة#Arabia|بَطَّة]]</span>',
                      m.Linkki({ args = { "ar", "بَطَّة", nil, ["autolinkki"] = "1" } }))
    
    self:assertEquals('<span class="Zzzz linkki" lang="sr">[[oko#Serbia|DÖKÖ]]</span>',
                      m.Linkki({ args = { "sr", "ȍko", "DÖKÖ", ["autolinkki"] = "1" } }))
end

return suite