예제 #1
0
    def test_009_search_date(self):

        cursor = self.conn.cursor()
        RecordingSummaryView.get_all(cursor)
        recording_id = cursor.fetchall()[0].id
        recording = LibrarySearchView.get_recording(cursor, recording_id)

        exact_date = date.strftime(recording.recording_date, "%Y-%m-%d")
        any_year = date.strftime(recording.recording_date, "*-%m-%d")
        partial_year = re.sub(
            "19", "*", date.strftime(recording.recording_date, "%Y-%m-%d"))
        year_and_month = date.strftime(recording.recording_date, "%Y-%m-*")

        search = deepcopy(self.default_query)
        search["match"].append({"recording_date": exact_date})
        RecordingSummaryView.search(cursor, search)
        result = cursor.fetchall()
        self.assertEqual(len(result), 1)

        search["match"][0]["recording_date"] = any_year
        RecordingSummaryView.search(cursor, search)
        result = cursor.fetchall()
        self.assertEqual(len(result), 1)

        search["match"][0]["recording_date"] = partial_year
        RecordingSummaryView.search(cursor, search)
        result = cursor.fetchall()
        self.assertEqual(len(result), 1)

        search["match"][0]["recording_date"] = year_and_month
        RecordingSummaryView.search(cursor, search)
        result = cursor.fetchall()
        self.assertEqual(len(result), 1)

        cursor.close()
예제 #2
0
    def test_003_get_summaries(self):

        cursor = self.conn.cursor()
        cursor.execute("select distinct * from recording_summary")
        RecordingSummaryView.get_all(cursor)
        summaries = cursor.fetchall()
        self.assertEqual(len(summaries), 1)
        first = summaries[0]
        self.assertEqual(first.title, "Keep It Like a Secret")
        cursor.close()
예제 #3
0
    def test_004_get_recording(self):

        cursor = self.conn.cursor()
        RecordingSummaryView.get_all(cursor)
        recording_id = cursor.fetchall()[0].id
        recording = LibrarySearchView.get_recording(cursor, recording_id)
        self.assertEqual(len(recording.tracks), 3)
        self.assertEqual(recording.tracks[0].artist[0], "Built to Spill")
        self.assertEqual(recording.tracks[0].title, "The Plan")
        self.assertEqual(recording.recording_date, date(1999, 2, 2))
        cursor.close()
예제 #4
0
    def test_005_update_recording(self):

        cursor = self.conn.cursor()
        RecordingSummaryView.get_all(cursor)
        recording_id = cursor.fetchall()[0].id
        recording = LibrarySearchView.get_recording(cursor, recording_id)
        for track in recording.tracks:
            track.artist[0] = "Built To Spill"
            track.genre.append("Rock")
        LibrarySearchView.update_recording(cursor, recording.serialize())

        album_rating = Rating("recording-rating", recording_id, 5)
        track_rating = Rating("track", recording.tracks[0].filename, 5)
        RecordingTable.set_rating(cursor, album_rating)
        TrackTable.set_rating(cursor, track_rating)

        updated = LibrarySearchView.get_recording(cursor, recording_id)
        self.assertEqual(updated.tracks[0].artist[0], "Built To Spill")
        self.assertEqual(updated.rating, 5)
        self.assertEqual(updated.tracks[0].rating, 5)
        cursor.close()
예제 #5
0
    def test_010_sort(self):

        cursor = self.conn.cursor()

        RecordingSummaryView.get_all(cursor, "artist")
        summaries = cursor.fetchall()
        first = summaries[0]
        self.assertEqual(len(summaries), 2)
        self.assertEqual(first.title, "Keep It Like a Secret")

        search = deepcopy(self.default_query)
        search["sort"] = ["title"]
        RecordingSummaryView.search(cursor, search)
        result = cursor.fetchall()
        first = result[0]
        self.assertEqual(len(result), 2)
        self.assertEqual(first.title, "Edge of the Sun")

        search["order"] = "desc"
        RecordingSummaryView.search(cursor, search)
        result = cursor.fetchall()
        first = result[0]
        self.assertEqual(first.title, "Keep It Like a Secret")

        cursor.close()
예제 #6
0
    def test_007_search_config(self):

        cursor = self.conn.cursor()
        config = RecordingSummaryView.search_configuration(cursor)

        default_query = config["default_query"]
        self.assertEqual(default_query, self.default_query)

        search_options = config["search_options"]

        order = sorted(RecordingSummaryView.search_options,
                       key=lambda k: RecordingSummaryView.search_options[k][1])
        self.assertListEqual(order, list(search_options.keys()))

        self.assertEqual(search_options["recording"]["type"],
                         RecordingSummaryView.search_options["recording"][0])
        self.assertEqual(search_options["recording"]["display"],
                         RecordingSummaryView.search_options["recording"][1])
        self.assertEqual(len(search_options["recording"]["values"]), 0)
        self.assertEqual(search_options["artist"]["type"], "text")
        self.assertListEqual(search_options["genre"]["values"], ["Rock"])

        cursor.close()
예제 #7
0
    def test_008_search(self):

        cursor = self.conn.cursor()
        directory = self.directory_service.get_directory(
            "root/Edge of the Sun")
        self.directory_service.aggregate(directory)
        recording = self.directory_service.create_recording(
            directory, directory.text[0])
        recording.official = True
        LibrarySearchView.create_recording(cursor, recording.serialize())
        album_rating = Rating("recording-rating", recording.id, 5)
        RecordingTable.set_rating(cursor, album_rating)

        artist_search = deepcopy(self.default_query)
        artist_search["match"].append({"artist": "Built To Spill"})
        RecordingSummaryView.search(cursor, artist_search)
        artist_result = cursor.fetchall()
        self.assertEqual(len(artist_result), 1)

        title_search = deepcopy(self.default_query)
        title_search["match"].append({"recording": "Keep It Like A Secret"})
        RecordingSummaryView.search(cursor, title_search)
        title_result = cursor.fetchall()
        self.assertEqual(len(title_result), 1)

        track_search = deepcopy(self.default_query)
        track_search["match"].append({"title": "Carry the Zero"})
        RecordingSummaryView.search(cursor, track_search)
        track_result = cursor.fetchall()
        self.assertEqual(len(track_result), 1)

        rating_search = deepcopy(self.default_query)
        rating_search["match"].append({"recording_rating": 5})
        RecordingSummaryView.search(cursor, rating_search)
        rating_result = cursor.fetchall()
        self.assertEqual(len(rating_result), 1)

        exclude_artist = deepcopy(self.default_query)
        exclude_artist["exclude"].append({"artist": "Calexico"})
        RecordingSummaryView.search(cursor, exclude_artist)
        exclude_artist_result = cursor.fetchall()
        self.assertEqual(len(exclude_artist_result), 1)

        rating_search = deepcopy(self.default_query)
        rating_search["exclude"].append({"recording_rating": 3})
        RecordingSummaryView.search(cursor, rating_search)
        rating_result = cursor.fetchall()
        self.assertEqual(len(rating_result), 1)

        rating_search = deepcopy(self.default_query)
        rating_search["unrated"] = True
        RecordingSummaryView.search(cursor, rating_search)
        rating_result = cursor.fetchall()
        self.assertEqual(len(rating_result), 2)

        cursor.close()