def test_disables_isni_lookup_when_user_logs_out(driver):
    session = make_registered_session()
    _ = show_page(session=session, album=make_album(lead_performer="Album Artist"))
    driver.shows_main_artist_isni_lookup_button(disabled=False)

    session.logout()
    driver.shows_main_artist_isni_lookup_button(disabled=True)
def test_disables_main_artist_section_when_project_is_a_compilation(driver):
    _ = show_page(make_album(compilation=True), make_registered_session())
    driver.shows_main_artist("Various Artists", disabled=True)
    driver.shows_main_artist_region("__ ___", disabled=True)
    driver.shows_main_artist_isni("", disabled=True)
    driver.shows_main_artist_isni_lookup_button(disabled=True)
    driver.shows_main_artist_date_of_birth("2000-01-01", disabled=True)
def test_enables_isni_lookup_when_user_logs_in(driver):
    session = make_anonymous_session()
    _ = show_page(session=session, album=make_album(lead_performer="Album Artist"))
    driver.shows_main_artist_isni_lookup_button(disabled=True)

    session.login_as("*****@*****.**", "api-key", [Permission.lookup_isni.value])
    driver.shows_main_artist_isni_lookup_button(disabled=False)
def test_shows_musicians(driver):
    _ = show_page(project=make_album(
        guest_performers=[("Guitar", "Jimmy Page"), ("Vocals",
                                                     "Robert Plant")]))

    driver.shows_only_musicians_in_table(("Guitar", "Jimmy Page"),
                                         ("Vocals", "Robert Plant"))
Beispiel #5
0
def test_updates_the_displayed_page_when_updating_track_title(driver):
    track = make_track(track_title="track 1")
    _ = show_project_screen(make_album(tracks=[track]))

    driver.shows_pages_in_navigation_combo("Project edition", "1 - track 1")
    track.track_title = "Chevere!"
    driver.shows_pages_in_navigation_combo("Project edition", "1 - Chevere!")
def test_indicates_when_album_performed_by_various_artists(driver):
    track = make_track()
    album = make_album(compilation=True, tracks=[track])

    _ = show_page(album, track)

    driver.shows_album_lead_performer("Various Artists")
def test_disables_lead_performer_edition_when_album_is_not_a_compilation(driver):
    track = make_track()
    album = make_album(lead_performer="Album Artist", compilation=False, tracks=[track])

    _ = show_page(album, track)

    driver.shows_lead_performer("Album Artist", disabled=True)
def test_displays_undefined_lyrics_language_in_case_no_language_specified(driver):
    track = make_track()
    album = make_album(tracks=[track])

    _ = show_page(album, track)

    driver.shows_language("Undetermined")
def test_signals_when_artwork_selected(driver):
    album = make_album()
    signal = ValueMatcherProbe("select artwork")
    _ = show_page(album, on_select_artwork=lambda: signal.received())

    driver.add_artwork()
    driver.check(signal)
def test_signals_when_artwork_selected(driver):
    album = make_album()
    signal = ValueMatcherProbe("select artwork")
    _ = show_page(album, on_select_artwork=lambda: signal.received())

    driver.add_artwork()
    driver.check(signal)
def test_updates_track_list_when_album_metadata_change(driver):
    album = make_album(tracks=[make_track(track_title="Chevere!"), make_track(track_title="Zumbar")])
    _ = show_track_list_tab(album)

    album.release_name = "Honeycomb"

    driver.shows_tracks_in_order(["Chevere!", "Honeycomb"], ["Zumbar", "Honeycomb"])
def test_displays_invalid_image_placeholder_when_project_has_corrupted_picture(
        driver):
    _ = show_page(
        make_album(
            images=[make_image("image/jpeg", QByteArray(), Image.FRONT_COVER)
                    ]))
    driver.shows_picture_placeholder()
def test_unsubscribes_from_event_signals_on_close(driver):
    track = make_track()
    page = show_track_list_tab(make_album(tracks=[track]))

    page.close()
    assert_that(track.metadata_changed.subscribers, empty(),
                "'track metadata changed' subscriptions")
