示例#1
0
    def test_db(self):
        args = app.create_parser().parse_args(['db', 'create'])
        assert args.type == 'create'
        with patch('chainerui.app.create_db') as f:
            args.handler(args)
            assert f.called

        args = app.create_parser().parse_args(['db', 'status'])
        assert args.type == 'status'
        with patch('chainerui.utils.db_revision.current_db_revision') as f:
            args.handler(args)
            assert f.called

        args = app.create_parser().parse_args(['db', 'upgrade'])
        assert args.type == 'upgrade'
        with patch('chainerui.app.upgrade_db') as f:
            args.handler(args)
            assert f.called

        args = app.create_parser().parse_args(['db', 'revision'])
        assert args.type == 'revision'
        with patch('chainerui.utils.db_revision.new_revision') as f:
            args.handler(args)
            assert f.called

        args = app.create_parser().parse_args(['db', 'drop'])
        assert args.type == 'drop'
        db_path = os.path.join(self._dir, 'test.db')
        open(db_path, 'w').close()
        assert os.path.isfile(db_path)
        with patch('chainerui.app.DB_FILE_PATH', db_path):
            args.handler(args)
            assert not os.path.isfile(db_path)
示例#2
0
def test_db_upgrade_drop(db_url):
    args = app.create_parser().parse_args(['--db', db_url, 'db', 'upgrade'])
    assert args.type == 'upgrade'
    assert args.db == db_url
    args.handler(args)
    assert db._initialized
    assert db._external_db

    args = app.create_parser().parse_args(['--db', db_url, 'db', 'drop'])
    assert args.type == 'drop'
    assert args.db == db_url
    args.handler(args)
    assert not db._initialized
    assert not db._external_db
示例#3
0
def test_db_create(db_url):
    args = app.create_parser().parse_args(['--db', db_url, 'db', 'create'])
    assert args.type == 'create'
    assert args.db == db_url
    args.handler(args)
    assert os.path.isdir(db._sqlite_default_db_dir())
    assert not db._initialized
示例#4
0
def test_project_create(func_dir, db_url):
    args = app.create_parser().parse_args(
        ['--db', db_url, 'project', 'create', '-d', func_dir, '-n', 'test'])
    assert args.project_dir == func_dir
    assert args.project_name == 'test'
    assert args.db == db_url

    args.handler(args)
    db.upgrade()
    p = db.session.query(Project).filter_by(path_name=func_dir).first()
    assert p is None
    # on Windows/Python2, another session is create, need to remove
    # this session externally (*)
    db._session.remove()

    args.handler(args)
    p = db.session.query(Project).filter_by(path_name=func_dir).first()
    assert p is not None
    assert p.path_name == func_dir
    assert p.name == 'test'
    db._session.remove()  # same as (*)

    args.handler(args)  # already registered, confirm not occur error
    ps = db.session.query(Project).filter_by(path_name=func_dir).all()
    assert len(ps) == 1
示例#5
0
def test_db_status(db_url):
    args = app.create_parser().parse_args(['--db', db_url, 'db', 'status'])
    assert args.type == 'status'
    assert args.db == db_url
    args.handler(args)
    assert db._initialized
    assert db._external_db
示例#6
0
    def test_project_create(self):
        args = app.create_parser().parse_args(
            ['project', 'create', '-d', self._dir, '-n', 'test'])
        assert args.project_dir == self._dir
        assert args.project_name == 'test'

        mock_session = MagicMock()
        with patch('chainerui.utils.db_revision.check_current_db_revision',
                   _return_false):
            args.handler(args)
            mock_session.query.assert_not_called()

        with patch('chainerui.utils.db_revision.check_current_db_revision',
                   _return_true):
            with patch('chainerui.app.DB_SESSION', mock_session):
                # session return mock project, not none test
                args.handler(args)

            mock_filter_by = MagicMock()
            mock_filter_by.first.return_value = None
            mock_query = MagicMock()
            mock_query.filter_by.return_value = mock_filter_by
            mock_session.query.return_value = mock_query
            with patch('chainerui.app.DB_SESSION', mock_session),\
                    patch('chainerui.app.Project') as p:
                args.handler(args)
                p.create.assert_called_with(self._dir, 'test')
示例#7
0
def test_server_debug(func_init_db):
    args = app.create_parser().parse_args([
        '--db', db.url, '--db-echo', 'server', '-H', 'test.domain', '-p',
        '5001', '-d'
    ])
    assert args.host == 'test.domain'
    assert args.port == 5001
    assert args.debug
    assert args.db == db.url
    assert args.db_echo

    mock_app = MagicMock()
    mock_app_creator = MagicMock(return_value=mock_app)
    with patch('werkzeug.serving.run_simple', MagicMock()) as f, \
            patch('chainerui.app.create_app', mock_app_creator):
        args.handler(args)
        f.assert_not_called()

        db.upgrade()
        args.handler(args)
        f.assert_called_once()
        f.assert_called_with('test.domain',
                             5001,
                             mock_app,
                             use_reloader=True,
                             use_debugger=True,
                             threaded=True)
示例#8
0
def test_db_create(func_dir):
    db_url = os.path.join(func_dir, 'chainerui.db')
    args = app.create_parser().parse_args(['--db', db_url, 'db', 'create'])
    assert args.type == 'create'
    assert args.db == db_url
    args.handler(args)
    assert os.path.isdir(db._sqlite_default_db_dir())
    assert not db._initialized
示例#9
0
def test_db_revision(db_url):
    args = app.create_parser().parse_args(['--db', db_url, 'db', 'revision'])
    assert args.type == 'revision'
    assert args.db == db_url
    with patch('chainerui.app.db_revision.new_revision') as f:
        args.handler(args)
        assert f.called
    assert db._initialized
    assert db._external_db
示例#10
0
def test_server_production(db_url):
    args = app.create_parser().parse_args(
        ['--db', db_url, 'server', '-H', 'test.domain', '-p', '5001'])
    assert args.host == 'test.domain'
    assert args.port == 5001
    assert not args.debug
    assert args.db == db_url

    mock_app = MagicMock()
    mock_app_creator = MagicMock(return_value=mock_app)
    mock_server = MagicMock()
    mock_server_init = MagicMock(return_value=mock_server)
    with patch('gevent.pywsgi.WSGIServer', mock_server_init), \
            patch('chainerui.app.create_app', mock_app_creator):
        args.handler(args)
        mock_server.serve_forever.assert_not_called()

        db.upgrade()
        args.handler(args)
        mock_server.serve_forever.assert_called_once()
示例#11
0
    def test_server(self):
        args = app.create_parser().parse_args(
            ['server', '-H', 'test.domain', '-p', '5001', '-d'])
        assert args.host == 'test.domain'
        assert args.port == 5001
        assert args.debug

        mock_app = MagicMock()
        mock_app_creator = MagicMock(return_value=mock_app)

        with patch('chainerui.app.create_app', mock_app_creator) as f:
            with patch('chainerui.utils.db_revision.check_current_db_revision',
                       _return_false):
                args.handler(args)
                f.assert_not_called()

            with patch('chainerui.utils.db_revision.check_current_db_revision',
                       _return_true):
                args.handler(args)
                f.assert_called_once()
                mock_app.run.assert_called_with(
                    host='test.domain', port=5001, debug=True, threaded=True)