Source code for jasy.test.project

#!/usr/bin/env python3

import sys
import os
import unittest
import logging
import tempfile

# Extend PYTHONPATH with local 'lib' folder
jasyroot = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir, os.pardir))
sys.path.insert(0, jasyroot)

import jasy.core.Project as Project
import jasy.core.Session as Session


[docs]class Tests(unittest.TestCase):
[docs] def writeFile(self, path, fileName, content): handle = open(os.path.join(path, fileName), mode="w", encoding="utf-8") handle.write(content) handle.close()
[docs] def readFile(self, path, fileName): return open(os.path.join(path, fileName), mode="r", encoding="utf-8").read()
[docs] def createjpyaml(self, path): self.writeFile(path, "jasyproject.yaml", """name: myproject """)
[docs] def createjpyaml_withContent(self, path): self.writeFile(path, "jasyproject.yaml", """ name: myproject content: { myproject.Main: { type: "jasy.Script", source: [man/Main.js, man/Add.js] }, myproject/main.css: { type: "jasy.Asset", source: [man/main.css] } } """)
[docs] def createCaseOne(self): # manual path = os.path.join(tempfile.TemporaryDirectory().name, "myproject") os.makedirs(path) def createFolders(): os.makedirs(os.path.join(path, "man")) def createSampleScripts(): self.writeFile(os.path.join(path, "man"), "index.html", """<html></html>""") self.writeFile(os.path.join(path, "man"), "Main.js", ";") self.writeFile(os.path.join(path, "man"), "Add.js", ";") def createSampleAssets(): self.writeFile(os.path.join(path, "man"), "main.css", """html{}""") createFolders() self.createjpyaml_withContent(path) createSampleScripts() createSampleAssets() return Project.getProjectFromPath(path, Session.Session())
[docs] def createCaseTwo(self): # application path = os.path.join(tempfile.TemporaryDirectory().name, "myproject") os.makedirs(path) def createFolders(): os.makedirs(os.path.join(path, "source")) os.makedirs(os.path.join(os.path.join(path, "source"), "class")) os.makedirs(os.path.join(os.path.join(path, "source"), "asset")) os.makedirs(os.path.join(os.path.join(path, "source"), "translation")) def createSampleScripts(): self.writeFile(os.path.join(path, "source"), "index.html", """<html></html>""") self.writeFile(os.path.join(os.path.join(path, "source"), "class"), "Main.js", ";") def createSampleAssets(): self.writeFile(os.path.join(os.path.join(path, "source"), "asset"), "main.css", """html{}""") def createSampleTranslations(): self.writeFile(os.path.join(os.path.join(path, "source"), "translation"), "de.po", " ") createFolders() self.createjpyaml(path) createSampleScripts() createSampleAssets() createSampleTranslations() return Project.getProjectFromPath(path, Session.Session())
[docs] def createCaseThree(self): # src path = os.path.join(tempfile.TemporaryDirectory().name, "myproject") os.makedirs(path) def createFolders(): os.makedirs(os.path.join(path, "src")) def createSampleScripts(): self.writeFile(os.path.join(path, "src"), "index.html", """<html></html>""") self.writeFile(os.path.join(path, "src"), "Main.js", ";") def createSampleAssets(): self.writeFile(os.path.join(path, "src"), "main.css", """html{}""") createFolders() self.createjpyaml(path) createSampleScripts() createSampleAssets() return Project.getProjectFromPath(path, Session.Session())
[docs] def createCaseFour(self): # resource path = os.path.join(tempfile.TemporaryDirectory().name, "myproject") os.makedirs(path) def createFolders(): os.makedirs(os.path.join(path, "class")) os.makedirs(os.path.join(path, "asset")) os.makedirs(os.path.join(path, "translation")) def createSampleScripts(): self.writeFile(os.path.join(path, "class"), "index.html", """<html></html>""") self.writeFile(os.path.join(path, "class"), "Main.js", ";") def createSampleAssets(): self.writeFile(os.path.join(path, "asset"), "main.css", """html{}""") def createSampleTranslations(): self.writeFile(os.path.join(path, "translation"), "de.po", " ") createFolders() self.createjpyaml(path) createSampleScripts() createSampleAssets() createSampleTranslations() return Project.getProjectFromPath(path, Session.Session())
[docs] def getProjects(self): return [self.createCaseOne(), self.createCaseTwo(), self.createCaseThree(), self.createCaseFour()]
[docs] def test_get_project(self): for project in self.getProjects(): self.assertEqual(project.getName(), "myproject")
[docs] def test_get_name_from_path(self): for project in self.getProjects(): self.assertEqual(Project.getProjectNameFromPath(project.getPath()), "myproject")
[docs] def test_scan(self): for project in self.getProjects(): project.scan() self.assertEqual(project.scanned, True)
[docs] def test_has_requires(self): for project in self.getProjects(): self.assertEqual(project.hasRequires(), False)
[docs] def test_fields(self): for project in self.getProjects(): self.assertEqual(project.getFields(), {})
[docs] def test_get_class_by_name(self): for project in self.getProjects(): self.assertEqual(project.getScriptByName("myproject.Main"), project.getScripts()["myproject.Main"]) self.assertEqual(type(project.getScriptByName("myproject.Main")).__name__, "ScriptItem")
[docs] def test_assets(self): for project in self.getProjects(): self.assertEqual(type(project.getAssets()["myproject/main.css"]).__name__, "AssetItem")
[docs] def test_translations(self): for project in [self.createCaseTwo(), self.createCaseFour()]: self.assertEqual(type(project.getTranslations()["myproject.de"]).__name__, "TranslationItem")
[docs] def test_manual_class_fusion(self): self.assertEqual(self.createCaseOne().getScriptByName("myproject.Main").getText(), ";;")
if __name__ == '__main__': logging.getLogger().setLevel(logging.ERROR) suite = unittest.TestLoader().loadTestsFromTestCase(Tests) unittest.TextTestRunner(verbosity=2).run(suite)