def test_displays_main_project_cover_when_existing(driver):
    _ = show_page(
        make_album(images=[
            make_image("image/jpeg", _load_test_image("front-cover.jpg"),
                       Image.FRONT_COVER)
        ]))
    driver.shows_picture()
def test_indicates_whether_project_is_a_compilation(driver):
    album = make_album(compilation=False)
    _ = show_page(album)
    driver.shows_compilation(False)

    album.compilation = True
    driver.shows_compilation(True)
def test_selects_identities_on_isni_lookup(driver):
    signal = ValueMatcherProbe("select identity", "performer")

    _ = show_page(make_album(lead_performer="performer"), make_registered_session(), on_select_identity=signal.received)

    driver.lookup_isni_of_main_artist()
    driver.check(signal)
def test_updates_the_displayed_page_when_updating_track_title(driver):
    track = make_track(track_title="track 1")
    _ = show_project_screen(make_album(tracks=[track]))

    driver.shows_pages_in_navigation_combo("Project edition", "1 - track 1")
    track.track_title = "Chevere!"
    driver.shows_pages_in_navigation_combo("Project edition", "1 - Chevere!")
def test_indicates_whether_project_is_a_compilation(driver):
    album = make_album(compilation=False)
    _ = show_page(album)
    driver.shows_compilation(False)

    album.compilation = True
    driver.shows_compilation(True)
def test_indicates_when_album_performed_by_various_artists(driver):
    track = make_track()
    album = make_album(compilation=True, tracks=[track])

    _ = show_page(album, track)

    driver.shows_album_lead_performer("Various Artists")
def test_removes_track_menu_item_when_removing_a_track_from_the_project(driver):
    album = make_album(tracks=[(make_track(track_title="Chevere!")), (make_track(track_title="That is that"))])
    _ = show_project_screen(album)

    driver.shows_pages_in_navigation_combo("Project edition", "1 - Chevere!", "2 - That is that")
    album.remove_track(0)
    driver.shows_pages_in_navigation_combo("Project edition", "1 - That is that")
def show_dialog(
        isni_selection=IdentitySelection(make_album(), ""), on_assign=ignore):
    dialog = make_isni_assignation_review_dialog(isni_selection,
                                                 on_assign,
                                                 delete_on_close=False)
    show_(dialog)
    return dialog
def test_reorders_navigation_menu_when_moving_a_track(driver):
    album = make_album(tracks=[make_track(track_title="Chevere!"), make_track(track_title="That is that")])
    _ = show_project_screen(album)

    driver.shows_pages_in_navigation_combo("Project edition", "1 - Chevere!", "2 - That is that")
    album.move_track(from_position=0, to_position=1)
    driver.shows_pages_in_navigation_combo("Project edition", "1 - That is that", "2 - Chevere!")
def test_displays_all_tracks_in_rows(driver):
    _ = show_track_list_tab(make_album(tracks=[make_track(track_title="Chevere!"),
                                               make_track(track_title="Honeycomb")]))

    driver.has_track_count(2)
    driver.shows_tracks_in_order(["1", "Chevere!"],
                                 ["2", "Honeycomb"])
Beispiel #24
0
def test_closes_children_pages_on_close(driver):
    closed_signals = MultiValueMatcherProbe(
        "closed pages",
        contains("track_edition_page_3", "track_edition_page_2",
                 "track_edition_page_1", "project_edition_page"))

    def record_close(create_page):
        @wraps(create_page)
        def wrapper(*args, **kwargs):
            page = create_page(*args, **kwargs)
            page.closed.connect(
                lambda: closed_signals.received(page.objectName()))
            return page

        return wrapper

    _ = show_project_screen(
        make_album(tracks=(make_track(), make_track(), make_track())),
        record_close(create_project_page), record_close(create_track_page))

    driver.close()

    driver.has_no_project_edition_page()
    driver.has_no_track_edition_page()
    driver.check(closed_signals)
