Jump to content

Module:Infobox/dates/testcases

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Gonnym (talk | contribs) at 10:23, 7 April 2025. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
-- Unit tests for [[Module:Infobox/dates/testcases]]. Click talk page to run tests.
local p = require('Module:UnitTests')

local start_date_default = {"2015", "4", "23"}
local end_date_default = {"2016", "4", "23"}

local start_date_default_df = {"2015", "4", "23", df="yes"}
local end_date_default_df = {"2016", "4", "23", df="yes"}

local start_date_default_plain = "April 23, 2015"
local end_date_default_plain = "April 23, 2016"

local start_date_default_plain_df = "23 April 2015"
local end_date_default_plain_df = "23 April 2016"

local dash = '&nbsp;–<br />'


local function expandTemplate(template, value)
	local frame = mw.getCurrentFrame()
	return frame:expandTemplate{title = template, args = value}
end

function extract_hidden_date_text(text)
    -- Find the position of the first "<span"
    local start_pos = string.find(text, "<span")
    
    -- If found, extract from that position to the end
    if start_pos then
    	mw.log(string.sub(text, start_pos))
        return string.sub(text, start_pos)
    else
        return ""
    end
end

function p:test_01_valid()
	self:preprocess_equals_sandbox_many('{{#invoke:Infobox/dates', 'dates', {
		-- With templates
		{'1=' .. expandTemplate("start date", start_date_default), expandTemplate("start date", start_date_default)},
		{'1=' .. expandTemplate("end date", end_date_default), expandTemplate("end date", end_date_default)},
		-- Different years		
		{'1=' .. expandTemplate("start date", start_date_default) .. '|2=' .. expandTemplate("end date", end_date_default), expandTemplate("start date", start_date_default) .. dash .. expandTemplate("end date", end_date_default)},
		-- Same years, different months
		{'1=' .. expandTemplate("start date", start_date_default) .. '|2=' .. expandTemplate("end date", {"2015", "5", "23"}), 'April 23' .. extract_hidden_date_text(expandTemplate("start date", start_date_default)) .. dash .. expandTemplate("end date", {"2015", "5", "23"})},
		-- Same years and months, different days
		{'1=' .. expandTemplate("start date", start_date_default) .. '|2=' .. expandTemplate("end date", {"2015", "4", "24"}), 'April 23' .. extract_hidden_date_text(expandTemplate("start date", start_date_default)) .. dash .. expandTemplate("end date", {"2015", "4", "24"})},
		-- Same date
		{'1=' .. expandTemplate("start date", start_date_default) .. '|2=' .. expandTemplate("end date", {"2015", "4", "24"}), 'April 23' .. extract_hidden_date_text(expandTemplate("start date", start_date_default)) .. dash .. expandTemplate("end date", {"2015", "4", "24"})},
		-- To present	
		{'1=' .. expandTemplate("start date", start_date_default) .. '|2=present', expandTemplate("start date", start_date_default) .. dash .. 'present'},
		
		-- Without templates
		{'1=' .. start_date_default_plain, start_date_default_plain},
		{'1=' .. end_date_default_plain, end_date_default_plain},
		-- Different years	
		{'1=' .. start_date_default_plain .. '|2=' .. end_date_default_plain, start_date_default_plain .. dash .. end_date_default_plain},
		-- Same years, different months
		{'1=' .. start_date_default_plain .. '|2=May 23, 2015', 'April 23' .. dash .. 'May 23, 2015'},
		-- Same years and months, different days
		{'1=' .. start_date_default_plain .. '|2=May 24, 2015', 'April 23' .. dash .. 'May 24, 2015'},
		-- Same date
		{'1=' .. start_date_default_plain .. '|2=' .. start_date_default_plain, 'April 23' .. dash .. end_date_default_plain},
		-- To present
		{'1=' .. start_date_default_plain .. '|2=present', start_date_default_plain .. dash .. 'present'},
		
		-- Partial dates with templates

		-- Just years
		{'1=' .. expandTemplate("start date", {"2015"}) .. '|2=' .. expandTemplate("end date", {"2016"}), expandTemplate("start date", {"2015"}) .. dash .. expandTemplate("end date", {"2016"})},
		-- Just years, same year
		{'1=' .. expandTemplate("start date", {"2015"}) .. '|2=' .. expandTemplate("end date", {"2015"}), expandTemplate("start date", {"2015"}) .. dash .. expandTemplate("end date", {"2016"})},
		-- Years and months, different months
		{'1=' .. expandTemplate("start date", {"2015", "4"}) .. '|2=' .. expandTemplate("end date", {"2016", "5"}), expandTemplate("start date", {"2015", "4"}) .. dash .. expandTemplate("end date", {"2016", "5"})},
		-- Years and months, same months
		{'1=' .. expandTemplate("start date", {"2015", "4"}) .. '|2=' .. expandTemplate("end date", {"2016", "4"}), expandTemplate("start date", {"2015", "4"}) .. dash .. expandTemplate("end date", {"2016", "4"})},

		-- Partial dates without templates
		{'1=2015|2=2016', ''},				-- just years
		{'1=2015|2=2015', ''},				-- just years, same year
		{'1=April 2015|2=May 2016', ''},	-- years and months, different months
		{'1=April 2015|2=April 2016', ''},	-- years and months, same months
	})
