示例#1
0
def page_code_save():
    project = request.json['project']
    page_name = request.json['pageName']
    content = request.json['content']
    _verify_permissions(Permissions.STANDARD, project)
    path = Page(project, page_name).path
    page_module.edit_page_code(project, page_name, content)
    _, error = utils.import_module(path)
    return jsonify({'error': error})
示例#2
0
 def test_edit_page_code(self, project_session, test_utils):
     _, project = project_session.activate()
     page_name = test_utils.create_random_page(project)
     page_code = ("elem1 = ('id', 'x')\n"
                  "elem2 = ('id', 'y')\n"
                  "def func1():\n"
                  "   pass")
     page.edit_page_code(project, page_name, page_code)
     with open(Page(project, page_name).path) as f:
         assert f.read() == page_code
示例#3
0
    def test_page_components_nested_import(self, project_session, test_utils):
        """Elements and functions from imported modules are not returned
        as components of a page
        """
        testdir, project = project_session.activate()
        sys.path.append(testdir)
        page_one = test_utils.create_random_page(project)
        code = 'elem1 = ("id", "test")\n'
        page.edit_page_code(project, page_one, code)

        # page_two imports page_one
        page_two = test_utils.create_random_page(project)
        code = ('from projects.{}.pages import {}\n'
                '\n'
                'elem2 = ("id", "test")\n'.format(project, page_one))
        page.edit_page_code(project, page_two, code)

        # page_three imports page_two
        page_three = test_utils.create_random_page(project)
        code = ('from projects.{}.pages import {}\n'
                '\n'
                'elem3 = ("id", "test")\n'.format(project, page_two))
        page.edit_page_code(project, page_three, code)
        components = Page(project, page_three).components
        assert len(components['elements']) == 1
        assert components['elements'][0]['name'] == 'elem3'

        # import *
        code = ('from projects.{}.pages.{} import *\n'
                '\n'
                'elem3 = ("id", "test")\n'.format(project, page_two))
        page.edit_page_code(project, page_three, code)
        components = Page(project, page_three).components
        assert len(components['elements']) == 1
        assert components['elements'][0]['name'] == 'elem3'
示例#4
0
 def test_page_components_import_lines(self, project_session, test_utils):
     _, project = project_session.activate()
     page_name = test_utils.create_random_page(project)
     code = (
         'import foo\n'
         'import bar\n'
         'from bar import baz\n'
         'from golem.browser import InvalidBrowserIdError, open_browser\n'
         'from module import (func1,\n'
         '                    func2)\n'
         '\n'
         'element_one = ("id", "idX", "Element One")\n'
         'element_two = ("id", "idX .import", "Element Two")\n'
         'element_three = ("id", "idX .from .import", "Element Three")\n')
     page.edit_page_code(project, page_name, code)
     components = Page(project, page_name).components
     expected = [
         'import foo', 'import bar', 'from bar import baz',
         'from golem.browser import InvalidBrowserIdError, open_browser',
         'from module import (func1,\n                    func2)'
     ]
     assert sorted(components['import_lines']) == sorted(expected)
示例#5
0
    def test_page_components_imported_names(self, project_session, test_utils):
        """Elements and functions from imported modules are not returned
        as components of a page
        """
        testdir, project = project_session.activate()
        sys.path.append(testdir)
        page_one = test_utils.create_random_page(project)
        code = ('elem1 = ("id", "test")\n' '\n' 'def func1():\n' '    pass\n')
        page.edit_page_code(project, page_one, code)

        # page_two imports page_one
        page_two = test_utils.create_random_page(project)
        code = (f'from projects.{project}.pages import {page_one}\n'
                '\n'
                'elem2 = ("id", "test")\n'
                '\n'
                'def func2():\n'
                '    pass\n')
        page.edit_page_code(project, page_two, code)
        components = Page(project, page_two).components
        assert len(components['elements']) == 1
        assert components['elements'][0]['name'] == 'elem2'
        assert len(components['functions']) == 1
        assert components['functions'][0]['name'] == 'func2'

        # import *
        code = (f'from projects.{project}.pages.{page_one} import *\n'
                '\n'
                'elem3 = ("id", "test")\n'
                '\n'
                'def func3():\n'
                '    pass\n')
        page.edit_page_code(project, page_two, code)
        components = Page(project, page_two).components
        assert len(components['elements']) == 1
        assert components['elements'][0]['name'] == 'elem3'
        assert len(components['functions']) == 1
        assert components['functions'][0]['name'] == 'func3'
示例#6
0
 def create_random_page(project, code=None):
     page_name = TestUtils.random_string(10)
     page.create_page(project, page_name)
     if code is not None:
         page.edit_page_code(project, page_name, code)
     return page_name
示例#7
0
 def test_page_code(self, project_session, test_utils):
     _, project = project_session.activate()
     page_name = test_utils.create_random_page(project)
     file_content = 'test=("id", "xyz")\ntest2=("id", "abc")\n'
     page.edit_page_code(project, page_name, file_content)
     assert Page(project, page_name).code == file_content