def test_updates_collaborators_identifiers(driver):
    def isni_lookup(text):
        return isnis.get(text)

    def ipi_lookup(text):
        return ipis.get(text)

    isnis = {"Joel Miller": "000000123456789", "John Roney": "9876543210000000", "Rebecca Maloy": "0102030405060789"}
    ipis = {"Joel Miller": "0102030405060789", "John Roney": "000000123456789", "Rebecca Maloy": "9876543210000000"}

    track = make_track(lyricist=["Joel Miller"], composer=["John Roney"], publisher=["Rebecca Maloy"])
    project = make_album(isnis=isnis, ipis=ipis, tracks=[track])

    _ = show_page(track, on_isni_local_lookup=isni_lookup, on_ipi_local_lookup=ipi_lookup)
    isnis["Joel Miller"] = "0000001234567891"
    isnis["John Roney"] = "98765432100000001"
    isnis["Rebecca Maloy"] = "01020304050607891"
    ipis["Joel Miller"] = "01020304050607891"
    ipis["John Roney"] = "0000001234567891"
    ipis["Rebecca Maloy"] = "98765432100000001"
    project.metadata_changed.emit(project)

    driver.shows_row_details("Joel Miller", "01020304050607891", "0000001234567891")
    driver.shows_role_on_row(0, "Author")
    driver.shows_row_details("John Roney", "0000001234567891", "98765432100000001")
    driver.shows_role_on_row(1, "Composer")
    driver.shows_row_details("Rebecca Maloy", "98765432100000001", "01020304050607891")
    driver.shows_role_on_row(2, "Publisher")
    driver.has_contributors_count(3)
def test_closes_children_pages_on_close(driver):
    closed_signals = MultiValueMatcherProbe("closed pages", contains(
        "track_edition_page_3",
        "track_edition_page_2",
        "track_edition_page_1",
        "project_edition_page"))

    def record_close(create_page):
        @wraps(create_page)
        def wrapper(*args, **kwargs):
            page = create_page(*args, **kwargs)
            page.closed.connect(lambda: closed_signals.received(page.objectName()))
            return page

        return wrapper

    _ = show_project_screen(make_album(tracks=(make_track(), make_track(), make_track())),
                            record_close(create_project_page),
                            record_close(create_track_page))

    driver.close()

    driver.has_no_project_edition_page()
    driver.has_no_track_edition_page()
    driver.check(closed_signals)
def test_omits_software_notice_if_tagging_date_malformed(driver):
    track = make_track(tagger="TGiT",
                       tagger_version="1.0",
                       tagging_time="invalid-time-format")
    album = make_album(tracks=[track])
    _ = show_page(album, track)
    driver.shows_software_notice("Tagged with TGiT v1.0")
def test_disables_main_artist_section_when_project_is_a_compilation(driver):
    _ = show_page(make_album(compilation=True), make_registered_session())
    driver.shows_main_artist("Various Artists", disabled=True)
    driver.shows_main_artist_region("__ ___", disabled=True)
    driver.shows_main_artist_isni("", disabled=True)
    driver.shows_main_artist_isni_lookup_button(disabled=True)
    driver.shows_main_artist_date_of_birth("2000-01-01", disabled=True)
def test_displays_undefined_lyrics_language_in_case_no_language_specified(
        driver):
    track = make_track()
    album = make_album(tracks=[track])

    _ = show_page(album, track)

    driver.shows_language("Undetermined")
def test_displays_works(driver):
    selection = IdentitySelection(
        make_album(tracks=[
            make_track(track_title="Chevere!"),
            make_track(track_title="Zumbar")
        ]), "")
    _ = show_dialog(selection)
    driver.has_works("Chevere!", "Zumbar")
def test_updates_track_row_when_track_metadata_change(driver):
    track = make_track()
    _ = show_track_list_tab(make_album(tracks=[track]))

    track.track_title = "Chevere!"
    track.lead_performer = "Joel Miller"

    driver.shows_track_details("Chevere!", "Joel Miller")
def test_unsubscribe_from_track_events_track_removed_from_album(driver):
    track = make_track()
    album = make_album(tracks=[track])
    _ = show_track_list_tab(album)

    album.remove_track(0)

    assert_that(track.metadata_changed.subscribers, empty(), "track 'metadata changed' subscribers")
