diff --git a/openlp/core/api/versions/v2/core.py b/openlp/core/api/versions/v2/core.py index 60e424ed4..b783b439a 100644 --- a/openlp/core/api/versions/v2/core.py +++ b/openlp/core/api/versions/v2/core.py @@ -60,7 +60,7 @@ def system_information(): data['websocket_port'] = Registry().get('settings_thread').value('api/websocket port') data['login_required'] = Registry().get('settings_thread').value('api/authentication enabled') data['api_version'] = 2 - data['api_revision'] = 2 + data['api_revision'] = 3 return jsonify(data) diff --git a/openlp/core/api/versions/v2/plugins.py b/openlp/core/api/versions/v2/plugins.py index 039f5b547..36ea5d89a 100644 --- a/openlp/core/api/versions/v2/plugins.py +++ b/openlp/core/api/versions/v2/plugins.py @@ -182,6 +182,7 @@ def transpose(transpose_value): chord_slides.append({'chords': verse_list[i + 1].strip(), 'verse': verse_list[i]}) if return_service_item: live_item['chords_transposed'] = True + live_item['slides'][live_controller.selected_row]['selected'] = True json_live_item = json.dumps(live_item, cls=OpenLPJSONEncoder) return Response(json_live_item, mimetype='application/json') else: diff --git a/tests/openlp_core/api/v2/test_plugins.py b/tests/openlp_core/api/v2/test_plugins.py index 2d911c57a..b2fdf3af9 100644 --- a/tests/openlp_core/api/v2/test_plugins.py +++ b/tests/openlp_core/api/v2/test_plugins.py @@ -103,7 +103,7 @@ def test_plugin_songs_transpose_returns_plugin_exception(flask_client, settings) assert res.status_code == 400 -TransposeMockReturn = namedtuple('TransposeMockReturn', ['renderer_mock_any_attr']) +TransposeMockReturn = namedtuple('TransposeMockReturn', ['renderer_mock_any_attr', 'live_controller_mock']) def _init_transpose_mocks(): @@ -136,7 +136,8 @@ def _init_transpose_mocks(): renderer_mock_any_attr.reset_mock() renderer_mock.format_slides.reset_mock() - return TransposeMockReturn(renderer_mock_any_attr=renderer_mock_any_attr) + return TransposeMockReturn(renderer_mock_any_attr=renderer_mock_any_attr, + live_controller_mock=live_controller_mock) def test_plugin_songs_transpose_wont_call_renderer(flask_client, settings): @@ -171,3 +172,20 @@ def test_plugin_songs_transpose_accepts_response_format_service_item(flask_clien # THEN: The service item response shouldn't match normal response and should be a service_item response response = service_item_res.json assert 'capabilities' in response + + +def test_plugin_songs_transpose_marks_selected_slide(flask_client, settings): + """ + Tests whether the transpose's endpoint marks the active slide + """ + + # GIVEN: The default mocks for Transpose API and the default response + mocks = _init_transpose_mocks() + mocks.live_controller_mock.selected_row = 1 + + # WHEN: The transpose action returning service_item is called + service_item_res = flask_client.get('/api/v2/plugins/songs/transpose-live-item/-1?response_format=service_item') + + # THEN: The service item response shouldn't match normal response and should be a service_item response + response = service_item_res.json + assert response['slides'][1]['selected'] is True