end

-- Same with df=yes
function p:test_02_valid_df()
	self:preprocess_equals_sandbox_many('{{#invoke:Infobox/dates', 'dates', {
		-- With templates
		{'1=' .. expandTemplate("start date", start_date_default_df), expandTemplate("start date", start_date_default_df)},
		{'1=' .. expandTemplate("end date", end_date_default_df), expandTemplate("end date", end_date_default_df)},
		-- Different years		
		{'1=' .. expandTemplate("start date", start_date_default_df) .. '|2=' .. expandTemplate("end date", end_date_default), expandTemplate("start date", start_date_default_df) .. dash .. expandTemplate("end date", end_date_default_df)},
		-- Same years, different months
		{'1=' .. expandTemplate("start date", start_date_default_df) .. '|2=' .. expandTemplate("end date", {"2015", "5", "23", df="yes"}), 'April 23' .. dash .. expandTemplate("end date", {"2015", "5", "23", df="yes"})},
		-- Same years and months, different days
		{'1=' .. expandTemplate("start date", start_date_default_df) .. '|2=' .. expandTemplate("end date", {"2015", "4", "24", df="yes"}), 'April 23' .. dash .. expandTemplate("end date", {"2015", "4", "24", df="yes"})},
		-- Same date
		{'1=' .. expandTemplate("start date", start_date_default_df) .. '|2=' .. expandTemplate("end date", {"2015", "4", "24", df="yes"}), 'April 23' .. dash .. expandTemplate("end date", {"2015", "4", "24", df="yes"})},
		-- To present	
		{'1=' .. expandTemplate("start date", start_date_default_df) .. '|2=present', expandTemplate("start date", start_date_default_df) .. dash .. 'present'},
		
		-- Without templates
		{'1=' .. start_date_default_plain_df, start_date_default_plain_df},
		{'1=' .. end_date_default_plain_df, end_date_default_plain_df},
		-- Different years	
		{'1=' .. start_date_default_plain_df .. '|2=' .. end_date_default_plain_df, start_date_default_plain_df .. dash .. end_date_default_plain_df},
		-- Same years, different months
		{'1=' .. start_date_default_plain_df .. '|2=23 May 2015', '23 April' .. dash .. '23 May 2015'},
		-- Same years and months, different days
		{'1=' .. start_date_default_plain_df .. '|2=24 May 2015', '23 April' .. dash .. '24 May 2015'},
		-- Same date
		{'1=' .. start_date_default_plain_df .. '|2=' .. start_date_default_plain_df, '23 April' .. dash .. end_date_default_plain_df},
		-- To present
		{'1=' .. start_date_default_plain_df .. '|2=present', start_date_default_plain_df .. dash .. 'present'},
		
		-- Partial dates with templates

		-- Just years
		{'1=' .. expandTemplate("start date", {"2015", df="yes"}) .. '|2=' .. expandTemplate("end date", {"2016", df="yes"}), expandTemplate("start date", {"2015", df="yes"}) .. dash .. expandTemplate("end date", {"2016", df="yes"})},
		-- Just years, same year
		{'1=' .. expandTemplate("start date", {"2015", df="yes"}) .. '|2=' .. expandTemplate("end date", {"2015", df="yes"}), expandTemplate("start date", {"2015", df="yes"}) .. dash .. expandTemplate("end date", {"2016", df="yes"})},
		-- Years and months, different months
		{'1=' .. expandTemplate("start date", {"2015", "4", df="yes"}) .. '|2=' .. expandTemplate("end date", {"2016", "5", df="yes"}), expandTemplate("start date", {"2015", "4", df="yes"}) .. dash .. expandTemplate("end date", {"2016", "5", df="yes"})},
		-- Years and months, same months
		{'1=' .. expandTemplate("start date", {"2015", "4", df="yes"}) .. '|2=' .. expandTemplate("end date", {"2016", "4", df="yes"}), expandTemplate("start date", {"2015", "4", df="yes"}) .. dash .. expandTemplate("end date", {"2016", "4", df="yes"})},

	})
end

function p:test_03_invalid_range()
	self:preprocess_equals_sandbox_many('{{#invoke:Infobox/dates', 'dates', {
		 -- end date starts before start date
		{'1=' .. expandTemplate("start date", end_date_default) .. '|2=' .. expandTemplate("end date", start_date_default), 'Invalid date range'},
		{'1=' .. end_date_default_plain .. '|2=' .. start_date_default_plain, 'Invalid date range'},
	})
end

return p