def test_updates_track_row_when_track_metadata_change(driver):
    track = make_track()
    _ = show_track_list_tab(make_album(tracks=[track]))

    track.track_title = "Chevere!"
    track.lead_performer = "Joel Miller"

    driver.shows_track_details("Chevere!", "Joel Miller")
def test_makes_play_track_request_when_play_context_menu_item_selected(driver):
    page = show_track_list_tab(make_album(type="mp3", tracks=[make_track(track_title="Spain")]))

    play_request = ValueMatcherProbe("play track request", has_title("Spain"))
    page.on_play_track(play_request.received)

    driver.play_track("Spain")
    driver.check(play_request)
def test_shows_selected_track_title_in_context_menu(driver):
    _ = show_track_list_tab(make_album(tracks=[make_track(track_title="Partways"),
                                               make_track(track_title="Rebop")]))

    driver.select_track("Partways")
    driver.has_context_menu_item(with_text(contains_string("Partways")))
    driver.select_track("Rebop")
    driver.has_context_menu_item(with_text(contains_string("Rebop")))
def test_updates_the_displayed_page_when_navigating_using_the_arrows(driver):
    _ = show_project_screen(make_album(tracks=[make_track(track_title="track 1")]))

    driver.shows_page_in_navigation_combo("Project edition")
    driver.to_next_page()
    driver.shows_page_in_navigation_combo("1 - track 1")
    driver.to_previous_page()
    driver.shows_page_in_navigation_combo("Project edition")
def test_updates_isni_when_main_artist_text_change(driver):
    def lookup(text):
        return "0000000123456789" if text == "Joel Miller" else None

    _ = show_page(make_album(), make_registered_session(), on_isni_local_lookup=lookup)

    driver.change_main_artist("Joel Miller")
    driver.shows_main_artist_isni("0000000123456789")
Beispiel #38
0
def test_make_line_breaks_excel_friendly_by_converting_line_feeds_to_carriage_returns(formatter, out):
    project = make_album(tracks=[build.track(comments="Comments\nspanning\nseveral lines")])

    formatter.write(project, out)

    csv_file = read_csv(out)
    _ = next(csv_file)
    assert_that(next(csv_file), has_item("Comments\rspanning\rseveral lines"), "row with line feeds")
Beispiel #39
0
def create_track_page(track):
    page = make_track_edition_page(make_album(),
                                   track,
                                   create_contributors_tab,
                                   create_chain_of_title_tab,
                                   on_track_changed=ignore)
    page.setObjectName("track_edition_page_" + str(track.track_number))
    return page
def test_disables_isni_lookup_when_user_logs_out(driver):
    session = make_registered_session()
    _ = show_page(session=session,
                  album=make_album(lead_performer="Album Artist"))
    driver.shows_main_artist_isni_lookup_button(disabled=False)

    session.logout()
    driver.shows_main_artist_isni_lookup_button(disabled=True)
def test_displays_musician_table_only_once(driver):
    project = make_album(
        guest_performers=[("Guitar", "Jimmy Page"), ("Vocals",
                                                     "Robert Plant")])
    page = show_page(project=project)
    page.display(project)

    driver.shows_only_musicians_in_table(("Guitar", "Jimmy Page"),
                                         ("Vocals", "Robert Plant"))
Beispiel #42
0
def test_updates_the_displayed_page_when_navigating_using_the_arrows(driver):
    _ = show_project_screen(
        make_album(tracks=[make_track(track_title="track 1")]))

    driver.shows_page_in_navigation_combo("Project edition")
    driver.to_next_page()
    driver.shows_page_in_navigation_combo("1 - track 1")
    driver.to_previous_page()
    driver.shows_page_in_navigation_combo("Project edition")
def test_clears_isni_when_main_artist_not_found(driver):
    def lookup(text):
        return "0000000123456789" if text == "Joel Miller" else None

    album = make_album(lead_performer="Joel Miller", isnis={"Joel Miller": "00000000123456789"})
    _ = show_page(album, make_registered_session(), on_isni_local_lookup=lookup)

    driver.change_main_artist("Rebecca Ann Maloy")
    driver.shows_main_artist_isni("")
