def test_update_measure_version_raises_if_page_not_editable(self): user = UserFactory(user_type=TypeOfUser.RDU_USER) measure_version = MeasureVersionFactory(version="1.0", status="DRAFT") measure_version_from_db = page_service.get_measure_version_by_measure_id_and_version( measure_version.measure.id, measure_version.version) assert measure_version_from_db.status == "DRAFT" page_service.update_measure_version( measure_version, measure_version_form=MeasureVersionForm( is_minor_update=True, title="Who cares", db_version_id=measure_version.db_version_id), data_source_forms=[], last_updated_by_email=user.email, **{"status": "APPROVED"}, ) measure_version_from_db = page_service.get_measure_version_by_measure_id_and_version( measure_version.measure.id, measure_version.version) assert measure_version_from_db.status == "APPROVED" with pytest.raises(PageUnEditable): page_service.update_measure_version( measure_version, measure_version_form=MeasureVersionForm( is_minor_update=True, title="I care too much!", db_version_id=measure_version.db_version_id), data_source_forms=[], last_updated_by_email=user.email, )
def test_first_version_of_page_title_and_url_match(self): subtopic = SubtopicFactory() user = UserFactory(user_type=TypeOfUser.RDU_USER) created_measure_version = page_service.create_measure( subtopic=subtopic, measure_version_form=MeasureVersionForm( is_minor_update=False, title="the title", published_at=datetime.now().date()), created_by_email=user.email, ) assert "the title" == created_measure_version.title assert "the-title" == created_measure_version.measure.slug updated_measure_version = page_service.update_measure_version( created_measure_version, measure_version_form=MeasureVersionForm( is_minor_update=True, title="an updated title", db_version_id=created_measure_version.db_version_id), data_source_forms=[], last_updated_by_email=user.email, ) assert "an updated title" == updated_measure_version.title assert "an-updated-title" == updated_measure_version.measure.slug
def test_draft_versions_of_page_after_first_title_can_be_changed_without_url_changing( self): subtopic = SubtopicFactory() user = UserFactory(user_type=TypeOfUser.RDU_USER) created_measure_version = page_service.create_measure( subtopic=subtopic, measure_version_form=MeasureVersionForm( is_minor_update=False, title="the title", published_at=datetime.now().date()), created_by_email=user.email, ) assert "the title" == created_measure_version.title assert "the-title" == created_measure_version.measure.slug page_service.update_measure_version( created_measure_version, measure_version_form=MeasureVersionForm( is_minor_update=True, title="the title", status="APPROVED", db_version_id=created_measure_version.db_version_id, ), data_source_forms=[], last_updated_by_email=user.email, ) copied_measure_version = page_service.create_measure_version( created_measure_version, NewVersionType.MINOR_UPDATE, user=user) assert "the title" == copied_measure_version.title assert "the-title" == copied_measure_version.measure.slug page_service.update_measure_version( copied_measure_version, measure_version_form=MeasureVersionForm( is_minor_update=True, title="the updated title", db_version_id=copied_measure_version.db_version_id), data_source_forms=[], last_updated_by_email=user.email, ) assert "the updated title" == copied_measure_version.title assert "the-title" == copied_measure_version.measure.slug
def test_create_page_with_title_and_slug_already_exists_under_subtopic_raises_exception( self): subtopic = SubtopicFactory() user = UserFactory(user_type=TypeOfUser.RDU_USER) created_measure_version = page_service.create_measure( subtopic=subtopic, measure_version_form=MeasureVersionForm( is_minor_update=False, title="I care", published_at=datetime.now().date()), created_by_email=user.email, ) with pytest.raises(PageExistsException): page_service.create_measure( subtopic=subtopic, measure_version_form=MeasureVersionForm( is_minor_update=False, title=created_measure_version.title, published_at=created_measure_version.published_at, ), created_by_email=user.email, )
def test_update_measure_version_trims_whitespace(self): user = UserFactory(user_type=TypeOfUser.RDU_USER) measure_version = MeasureVersionFactory(version="1.0", status="DRAFT") page_service.update_measure_version( measure_version, measure_version_form=MeasureVersionForm( is_minor_update=False, title="Who cares", db_version_id=measure_version.db_version_id, published_at=datetime.now().date(), ethnicity_definition_summary= "\n\n\n\n\n\nThis is what should be left\n", ), data_source_forms=[], last_updated_by_email=user.email, ) assert measure_version.ethnicity_definition_summary == "This is what should be left" page_service.update_measure_version( measure_version, measure_version_form=MeasureVersionForm( is_minor_update=False, title="Who cares", db_version_id=measure_version.db_version_id, ethnicity_definition_summary= "\n How about some more whitespace? \n \n", ), data_source_forms=[], last_updated_by_email=user.email, ) measure_version_from_db = page_service.get_measure_version_by_measure_id_and_version( measure_version.measure.id, measure_version.version) assert measure_version_from_db.ethnicity_definition_summary == "How about some more whitespace?"
def test_create_page_trims_whitespace(self): subtopic = SubtopicFactory() user = UserFactory(user_type=TypeOfUser.RDU_USER) created_measure_version = page_service.create_measure( subtopic=subtopic, measure_version_form=MeasureVersionForm( is_minor_update=False, title="\n\t I care\n", published_at=datetime.now().date(), methodology="\n\n\n\n\n\n", ), created_by_email=user.email, ) assert created_measure_version.title == "I care" assert created_measure_version.methodology is None
def test_update_measure_version(self): user = UserFactory(user_type=TypeOfUser.RDU_USER) measure_version = MeasureVersionFactory(version="1.0", status="DRAFT") page_service.update_measure_version( measure_version, measure_version_form=MeasureVersionForm( is_minor_update=True, title="I care too much!", db_version_id=measure_version.db_version_id), data_source_forms=[], last_updated_by_email=user.email, ) measure_version_from_db = page_service.get_measure_version_by_measure_id_and_version( measure_version.measure.id, measure_version.version) assert measure_version_from_db.title == "I care too much!" assert measure_version_from_db.last_updated_by == user.email
def test_create_measure_page(self, test_app_client, logged_in_rdu_user, stub_measure_data): LowestLevelOfGeographyFactory( name=stub_measure_data["lowest_level_of_geography_id"]) subtopic = SubtopicFactory() form = MeasureVersionForm(is_minor_update=False, **stub_measure_data) response = test_app_client.post( url_for("cms.create_measure", topic_slug=subtopic.topic.slug, subtopic_slug=subtopic.slug), data=form.data, follow_redirects=True, ) assert response.status_code == 200 page = BeautifulSoup(response.data.decode("utf-8"), "html.parser") assert (page.find("div", class_="eff-flash-message__body").get_text( strip=True) == "Created page %s" % stub_measure_data["title"])
def test_reject_measure_version(self): user = UserFactory(user_type=TypeOfUser.RDU_USER) measure_version = MeasureVersionFactory(version="1.0", status="DRAFT") assert measure_version.status == "DRAFT" page_service.update_measure_version( measure_version, measure_version_form=MeasureVersionForm( is_minor_update=False, title="Who cares", db_version_id=measure_version.db_version_id), last_updated_by_email=user.email, data_source_forms=[], **{"status": "DEPARTMENT_REVIEW"}, ) assert measure_version.status == "DEPARTMENT_REVIEW" message = page_service.reject_measure_version(measure_version) assert message == 'Sent page "Who cares" to REJECTED' assert measure_version.status == "REJECTED"
def test_create_measure(self): subtopic = SubtopicFactory() user = UserFactory(user_type=TypeOfUser.RDU_USER) created_measure_version = page_service.create_measure( subtopic=subtopic, measure_version_form=MeasureVersionForm( is_minor_update=False, title="I care", published_at=datetime.now().date(), internal_reference="abc123"), created_by_email=user.email, ) assert created_measure_version.title == "I care" assert created_measure_version.created_by == user.email # # TODO: remove this once MeasureVersions don't have reference assert created_measure_version.internal_reference == "abc123" created_measure = Measure.query.get(created_measure_version.measure_id) assert created_measure.slug == "i-care" assert created_measure.position == len(subtopic.measures) - 1 assert created_measure.reference == "abc123"