mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
74 lines
2.9 KiB
Python
74 lines
2.9 KiB
Python
##########################################################################
|
|
#
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
#
|
|
# Copyright (C) 2013 - 2017, The pgAdmin Development Team
|
|
# This software is released under the PostgreSQL Licence
|
|
#
|
|
##########################################################################
|
|
|
|
import os
|
|
|
|
from flask import Flask
|
|
from jinja2 import FileSystemLoader
|
|
from jinja2 import TemplateNotFound
|
|
|
|
from pgadmin import VersionedTemplateLoader
|
|
from pgadmin.utils.route import BaseTestGenerator
|
|
|
|
|
|
class TestVersionedTemplateLoader(BaseTestGenerator):
|
|
def setUp(self):
|
|
self.loader = VersionedTemplateLoader(FakeApp())
|
|
|
|
def runTest(self):
|
|
self.test_get_source_returns_a_template()
|
|
self.test_get_source_when_the_version_is_9_1_returns_9_1_template()
|
|
self.test_get_source_when_the_version_is_9_3_and_there_are_templates_for_9_2_and_9_1_returns_9_2_template()
|
|
|
|
def test_get_source_returns_a_template(self):
|
|
expected_content = "Some SQL" \
|
|
"\nsome more stuff on a new line\n"
|
|
|
|
content, filename, up_to_dateness = self.loader.get_source(None, "some_feature/sql/9.1_plus/some_action.sql")
|
|
|
|
self.assertEqual(expected_content, content)
|
|
self.assertIn("some_feature/sql/9.1_plus/some_action.sql", filename)
|
|
|
|
def test_get_source_when_the_version_is_9_1_returns_9_1_template(self):
|
|
expected_content = "Some SQL" \
|
|
"\nsome more stuff on a new line\n"
|
|
|
|
content, filename, up_to_dateness = self.loader.get_source(None, "some_feature/sql/#90100#/some_action.sql")
|
|
|
|
self.assertEqual(expected_content, content)
|
|
self.assertIn("some_feature/sql/9.1_plus/some_action.sql", filename)
|
|
|
|
def test_get_source_when_the_version_is_9_3_and_there_are_templates_for_9_2_and_9_1_returns_9_2_template(self):
|
|
|
|
content, filename, up_to_dateness = self.loader.get_source(None, "some_feature/sql/#90300#/some_action.sql")
|
|
|
|
self.assertEqual("Some 9.2 SQL", content)
|
|
self.assertIn("some_feature/sql/9.2_plus/some_action.sql", filename)
|
|
|
|
def test_get_source_when_the_version_is_9_0_and_there_are_templates_for_9_1_and_9_2_returns_default_template(self):
|
|
|
|
content, filename, up_to_dateness = self.loader.get_source(None, "some_feature/sql/#90000#/some_action_with_default.sql")
|
|
|
|
self.assertEqual("Some default SQL", content)
|
|
self.assertIn("some_feature/sql/default/some_action_with_default.sql", filename)
|
|
|
|
def test_raise_not_found_exception_when_postgres_version_less_than_all_available_sql_templates(self):
|
|
|
|
try:
|
|
self.loader.get_source(None, "some_feature/sql/#10100#/some_action.sql")
|
|
self.fail("No exception raised")
|
|
except TemplateNotFound:
|
|
return
|
|
|
|
|
|
class FakeApp(Flask):
|
|
def __init__(self):
|
|
super(FakeApp, self).__init__("")
|
|
self.jinja_loader = FileSystemLoader(os.path.dirname(os.path.realpath(__file__)) + "/templates")
|