def test_unsubscribe_from_track_events_track_removed_from_album(driver):
    track = make_track()
    album = make_album(tracks=[track])
    _ = show_track_list_tab(album)

    album.remove_track(0)

    assert_that(track.metadata_changed.subscribers, empty(),
                "track 'metadata changed' subscribers")
def test_makes_play_track_request_when_play_context_menu_item_selected(driver):
    page = show_track_list_tab(
        make_album(type="mp3", tracks=[make_track(track_title="Spain")]))

    play_request = ValueMatcherProbe("play track request", has_title("Spain"))
    page.on_play_track(play_request.received)

    driver.play_track("Spain")
    driver.check(play_request)
def test_displays_track_details_in_columns(driver):
    _ = show_track_list_tab(make_album(release_name="Honeycomb",
                                       lead_performer="Joel Miller",
                                       tracks=[make_track(track_title="Chevere!",
                                                          bitrate=192000,
                                                          duration=timedelta(minutes=4,
                                                                             seconds=12).total_seconds())]))

    driver.shows_track_details("1", "Chevere!", "Joel Miller", "Honeycomb", "192 kbps", "04:12")
Beispiel #47
0
def test_signals_when_save_project_menu_item_clicked(driver):
    projet = make_album()
    signal = ValueMatcherProbe("save", projet)

    window_ = show_main_window(on_save_project=signal.received)
    window_.display_project_screen(projet)

    driver.save()
    driver.check(signal)
def test_displays_all_tracks_in_rows(driver):
    _ = show_track_list_tab(
        make_album(tracks=[
            make_track(track_title="Chevere!"),
            make_track(track_title="Honeycomb")
        ]))

    driver.has_track_count(2)
    driver.shows_tracks_in_order(["1", "Chevere!"], ["2", "Honeycomb"])
def test_enables_isni_lookup_when_user_logs_in(driver):
    session = make_anonymous_session()
    _ = show_page(session=session,
                  album=make_album(lead_performer="Album Artist"))
    driver.shows_main_artist_isni_lookup_button(disabled=True)

    session.login_as("*****@*****.**", "api-key",
                     [Permission.lookup_isni.value])
    driver.shows_main_artist_isni_lookup_button(disabled=False)
def test_adds_row_to_table_when_track_added_to_album(driver):
    album = make_album()
    _ = show_track_list_tab(album)

    album.add_track(make_track(track_title="Chevere!"))
    album.add_track(make_track(track_title="Zumbar!"))

    driver.has_track_count(2)
    driver.shows_tracks_in_order(["1", "Chevere!"], ["2", "Zumbar!"])
def test_makes_remove_track_request_with_selected_track_when_track_removed(driver, using):
    page = show_track_list_tab(make_album(tracks=[make_track(), make_track(track_title="Chevere!")]))

    remove_request = ValueMatcherProbe("remove track request", 1)
    page.on_remove_track(remove_request.received)

    driver.select_track("Chevere!")
    driver.remove_selected_track(using=using)
    driver.check(remove_request)
def test_makes_add_tracks_request_when_add_button_clicked(driver):
    album = make_album()
    page = show_track_list_tab(album, select_tracks=lambda on_select: on_select("track1", "track2", "track3"))

    add_tracks_signal = ValueMatcherProbe("add tracks", contains("track1", "track2", "track3"))
    page.on_add_tracks(lambda *track_files: add_tracks_signal.received(track_files))

    driver.add_tracks()
    driver.check(add_tracks_signal)
Beispiel #53
0
def test_navigates_using_shortcut(driver):
    album = make_album(tracks=[
        make_track(track_title="Chevere!"),
        make_track(track_title="That is that")
    ])
    _ = show_project_screen(album)

    driver.quick_navigate_to_page("2")
    driver.shows_track_edition_page(2)
def test_efficiently_displays_image_cover_when_it_does_not_change(driver):
    album = make_album(images=[
        make_image("image/jpeg", _load_test_image("big-image.jpg"),
                   Image.FRONT_COVER)
    ])
    page = show_page(album)

    time = timeit.timeit(lambda: page.display(album), number=50)
    assert_that(time, less_than(1), "time to execute render 50 times")
