def create_new_data_source(page, attrs_map):
    data_source = DataSource()

    for page_data_source_name, normalised_data_source_name in attrs_map.items():
        if hasattr(data_source, normalised_data_source_name):
            setattr(data_source, normalised_data_source_name, getattr(page, page_data_source_name))
        else:
            raise AttributeError(f"Wrong attribute name for data source: {normalised_data_source_name}")

    return data_source
    def test_search_should_match_full_phrase_case_insensitve(self):

        data_source = DataSourceFactory.create(
            title="Annual Population Survey",
            source_url=None,
            publisher_id=None)
        DataSourceFactory.create(title="2011 Census of England and Wales",
                                 source_url=None,
                                 publisher_id=None)

        assert DataSource.search("annual population survey") == [data_source]
    def test_search_should_match_publisher_name(self):

        home_office = OrganisationFactory.create(name="Home Office")
        foreign_office = OrganisationFactory.create(name="Foreign Office")

        data_source = DataSourceFactory.create(
            title="Annual Population Survey",
            source_url=None,
            publisher=home_office)
        DataSourceFactory.create(title="Workforce Survey",
                                 source_url=None,
                                 publisher=foreign_office)

        assert DataSource.search("home office") == [data_source]
    def test_search_should_only_return_results_matching_all_keywords(self):

        data_source = DataSourceFactory.create(
            title="Annual Population Survey",
            source_url=None,
            publisher_id=None)
        DataSourceFactory.create(title="Annual Workforce Survey",
                                 source_url=None,
                                 publisher_id=None)
        DataSourceFactory.create(title="Estimated Population Statistics",
                                 source_url=None,
                                 publisher_id=None)

        assert DataSource.search("survey population") == [data_source]
    def test_search_should_match_publisher_abbreviation(self):

        dwp = OrganisationFactory.create(
            name="Department for Work and Pensions", abbreviations=["DWP"])
        dfe = OrganisationFactory.create(name="Department for Education",
                                         abbreviations=["FO"])

        data_source = DataSourceFactory.create(title="Workforce Survey",
                                               source_url=None,
                                               publisher=dwp)
        DataSourceFactory.create(title="Workforce Survey",
                                 source_url=None,
                                 publisher=dfe)

        assert DataSource.search("dwp") == [data_source]
    def test_search_should_match_exact_source_url(self):

        data_source = DataSourceFactory.create(
            title="Annual Population Survey",
            source_url=
            "https://assets.publishing.service.gov.uk/government/uploads/" +
            "system/uploads/attachment_data/file/4364643/2018-annual-population"
            + "-survey.pdf",
            publisher_id=None,
        )

        assert DataSource.search(
            "https://assets.publishing.service.gov.uk/government/uploads/system/uploads/"
            + "attachment_data/file/4364643/2018-annual-population-survey.pdf"
        ) == [data_source]
Ejemplo n.º 7
0
def data_sources():
    q = request.args.get("q", "")

    if q:
        data_sources = DataSource.search(q)
    else:
        data_sources = DataSource.query.order_by(DataSource.title).all()

    data_source_search_form = DataSourceSearchForm(data={"q": q})
    data_source_selection_form = SelectMultipleDataSourcesForm(
        data_sources=data_sources)

    return render_template(
        "admin/data_sources.html",
        data_sources=data_sources,
        q=q,
        data_source_search_form=data_source_search_form,
        data_source_selection_form=data_source_selection_form,
    )
    def test_search_should_be_ordered_by_number_of_associated_measure_versions(
            self):

        data_source_associated_with_1_measure_version = DataSourceFactory.create(
            title="Survey")
        data_source_associated_with_2_measure_versions = DataSourceFactory.create(
            title="Survey")

        MeasureVersionFactory.create(
            data_sources=[data_source_associated_with_1_measure_version])

        for _ in range(2):
            MeasureVersionFactory.create(
                data_sources=[data_source_associated_with_2_measure_versions])

        search = DataSource.search("survey")

        assert len(search) == 2
        assert (
            data_source_associated_with_2_measure_versions == search[0]
        ), "Expected data source associated with 2 measure versions to be first"
        assert (
            data_source_associated_with_1_measure_version == search[1]
        ), "Expected data source associated with 1 measure version to be second"
    def test_search_be_limited_by_param(self):

        for _ in range(5):
            DataSourceFactory.create(title="Workforce Survey")

        assert len(DataSource.search("survey", limit=2)) == 2