def create_measure_starting_at_topic_page(driver, live_server,
                                          stub_subtopic_page, stub_topic_page):
    """
    CREATE v1 1: Click through to subtopic topic page
    """
    topic_page = TopicPage(driver, live_server, stub_topic_page)
    assert topic_page.is_current()
    topic_page.expand_accordion_for_subtopic(stub_subtopic_page)
    """
    CREATE v1 2: Add measure page
    """
    topic_page.click_add_measure(stub_subtopic_page)
    measure_create_page = MeasureCreatePage(driver, live_server,
                                            stub_topic_page,
                                            stub_subtopic_page)
    assert measure_create_page.is_current()
    """
    CREATE v1 3: Fill measure create page
    """
    page = RandomMeasure()
    measure_create_page.set_title(page.title)
    measure_create_page.click_save()
    """
    CREATE v1 4: Add some content
    """
    measure_edit_page = MeasureEditPage(driver)
    measure_edit_page.fill_measure_page(page)
    measure_edit_page.click_save()
    """
    CREATE v1 5: Now it has been added we ought to have a generated GUID which we will need so
    we may have to retrieve the page again
    """
    page_service = PageService()
    page = page_service.get_page_with_title(page.title)
    return measure_edit_page, page
def create_measure_with_minimal_content(driver, live_server,
                                        stub_subtopic_page, stub_topic_page):
    """
    CREATE v1 1: Click through to subtopic topic page
    """
    topic_page = TopicPage(driver, live_server, stub_topic_page)
    assert topic_page.is_current()
    topic_page.expand_accordion_for_subtopic(stub_subtopic_page)
    """
    CREATE v1 2: Add measure page
    """
    topic_page.click_add_measure(stub_subtopic_page)
    measure_create_page = MeasureCreatePage(driver, live_server,
                                            stub_topic_page,
                                            stub_subtopic_page)
    assert measure_create_page.is_current()
    """
    CREATE v1 3: Fill measure create page
    """
    page = RandomMeasure()
    measure_create_page.set_title(page.title)
    measure_create_page.click_save()

    measure_edit_page = MeasureEditPage(driver)
    measure_edit_page.click_breadcrumb_for_page(stub_topic_page)
    """
    CREATE v1 5: Now it has been added we ought to have a generated GUID which we will need so
    we have to retrieve the page again
    """
    page = get_page_with_title(page.title)
    return page
def navigate_to_edit_page(driver, live_server, topic, subtopic, measure):
    """
    ENTRY 1: Home page
    """
    topic_page = TopicPage(driver, live_server, topic)
    if not topic_page.is_current():
        navigate_to_topic_page(driver, live_server, topic)

    topic_page.expand_accordion_for_subtopic(subtopic)
    topic_page.click_edit_button(measure)
def create_measure_starting_at_topic_page(
    driver, live_server, topic, subtopic, sample_measure_version, sample_data_source
):
    """
    CREATE v1 1: Click through to subtopic topic page
    """
    topic_page = TopicPage(driver, live_server, topic)
    assert topic_page.is_current()
    topic_page.expand_accordion_for_subtopic(subtopic)
    """
    CREATE v1 2: Add measure page
    """
    topic_page.click_add_measure(subtopic)
    measure_create_page = MeasureCreatePage(driver, live_server, topic, subtopic)
    assert measure_create_page.is_current()
    """
    CREATE v1 3: Fill measure create page
    """
    measure_create_page.set_title(sample_measure_version.title)
    measure_create_page.click_save()
    """
    CREATE v1 4: Add some content
    """
    measure_edit_page = MeasureEditPage(driver)
    measure_edit_page.fill_measure_page(sample_measure_version)
    measure_edit_page.click_save()
    """
    CREATE v1 5: Add a data source
    """
    measure_edit_page.click_add_primary_data_source()

    fill_in(driver, label_text="Search for an existing data source", with_text="My data source")
    click_button_with_text(driver, "Search")
    click_link_with_text(driver, "Create a new data source")

    data_source_page = CreateDataSourcePage(driver)
    data_source_page.fill_data_source(sample_data_source)
    data_source_page.click_save()
    data_source_page.click_back()
    """
    CREATE v1 5: Upload a source data file
    """
    measure_edit_page.click_add_source_data()
    add_source_data_page = AddSourceDataPage(driver)
    add_source_data_page.fill_source_data_page(sample_measure_version.uploads[0])
    add_source_data_page.click_save()
    """
    CREATE v1 6: Now it has been added we ought to have a generated GUID which we will need so
    we may have to retrieve the page again
    """
    created_measure_version = get_page_with_title(sample_measure_version.title)
    return measure_edit_page, created_measure_version