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)
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
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
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
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
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')
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)
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
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
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()
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)