-- Unit tests for [[Module:WikiProject assessment progression]]. Click talk page to run tests.localmoduleName='WikiProject assessment progression/sandbox'localmyModule=require('Module:'..moduleName)localScribuntoUnit=require('Module:ScribuntoUnit')localsuite=ScribuntoUnit:new()functionsuite:calculateProjectTotal()localprojectTotal=self.frame:preprocess('{{#expr:{{PAGESINCATEGORY:FA-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:FL-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:FM-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:A-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:GA-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:B-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:C-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Start-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Stub-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:List-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Book-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Category-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Disambig-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:File-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Portal-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Project-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Redirect-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Template-Class spaceflight articles|pages|R}} + {{PAGESINCATEGORY:Unassessed spaceflight articles|pages|R}}}}')returnprojectTotalendfunctionsuite:assertTypeEquals(expectedType,functionName,message)localoutputType=type(functionName)self:assertEquals(expectedType,outputType,message)end-- Confirm test function itself is workingfunctionsuite:test_assertTypeEquals_returns_correctly()self:assertTypeEquals('number',10,'assertTypeEquals failed to compare value to its type')end-- Confirm output is a number formatted as a stringfunctionsuite:test_module_outputs_number_as_string()localasString=self.frame:preprocess('{{#invoke:'..moduleName..'|main|project=spaceflight}}')localasNumber=tonumber(asString)self:assertTypeEquals('string',asString,'Module output is not formatted as a string')self:assertTypeEquals('number',asNumber,'Module output cannot be converted to a number')end-- Confirm output returns expected valuefunctionsuite:test_module_outputs_expected_value()localprojectTotal=self:calculateProjectTotal()localexpectedOutput=self.frame:preprocess('{{#expr:100 * (('..projectTotal..' - {{PAGESINCATEGORY:Unassessed spaceflight articles|pages|R}} ) / '..projectTotal..' ) round 1}}')localmoduleOutput=self.frame:preprocess('{{#invoke:'..moduleName..'|main|project=spaceflight}}')self:assertEquals(expectedOutput,moduleOutput,'Module output does not match expected calculation')end-- Confirm output returns expected value for single classfunctionsuite:test_module_outputs_expected_for_single_class()localprojectTotal=self:calculateProjectTotal()localexpectedOutput=self.frame:preprocess('{{#expr:100 * ({{PAGESINCATEGORY:Stub-Class spaceflight articles|pages|R}} / '..projectTotal..' ) round 1}}')localmoduleOutput=self.frame:preprocess('{{#invoke:'..moduleName..'|main|project=spaceflight|class=Stub}}')self:assertEquals(expectedOutput,moduleOutput,'Module output differs for total on single class')end--[[ Confirm that module returns an error if no results are found for project name givenfunction suite:test_module_returns_error_if_invalid_project_specified() local invalidProject = self.frame:preprocess('{{#invoke:WikiProject assessment progression|main|project=SPAceflight}}') self:assertEquals('Error: project not found for project name "SPAceflight"', invalidProject)end--]]returnsuite