OpenSlides/server/tests/unit/motions/test_projector.py
Sean Engelhardt 823a87c164 Add amendment cr to lead motion slide
Adds amendment cr to the lead motion slide.
Previously the amendmet cr was only present in the amendment slide but was forgotten in the motion slide
2020-10-07 16:47:16 +02:00

363 lines
12 KiB
Python

from typing import Any, Dict
import pytest
from openslides.motions import projector
from ...integration.helpers import get_all_data_provider
@pytest.fixture
def all_data_provider():
data = {}
data["motions/motion"] = {
1: {
"id": 1,
"identifier": "4",
"title": "12345",
"text": "motion text",
"amendment_paragraphs": None,
"modified_final_version": "",
"reason": "",
"parent_id": None,
"category_id": None,
"comments": [],
"motion_block_id": None,
"origin": "",
"submitters": [{"id": 4, "user_id": 1, "motion_id": 1, "weight": 1}],
"supporters_id": [],
"state_id": 1,
"state_extension": None,
"state_restriction": [],
"statute_paragraph_id": None,
"workflow_id": 1,
"recommendation_id": None,
"recommendation_extension": None,
"tags_id": [],
"attachments_id": [],
"polls": [
{
"id": 1,
"motion_id": 4,
"yes": "10.000000",
"no": "-1.000000",
"abstain": "20.000000",
"votesvalid": "11.000000",
"votesinvalid": "2.000000",
"votescast": "30.000000",
"has_votes": True,
}
],
"agenda_item_id": 4,
"log_messages": [
{
"message_list": "['Vote updated']",
"person_id": 1,
"time": "2019-01-19T22:15:53.291123+01:00",
"message": "Jan. 19, 2019, 10:15 p.m. Vote updated by Administrator",
},
{
"message_list": "['Vote created']",
"person_id": 1,
"time": "2019-01-19T22:15:37.446262+01:00",
"message": "Jan. 19, 2019, 10:15 p.m. Vote created by Administrator",
},
{
"message_list": "['Motion created']",
"person_id": 1,
"time": "2019-01-19T18:37:34.833749+01:00",
"message": "Jan. 19, 2019, 6:37 p.m. Motion created by Administrator",
},
],
"sort_parent_id": None,
"weight": 10000,
"created": "2019-01-19T18:37:34.741336+01:00",
"last_modified": "2019-01-19T18:37:34.741368+01:00",
"change_recommendations_id": [1, 2],
"amendments_id": [2],
},
2: {
"id": 2,
"identifier": "Ä1",
"title": "Amendment for 12345",
"text": "",
"amendment_paragraphs": ["New motion text"],
"modified_final_version": "",
"reason": "",
"parent_id": 1,
"category_id": None,
"comments": [],
"motion_block_id": None,
"origin": "",
"submitters": [{"id": 4, "user_id": 1, "motion_id": 1, "weight": 1}],
"supporters_id": [],
"state_id": 1,
"state_extension": None,
"state_restriction": [],
"statute_paragraph_id": None,
"workflow_id": 1,
"recommendation_id": None,
"recommendation_extension": None,
"tags_id": [],
"attachments_id": [],
"polls": [],
"agenda_item_id": 4,
"log_messages": [],
"sort_parent_id": None,
"weight": 10000,
"created": "2019-01-19T18:37:34.741336+01:00",
"last_modified": "2019-01-19T18:37:34.741368+01:00",
"change_recommendations": [],
"change_recommendations_id": [],
"amendments_id": [],
},
3: {
"id": 3,
"identifier": None,
"title": "Statute amendment for §1 Preamble",
"text": "<p>Some other preamble text</p>",
"amendment_paragraphs": None,
"modified_final_version": "",
"reason": "",
"parent_id": None,
"category_id": None,
"comments": [],
"motion_block_id": None,
"origin": "",
"submitters": [{"id": 4, "user_id": 1, "motion_id": 1, "weight": 1}],
"supporters_id": [],
"state_id": 1,
"state_extension": None,
"state_restriction": [],
"statute_paragraph_id": 1,
"workflow_id": 1,
"recommendation_id": None,
"recommendation_extension": None,
"tags_id": [],
"attachments_id": [],
"polls": [],
"agenda_item_id": 4,
"log_messages": [],
"sort_parent_id": None,
"weight": 10000,
"created": "2019-01-19T18:37:34.741336+01:00",
"last_modified": "2019-01-19T18:37:34.741368+01:00",
"change_recommendations": [],
"change_recommendations_id": [],
"amendments_id": [],
},
}
data["motions/workflow"] = {
1: {
"id": 1,
"name": "Simple Workflow",
"states": [1, 2, 3, 4],
"first_state_id": 1,
}
}
data["motions/state"] = {
1: {
"id": 1,
"name": "submitted",
"recommendation_label": None,
"css_class": "lightblue",
"restriction": [],
"allow_support": True,
"allow_create_poll": True,
"allow_submitter_edit": True,
"dont_set_identifier": False,
"show_state_extension_field": False,
"merge_amendment_into_final": 0,
"show_recommendation_extension_field": False,
"next_states_id": [2, 3, 4],
"workflow_id": 1,
},
2: {
"id": 2,
"name": "accepted",
"recommendation_label": "Acceptance",
"css_class": "green",
"restriction": [],
"allow_support": False,
"allow_create_poll": False,
"allow_submitter_edit": False,
"dont_set_identifier": False,
"show_state_extension_field": False,
"merge_amendment_into_final": 1,
"show_recommendation_extension_field": False,
"next_states_id": [],
"workflow_id": 1,
},
3: {
"id": 3,
"name": "rejected",
"recommendation_label": "Rejection",
"css_class": "red",
"restriction": [],
"allow_support": False,
"allow_create_poll": False,
"allow_submitter_edit": False,
"dont_set_identifier": False,
"show_state_extension_field": False,
"merge_amendment_into_final": -1,
"show_recommendation_extension_field": False,
"next_states_id": [],
"workflow_id": 1,
},
4: {
"id": 4,
"name": "not decided",
"recommendation_label": "No decision",
"css_class": "grey",
"restriction": [],
"allow_support": False,
"allow_create_poll": False,
"allow_submitter_edit": False,
"dont_set_identifier": False,
"show_state_extension_field": False,
"merge_amendment_into_final": -1,
"show_recommendation_extension_field": False,
"next_states_id": [],
"workflow_id": 1,
},
}
data["motions/statute-paragraph"] = {
1: {
"id": 1,
"title": "§1 Preamble",
"text": "<p>Some preamble text</p>",
"weight": 10000,
}
}
data["motions/motion-change-recommendation"] = {
1: {
"id": 1,
"motion_id": 1,
"rejected": False,
"internal": True,
"type": 0,
"other_description": "",
"line_from": 1,
"line_to": 2,
"text": "internal new motion text",
"creation_time": "2019-02-09T09:54:06.256378+01:00",
},
2: {
"id": 2,
"motion_id": 1,
"rejected": False,
"internal": False,
"type": 0,
"other_description": "",
"line_from": 1,
"line_to": 2,
"text": "public new motion text",
"creation_time": "2019-02-09T09:54:06.256378+01:00",
},
}
return get_all_data_provider(data)
@pytest.mark.asyncio
async def test_motion_slide(all_data_provider):
element: Dict[str, Any] = {"id": 1}
data = await projector.motion_slide(all_data_provider, element, 1)
assert data == {
"identifier": "4",
"title": "12345",
"text": "motion text",
"amendments": [
{
"id": 2,
"title": "Amendment for 12345",
"amendment_paragraphs": ["New motion text"],
"identifier": "Ä1",
"merge_amendment_into_final": 0,
"merge_amendment_into_diff": 0,
"change_recommendations": [],
}
],
"amendment_paragraphs": None,
"change_recommendations": [
{
"id": 2,
"motion_id": 1,
"rejected": False,
"internal": False,
"type": 0,
"other_description": "",
"line_from": 1,
"line_to": 2,
"text": "public new motion text",
"creation_time": "2019-02-09T09:54:06.256378+01:00",
}
],
"base_motion": None,
"base_statute": None,
"is_child": False,
"show_meta_box": False,
"show_referring_motions": True,
"reason": "",
"submitters": ["Administrator"],
"line_length": 85,
"line_numbering_mode": "outside",
"preamble": "The assembly may decide:",
"recommendation_referencing_motions": None,
}
@pytest.mark.asyncio
async def test_amendment_slide(all_data_provider):
element: Dict[str, Any] = {"id": 2}
data = await projector.motion_slide(all_data_provider, element, 1)
assert data == {
"identifier": "Ä1",
"title": "Amendment for 12345",
"text": "",
"amendments": [],
"amendment_paragraphs": ["New motion text"],
"change_recommendations": [],
"base_motion": {"identifier": "4", "text": "motion text", "title": "12345"},
"base_statute": None,
"is_child": True,
"show_meta_box": False,
"show_referring_motions": True,
"reason": "",
"submitters": ["Administrator"],
"line_length": 85,
"line_numbering_mode": "outside",
"preamble": "The assembly may decide:",
"recommendation_referencing_motions": None,
}
@pytest.mark.asyncio
async def test_statute_amendment_slide(all_data_provider):
element: Dict[str, Any] = {"id": 3}
data = await projector.motion_slide(all_data_provider, element, 1)
assert data == {
"identifier": None,
"title": "Statute amendment for §1 Preamble",
"text": "<p>Some other preamble text</p>",
"amendments": [],
"amendment_paragraphs": None,
"change_recommendations": [],
"base_motion": None,
"base_statute": {"title": "§1 Preamble", "text": "<p>Some preamble text</p>"},
"is_child": False,
"show_meta_box": False,
"show_referring_motions": True,
"reason": "",
"submitters": ["Administrator"],
"line_length": 85,
"line_numbering_mode": "outside",
"preamble": "The assembly may decide:",
"recommendation_referencing_motions": None,
}