def test_selects_identities_on_isni_lookup(driver):
    signal = ValueMatcherProbe("select identity", "performer")

    _ = show_page(make_album(lead_performer="performer"),
                  make_registered_session(),
                  on_select_identity=signal.received)

    driver.lookup_isni_of_main_artist()
    driver.check(signal)
Beispiel #56
0
def test_signals_when_save_project_keyboard_shortcut_is_activated(driver):
    projet = make_album()
    signal = ValueMatcherProbe("save", projet)

    window_ = show_main_window(on_save_project=signal.received)
    window_.display_project_screen(projet)

    driver.save(using_shortcut=True)
    driver.check(signal)
Beispiel #57
0
def test_signals_when_project_closed(driver):
    project = make_album()
    signal = ValueMatcherProbe("close", project)

    window_ = show_main_window(confirm_close=lambda on_accept: on_accept(), on_close_project=signal.received)
    window_.display_project_screen(project)

    driver.close_project()
    driver.check(signal)
def test_signals_when_adding_ipi_to_local_map():
    project = make_album()
    subscriber = Subscriber()
    project.metadata_changed.subscribe(subscriber)

    director.add_ipi_to(project)("Joel Miller", "0000000123456789")

    assert_that(subscriber.events, contains(contains(has_property("ipis", {"Joel Miller": "0000000123456789"}))),
                "project changed events")
def test_adds_row_to_table_when_track_added_to_album(driver):
    album = make_album()
    _ = show_track_list_tab(album)

    album.add_track(make_track(track_title="Chevere!"))
    album.add_track(make_track(track_title="Zumbar!"))

    driver.has_track_count(2)
    driver.shows_tracks_in_order(["1", "Chevere!"], ["2", "Zumbar!"])
Beispiel #60
0
def test_writes_track_metadata_in_columns(formatter, out):
    project = make_album(release_name="Release Name",
                         lead_performer="Lead Performer",
                         lead_performer_date_of_birth="2009-05-06",
                         lead_performer_region=("CA", ),
                         isnis={
                             "Lead Performer": "0000123456789",
                             "Lyricist": "9876543210000000"
                         },
                         guest_performers=[("Instrument1", "Performer1"),
                                           ("Instrument2", "Performer2")],
                         label_name="Label Name",
                         catalog_number="Catalog Number",
                         upc="Barcode",
                         release_time="2014")

    track = make_track(track_title="Track Title",
                       version_info="Version Info",
                       comments="Comments\n...\n...",
                       featured_guest="Featuring",
                       lyrics="Lyrics\n...\...\n...",
                       language="eng",
                       publisher=["Publisher"],
                       lyricist=["Lyricist"],
                       composer=["Composer"],
                       isrc="ISRC",
                       labels="Tag1 Tag2 Tag3",
                       recording_studio="Studio",
                       recording_studio_region=("CA", "MTL"),
                       production_company="Production Company",
                       production_company_region=("CA", "MTL"),
                       music_producer="Music Producer",
                       mixer="Mixing Engineer",
                       primary_style="Genre",
                       recording_time="2013")

    project.add_track(track)
    track.track_number = 3
    track.total_tracks = 9

    formatter.write(project, out)

    rows = read_csv(out)
    _ = next(rows)
    data = next(rows)
    assert_that(
        data,
        contains("Release Name", "False", "Lead Performer", "0000123456789",
                 "CA", "2009-05-06",
                 "Instrument1: Performer1; Instrument2: Performer2",
                 "Label Name", "Catalog Number", "Barcode",
                 "Comments\r...\r...", "2014", "2013", "Studio", "CA MTL",
                 "Production Company", "CA MTL", "Music Producer",
                 "Mixing Engineer", "Genre", "Track Title", "Version Info",
                 "3", "9", "Featuring", "Lyrics\r...\...\r...", "eng", "ISRC",
                 "Tag1 Tag2 Tag3"), "row")