From 52d8c4aa3d16e7a7b2fe6bf3c2c90b2ec7276db9 Mon Sep 17 00:00:00 2001 From: sentriz Date: Mon, 10 Jun 2019 17:06:41 +0100 Subject: [PATCH] update handler tests --- gen_handler_tests | 90 +++-- server/handler/test_data/db | Bin 102400 -> 118784 bytes .../test_get_album_list_alpha_artist | 107 ++++-- .../test_data/test_get_album_list_alpha_name | 73 +++- .../test_data/test_get_album_list_newest | 95 +++-- .../test_data/test_get_album_list_random | 95 +++-- .../test_get_album_list_two_alpha_artist | 82 +++-- .../test_get_album_list_two_alpha_name | 80 +++-- .../test_data/test_get_album_list_two_newest | 90 +++-- .../test_data/test_get_album_list_two_random | 84 +++-- .../test_data/test_get_album_with_cover | 332 +++++------------- .../test_data/test_get_album_without_cover | 2 +- .../handler/test_data/test_get_artist_id_one | 15 +- .../test_data/test_get_artist_id_three | 19 +- .../handler/test_data/test_get_artist_id_two | 20 +- .../test_data/test_get_artists_no_args | 55 ++- .../test_data/test_get_indexes_no_args | 53 ++- .../test_get_music_directory_with_tracks | 294 ++++------------ .../test_get_music_directory_without_tracks | 11 +- .../handler/test_data/test_search_three_q_13 | 10 +- .../handler/test_data/test_search_three_q_ani | 10 +- .../test_data/test_search_three_q_cert | 2 +- server/handler/test_data/test_search_two_q_13 | 78 +++- .../handler/test_data/test_search_two_q_ani | 8 +- .../handler/test_data/test_search_two_q_cert | 2 +- 25 files changed, 950 insertions(+), 757 deletions(-) diff --git a/gen_handler_tests b/gen_handler_tests index f965dfd..af47879 100755 --- a/gen_handler_tests +++ b/gen_handler_tests @@ -1,29 +1,69 @@ -#!/bin/sh +#!/bin/bash + +test_data_path="server/handler/test_data" +test_listen_addr="localhost:9353" +test_music_path=~/music +test_db_path="$test_data_path/db" + +if [[ "$1" == "--scan" ]]; then + echo -e "\e[91mwarning: \e[39mthe --scan option was passed" + echo "- this option should only be used if the database schema changes" + echo "- the test json will likely change a lot" + echo "- make sure you carefully read the diff of old and new json after this script" + rm "$test_db_path" 2>/dev/null + go run cmd/scanner/main.go \ + -music-path "$test_music_path" \ + -db-path "$test_db_path" +fi + +# start server in fd 3 +mkdir "$test_music_path" 2>/dev/null +exec 3< <( + go run cmd/server/main.go \ + -music-path "$test_music_path" \ + -db-path "$test_db_path" \ + -listen-addr "$test_listen_addr" \ + 2>&1 +) + +# wait for start message +echo "waiting for server to start" +while read line; do + echo "from server: $line" + if [[ "$line" == *'starting server'* ]]; then + break + fi +done <&3 +sleep '0.5' # by folder -curl "http://localhost:6969/rest/getAlbumList.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=alphabeticalByArtist" | jq > server/handler/test_data/test_get_album_list_alpha_artist -curl "http://localhost:6969/rest/getAlbumList.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=alphabeticalByName" | jq > server/handler/test_data/test_get_album_list_alpha_name -curl "http://localhost:6969/rest/getAlbumList.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=alphabeticalByName" | jq > server/handler/test_data/test_get_album_list_two_alpha_name -curl "http://localhost:6969/rest/getAlbumList.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=newest" | jq > server/handler/test_data/test_get_album_list_newest -curl "http://localhost:6969/rest/getAlbumList.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=random" | jq > server/handler/test_data/test_get_album_list_random -curl "http://localhost:6969/rest/search2.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&query=13" | jq > server/handler/test_data/test_search_two_q_13 -curl "http://localhost:6969/rest/search2.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&query=ani" | jq > server/handler/test_data/test_search_two_q_ani -curl "http://localhost:6969/rest/search2.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&query=cert" | jq > server/handler/test_data/test_search_two_q_cert -curl 'http://localhost:6969/rest/getIndexes.view?c=Jamstash&p=admin&u=admin&v=1.9.0&f=json' | jq > server/handler/test_data/test_get_indexes_no_args -curl 'http://localhost:6969/rest/getMusicDirectory.view?c=Jamsstash&id=2&p=admin&u=admin&v=1.9.0&f=json' | jq > server/handler/test_data/test_get_music_directory_without_tracks -curl 'http://localhost:6969/rest/getMusicDirectory.view?c=Jamsstash&id=3&p=admin&u=admin&v=1.9.0&f=json' | jq > server/handler/test_data/test_get_music_directory_with_tracks +curl -s "http://$test_listen_addr/rest/getAlbumList.view?c=c&f=json&p=admin&u=admin&v=v&type=alphabeticalByArtist" | jq > "$test_data_path/test_get_album_list_alpha_artist" +curl -s "http://$test_listen_addr/rest/getAlbumList.view?c=c&f=json&p=admin&u=admin&v=v&type=alphabeticalByName" | jq > "$test_data_path/test_get_album_list_alpha_name" +curl -s "http://$test_listen_addr/rest/getAlbumList.view?c=c&f=json&p=admin&u=admin&v=v&type=alphabeticalByName" | jq > "$test_data_path/test_get_album_list_two_alpha_name" +curl -s "http://$test_listen_addr/rest/getAlbumList.view?c=c&f=json&p=admin&u=admin&v=v&type=newest" | jq > "$test_data_path/test_get_album_list_newest" +curl -s "http://$test_listen_addr/rest/getAlbumList.view?c=c&f=json&p=admin&u=admin&v=v&type=random" | jq > "$test_data_path/test_get_album_list_random" +curl -s "http://$test_listen_addr/rest/search2.view?c=c&f=json&p=admin&u=admin&v=v&query=13" | jq > "$test_data_path/test_search_two_q_13" +curl -s "http://$test_listen_addr/rest/search2.view?c=c&f=json&p=admin&u=admin&v=v&query=ani" | jq > "$test_data_path/test_search_two_q_ani" +curl -s "http://$test_listen_addr/rest/search2.view?c=c&f=json&p=admin&u=admin&v=v&query=cert" | jq > "$test_data_path/test_search_two_q_cert" +curl -s "http://$test_listen_addr/rest/getIndexes.view?c=c&p=admin&u=admin&v=v&f=json" | jq > "$test_data_path/test_get_indexes_no_args" +curl -s "http://$test_listen_addr/rest/getMusicDirectory.view?c=Jamsstash&id=2&p=admin&u=admin&v=v&f=json" | jq > "$test_data_path/test_get_music_directory_without_tracks" +curl -s "http://$test_listen_addr/rest/getMusicDirectory.view?c=Jamsstash&id=3&p=admin&u=admin&v=v&f=json" | jq > "$test_data_path/test_get_music_directory_with_tracks" # by tags -curl "http://localhost:6969/rest/getAlbum.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&id=2" | jq > server/handler/test_data/test_get_album_without_cover -curl "http://localhost:6969/rest/getAlbum.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&id=3" | jq > server/handler/test_data/test_get_album_with_cover -curl "http://localhost:6969/rest/getAlbumList2.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=alphabeticalByArtist" | jq > server/handler/test_data/test_get_album_list_two_alpha_artist -curl "http://localhost:6969/rest/getAlbumList2.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=alphabeticalByName" | jq > server/handler/test_data/test_get_album_list_two_alpha_name -curl "http://localhost:6969/rest/getAlbumList2.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=newest" | jq > server/handler/test_data/test_get_album_list_two_newest -curl "http://localhost:6969/rest/getAlbumList2.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&type=random" | jq > server/handler/test_data/test_get_album_list_two_random -curl "http://localhost:6969/rest/getArtist.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&id=1" | jq > server/handler/test_data/test_get_artist_id_one -curl "http://localhost:6969/rest/getArtist.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&id=2" | jq > server/handler/test_data/test_get_artist_id_two -curl "http://localhost:6969/rest/getArtist.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&id=3" | jq > server/handler/test_data/test_get_artist_id_three -curl "http://localhost:6969/rest/getArtists.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0" | jq > server/handler/test_data/test_get_artists_no_args -curl "http://localhost:6969/rest/search3.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&query=13" | jq > server/handler/test_data/test_search_three_q_13 -curl "http://localhost:6969/rest/search3.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&query=ani" | jq > server/handler/test_data/test_search_three_q_ani -curl "http://localhost:6969/rest/search3.view?c=Jamstash&f=json&p=admin&u=admin&v=1.9.0&query=cert" | jq > server/handler/test_data/test_search_three_q_cert +curl -s "http://$test_listen_addr/rest/getAlbum.view?c=c&f=json&p=admin&u=admin&v=v&id=2" | jq > "$test_data_path/test_get_album_without_cover" +curl -s "http://$test_listen_addr/rest/getAlbum.view?c=c&f=json&p=admin&u=admin&v=v&id=3" | jq > "$test_data_path/test_get_album_with_cover" +curl -s "http://$test_listen_addr/rest/getAlbumList2.view?c=c&f=json&p=admin&u=admin&v=v&type=alphabeticalByArtist" | jq > "$test_data_path/test_get_album_list_two_alpha_artist" +curl -s "http://$test_listen_addr/rest/getAlbumList2.view?c=c&f=json&p=admin&u=admin&v=v&type=alphabeticalByName" | jq > "$test_data_path/test_get_album_list_two_alpha_name" +curl -s "http://$test_listen_addr/rest/getAlbumList2.view?c=c&f=json&p=admin&u=admin&v=v&type=newest" | jq > "$test_data_path/test_get_album_list_two_newest" +curl -s "http://$test_listen_addr/rest/getAlbumList2.view?c=c&f=json&p=admin&u=admin&v=v&type=random" | jq > "$test_data_path/test_get_album_list_two_random" +curl -s "http://$test_listen_addr/rest/getArtist.view?c=c&f=json&p=admin&u=admin&v=v&id=1" | jq > "$test_data_path/test_get_artist_id_one" +curl -s "http://$test_listen_addr/rest/getArtist.view?c=c&f=json&p=admin&u=admin&v=v&id=2" | jq > "$test_data_path/test_get_artist_id_two" +curl -s "http://$test_listen_addr/rest/getArtist.view?c=c&f=json&p=admin&u=admin&v=v&id=3" | jq > "$test_data_path/test_get_artist_id_three" +curl -s "http://$test_listen_addr/rest/getArtists.view?c=c&f=json&p=admin&u=admin&v=v" | jq > "$test_data_path/test_get_artists_no_args" +curl -s "http://$test_listen_addr/rest/search3.view?c=c&f=json&p=admin&u=admin&v=v&query=13" | jq > "$test_data_path/test_search_three_q_13" +curl -s "http://$test_listen_addr/rest/search3.view?c=c&f=json&p=admin&u=admin&v=v&query=ani" | jq > "$test_data_path/test_search_three_q_ani" +curl -s "http://$test_listen_addr/rest/search3.view?c=c&f=json&p=admin&u=admin&v=v&query=cert" | jq > "$test_data_path/test_search_three_q_cert" + +# stop server +pkill -INT -f ".*go.*$test_listen_addr.*" +exec 3<&- diff --git a/server/handler/test_data/db b/server/handler/test_data/db index 194561a299b8f77df35e6580b8f189ce55aa3c28..35b48f41a307ea3b9c444af9ea0b83026ba9395a 100644 GIT binary patch literal 118784 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�OhilsOgw@R40@oQ^YT;J+FRtO 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 literal 102400 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⋙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 diff --git a/server/handler/test_data/test_get_album_list_alpha_artist b/server/handler/test_data/test_get_album_list_alpha_artist index 0a232b9..fc7f932 100644 --- a/server/handler/test_data/test_get_album_list_alpha_artist +++ b/server/handler/test_data/test_get_album_list_alpha_artist @@ -5,47 +5,92 @@ "albumList": { "album": [ { - "id": 6, - "coverArt": 6, + "id": 10, + "coverArt": 10, "artist": "13th Floor Lowervators", "title": "(1967) Easter Nowhere", - "parent": 5, - "isDir": true, - "created": "0001-01-01T00:00:00Z" - }, - { - "id": 7, - "coverArt": 7, - "artist": "13th Floor Lowervators", - "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators", - "parent": 5, - "isDir": true, - "created": "0001-01-01T00:00:00Z" - }, - { - "id": 3, - "coverArt": 3, - "artist": "A Certain Ratio", - "title": "(1994) The Graveyard and the Ballroom", - "parent": 2, - "isDir": true, - "created": "0001-01-01T00:00:00Z" - }, - { - "id": 4, - "coverArt": 4, - "artist": "A Certain Ratio", - "title": "(1981) To Each.", - "parent": 2, + "parent": 9, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { "id": 11, "coverArt": 11, + "artist": "13th Floor Lowervators", + "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators", + "parent": 9, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 7, + "coverArt": 7, + "artist": "A Certain Ratio", + "title": "(1994) The Graveyard and the Ballroom", + "parent": 6, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 8, + "coverArt": 8, + "artist": "A Certain Ratio", + "title": "(1981) To Each.", + "parent": 6, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 5, + "coverArt": 5, + "artist": "Dead Moon", + "title": "(1989) Unknown Passage", + "parent": 4, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 3, + "coverArt": 3, + "artist": "Jah Wobble, The Edge, Holger Czukay", + "title": "(1983) Snake Charmer", + "parent": 2, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 18, + "coverArt": 18, + "artist": "Swell Maps", + "title": "(1980) Jane From Occupied Europe", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 19, + "coverArt": 19, + "artist": "Swell Maps", + "title": "(1979) A Trip to Marineville", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 21, + "coverArt": 21, + "artist": "Ten Years After", + "title": "(1967) Ten Years After", + "parent": 20, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 15, + "coverArt": 15, "artist": "There", "title": "(2010) Anika", - "parent": 10, + "parent": 14, "isDir": true, "created": "0001-01-01T00:00:00Z" } diff --git a/server/handler/test_data/test_get_album_list_alpha_name b/server/handler/test_data/test_get_album_list_alpha_name index f6a3fa6..2ad9f87 100644 --- a/server/handler/test_data/test_get_album_list_alpha_name +++ b/server/handler/test_data/test_get_album_list_alpha_name @@ -5,47 +5,92 @@ "albumList": { "album": [ { - "id": 7, - "coverArt": 7, + "id": 11, + "coverArt": 11, "artist": "13th Floor Lowervators", "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators", - "parent": 5, + "parent": 9, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { - "id": 6, - "coverArt": 6, + "id": 10, + "coverArt": 10, "artist": "13th Floor Lowervators", "title": "(1967) Easter Nowhere", - "parent": 5, + "parent": 9, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { - "id": 4, - "coverArt": 4, + "id": 21, + "coverArt": 21, + "artist": "Ten Years After", + "title": "(1967) Ten Years After", + "parent": 20, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 19, + "coverArt": 19, + "artist": "Swell Maps", + "title": "(1979) A Trip to Marineville", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 18, + "coverArt": 18, + "artist": "Swell Maps", + "title": "(1980) Jane From Occupied Europe", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 8, + "coverArt": 8, "artist": "A Certain Ratio", "title": "(1981) To Each.", - "parent": 2, + "parent": 6, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { "id": 3, "coverArt": 3, - "artist": "A Certain Ratio", - "title": "(1994) The Graveyard and the Ballroom", + "artist": "Jah Wobble, The Edge, Holger Czukay", + "title": "(1983) Snake Charmer", "parent": 2, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { - "id": 11, - "coverArt": 11, + "id": 5, + "coverArt": 5, + "artist": "Dead Moon", + "title": "(1989) Unknown Passage", + "parent": 4, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 7, + "coverArt": 7, + "artist": "A Certain Ratio", + "title": "(1994) The Graveyard and the Ballroom", + "parent": 6, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 15, + "coverArt": 15, "artist": "There", "title": "(2010) Anika", - "parent": 10, + "parent": 14, "isDir": true, "created": "0001-01-01T00:00:00Z" } diff --git a/server/handler/test_data/test_get_album_list_newest b/server/handler/test_data/test_get_album_list_newest index cdeff1a..b647239 100644 --- a/server/handler/test_data/test_get_album_list_newest +++ b/server/handler/test_data/test_get_album_list_newest @@ -5,46 +5,91 @@ "albumList": { "album": [ { - "id": 11, - "coverArt": 11, + "id": 21, + "coverArt": 21, + "artist": "Ten Years After", + "title": "(1967) Ten Years After", + "parent": 20, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 19, + "coverArt": 19, + "artist": "Swell Maps", + "title": "(1979) A Trip to Marineville", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 18, + "coverArt": 18, + "artist": "Swell Maps", + "title": "(1980) Jane From Occupied Europe", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 15, + "coverArt": 15, "artist": "There", "title": "(2010) Anika", - "parent": 10, + "parent": 14, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 11, + "coverArt": 11, + "artist": "13th Floor Lowervators", + "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators", + "parent": 9, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 10, + "coverArt": 10, + "artist": "13th Floor Lowervators", + "title": "(1967) Easter Nowhere", + "parent": 9, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 8, + "coverArt": 8, + "artist": "A Certain Ratio", + "title": "(1981) To Each.", + "parent": 6, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { "id": 7, "coverArt": 7, - "artist": "13th Floor Lowervators", - "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators", - "parent": 5, - "isDir": true, - "created": "0001-01-01T00:00:00Z" - }, - { - "id": 6, - "coverArt": 6, - "artist": "13th Floor Lowervators", - "title": "(1967) Easter Nowhere", - "parent": 5, - "isDir": true, - "created": "0001-01-01T00:00:00Z" - }, - { - "id": 4, - "coverArt": 4, "artist": "A Certain Ratio", - "title": "(1981) To Each.", - "parent": 2, + "title": "(1994) The Graveyard and the Ballroom", + "parent": 6, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 5, + "coverArt": 5, + "artist": "Dead Moon", + "title": "(1989) Unknown Passage", + "parent": 4, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { "id": 3, "coverArt": 3, - "artist": "A Certain Ratio", - "title": "(1994) The Graveyard and the Ballroom", + "artist": "Jah Wobble, The Edge, Holger Czukay", + "title": "(1983) Snake Charmer", "parent": 2, "isDir": true, "created": "0001-01-01T00:00:00Z" diff --git a/server/handler/test_data/test_get_album_list_random b/server/handler/test_data/test_get_album_list_random index b48a5e3..84adc8b 100644 --- a/server/handler/test_data/test_get_album_list_random +++ b/server/handler/test_data/test_get_album_list_random @@ -4,48 +4,93 @@ "version": "1.9.0", "albumList": { "album": [ - { - "id": 11, - "coverArt": 11, - "artist": "There", - "title": "(2010) Anika", - "parent": 10, - "isDir": true, - "created": "0001-01-01T00:00:00Z" - }, { "id": 7, "coverArt": 7, - "artist": "13th Floor Lowervators", - "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators", - "parent": 5, - "isDir": true, - "created": "0001-01-01T00:00:00Z" - }, - { - "id": 4, - "coverArt": 4, "artist": "A Certain Ratio", - "title": "(1981) To Each.", - "parent": 2, + "title": "(1994) The Graveyard and the Ballroom", + "parent": 6, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { "id": 3, "coverArt": 3, - "artist": "A Certain Ratio", - "title": "(1994) The Graveyard and the Ballroom", + "artist": "Jah Wobble, The Edge, Holger Czukay", + "title": "(1983) Snake Charmer", "parent": 2, "isDir": true, "created": "0001-01-01T00:00:00Z" }, { - "id": 6, - "coverArt": 6, + "id": 15, + "coverArt": 15, + "artist": "There", + "title": "(2010) Anika", + "parent": 14, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 19, + "coverArt": 19, + "artist": "Swell Maps", + "title": "(1979) A Trip to Marineville", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 18, + "coverArt": 18, + "artist": "Swell Maps", + "title": "(1980) Jane From Occupied Europe", + "parent": 17, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 8, + "coverArt": 8, + "artist": "A Certain Ratio", + "title": "(1981) To Each.", + "parent": 6, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 11, + "coverArt": 11, + "artist": "13th Floor Lowervators", + "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators", + "parent": 9, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 5, + "coverArt": 5, + "artist": "Dead Moon", + "title": "(1989) Unknown Passage", + "parent": 4, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 21, + "coverArt": 21, + "artist": "Ten Years After", + "title": "(1967) Ten Years After", + "parent": 20, + "isDir": true, + "created": "0001-01-01T00:00:00Z" + }, + { + "id": 10, + "coverArt": 10, "artist": "13th Floor Lowervators", "title": "(1967) Easter Nowhere", - "parent": 5, + "parent": 9, "isDir": true, "created": "0001-01-01T00:00:00Z" } diff --git a/server/handler/test_data/test_get_album_list_two_alpha_artist b/server/handler/test_data/test_get_album_list_two_alpha_artist index dde3bdc..d020b9f 100644 --- a/server/handler/test_data/test_get_album_list_two_alpha_artist +++ b/server/handler/test_data/test_get_album_list_two_alpha_artist @@ -5,43 +5,83 @@ "albumList2": { "album": [ { - "id": 6, - "coverArt": 6, - "artistId": 2, + "id": 10, + "coverArt": 10, + "artistId": 4, "artist": "13th Floor Elevators", "name": "Easter Everywhere", - "created": "2019-06-06T16:38:39.306600701+01:00" + "created": "2019-06-10T17:06:26.01139089+01:00" + }, + { + "id": 11, + "coverArt": 11, + "artistId": 4, + "artist": "13th Floor Elevators", + "name": "The Psychedelic Sounds of the 13th Floor Elevators", + "created": "2019-06-10T17:06:26.015039416+01:00" }, { "id": 7, "coverArt": 7, + "artistId": 3, + "artist": "A Certain Ratio", + "name": "The Graveyard and the Ballroom", + "created": "2019-06-10T17:06:26.003805335+01:00" + }, + { + "id": 8, + "artistId": 3, + "artist": "A Certain Ratio", + "name": "To Each...", + "created": "2019-06-10T17:06:26.00810814+01:00" + }, + { + "id": 15, + "coverArt": 15, + "artistId": 5, + "artist": "Anikas", + "name": "Anika", + "created": "2019-06-10T17:06:26.028934348+01:00" + }, + { + "id": 5, + "coverArt": 5, "artistId": 2, - "artist": "13th Floor Elevators", - "name": "The Psychedelic Sounds of the 13th Floor Elevators", - "created": "2019-06-06T16:38:39.309763889+01:00" + "artist": "Dead Moon", + "name": "Unknown Passage", + "created": "2019-06-10T17:06:26.000595013+01:00" }, { "id": 3, "coverArt": 3, "artistId": 1, - "artist": "A Certain Ratio", - "name": "The Graveyard and the Ballroom", - "created": "2019-06-06T16:38:39.298724062+01:00" + "artist": "Jah Wobble, The Edge & Holger Czukay", + "name": "Snake Charmer", + "created": "2019-06-10T17:06:25.998358476+01:00" }, { - "id": 4, - "artistId": 1, - "artist": "A Certain Ratio", - "name": "To Each...", - "created": "2019-06-06T16:38:39.303278797+01:00" + "id": 18, + "coverArt": 18, + "artistId": 6, + "artist": "Swell Maps", + "name": "Jane From Occupied Europe", + "created": "2019-06-10T17:06:26.031594709+01:00" }, { - "id": 11, - "coverArt": 11, - "artistId": 3, - "artist": "Anikas", - "name": "Anika", - "created": "2019-06-06T16:38:39.31657693+01:00" + "id": 19, + "coverArt": 19, + "artistId": 6, + "artist": "Swell Maps", + "name": "A Trip to Marineville", + "created": "2019-06-10T17:06:26.036222364+01:00" + }, + { + "id": 21, + "coverArt": 21, + "artistId": 7, + "artist": "Ten Years After", + "name": "Ten Years After", + "created": "2019-06-10T17:06:26.041345532+01:00" } ] } diff --git a/server/handler/test_data/test_get_album_list_two_alpha_name b/server/handler/test_data/test_get_album_list_two_alpha_name index 0257551..d619573 100644 --- a/server/handler/test_data/test_get_album_list_two_alpha_name +++ b/server/handler/test_data/test_get_album_list_two_alpha_name @@ -5,43 +5,83 @@ "albumList2": { "album": [ { - "id": 11, - "coverArt": 11, - "artistId": 3, - "artist": "Anikas", - "name": "Anika", - "created": "2019-06-06T16:38:39.31657693+01:00" + "id": 19, + "coverArt": 19, + "artistId": 6, + "artist": "Swell Maps", + "name": "A Trip to Marineville", + "created": "2019-06-10T17:06:26.036222364+01:00" }, { - "id": 6, - "coverArt": 6, - "artistId": 2, + "id": 15, + "coverArt": 15, + "artistId": 5, + "artist": "Anikas", + "name": "Anika", + "created": "2019-06-10T17:06:26.028934348+01:00" + }, + { + "id": 10, + "coverArt": 10, + "artistId": 4, "artist": "13th Floor Elevators", "name": "Easter Everywhere", - "created": "2019-06-06T16:38:39.306600701+01:00" + "created": "2019-06-10T17:06:26.01139089+01:00" + }, + { + "id": 18, + "coverArt": 18, + "artistId": 6, + "artist": "Swell Maps", + "name": "Jane From Occupied Europe", + "created": "2019-06-10T17:06:26.031594709+01:00" }, { "id": 3, "coverArt": 3, "artistId": 1, - "artist": "A Certain Ratio", - "name": "The Graveyard and the Ballroom", - "created": "2019-06-06T16:38:39.298724062+01:00" + "artist": "Jah Wobble, The Edge & Holger Czukay", + "name": "Snake Charmer", + "created": "2019-06-10T17:06:25.998358476+01:00" + }, + { + "id": 21, + "coverArt": 21, + "artistId": 7, + "artist": "Ten Years After", + "name": "Ten Years After", + "created": "2019-06-10T17:06:26.041345532+01:00" }, { "id": 7, "coverArt": 7, - "artistId": 2, - "artist": "13th Floor Elevators", - "name": "The Psychedelic Sounds of the 13th Floor Elevators", - "created": "2019-06-06T16:38:39.309763889+01:00" + "artistId": 3, + "artist": "A Certain Ratio", + "name": "The Graveyard and the Ballroom", + "created": "2019-06-10T17:06:26.003805335+01:00" }, { - "id": 4, - "artistId": 1, + "id": 11, + "coverArt": 11, + "artistId": 4, + "artist": "13th Floor Elevators", + "name": "The Psychedelic Sounds of the 13th Floor Elevators", + "created": "2019-06-10T17:06:26.015039416+01:00" + }, + { + "id": 8, + "artistId": 3, "artist": "A Certain Ratio", "name": "To Each...", - "created": "2019-06-06T16:38:39.303278797+01:00" + "created": "2019-06-10T17:06:26.00810814+01:00" + }, + { + "id": 5, + "coverArt": 5, + "artistId": 2, + "artist": "Dead Moon", + "name": "Unknown Passage", + "created": "2019-06-10T17:06:26.000595013+01:00" } ] } diff --git a/server/handler/test_data/test_get_album_list_two_newest b/server/handler/test_data/test_get_album_list_two_newest index d1c062a..2f61c71 100644 --- a/server/handler/test_data/test_get_album_list_two_newest +++ b/server/handler/test_data/test_get_album_list_two_newest @@ -5,43 +5,83 @@ "albumList2": { "album": [ { - "id": 11, - "coverArt": 11, - "artistId": 3, + "id": 21, + "coverArt": 21, + "artistId": 7, + "artist": "Ten Years After", + "name": "Ten Years After", + "created": "2019-06-10T17:06:26.041345532+01:00" + }, + { + "id": 19, + "coverArt": 19, + "artistId": 6, + "artist": "Swell Maps", + "name": "A Trip to Marineville", + "created": "2019-06-10T17:06:26.036222364+01:00" + }, + { + "id": 18, + "coverArt": 18, + "artistId": 6, + "artist": "Swell Maps", + "name": "Jane From Occupied Europe", + "created": "2019-06-10T17:06:26.031594709+01:00" + }, + { + "id": 15, + "coverArt": 15, + "artistId": 5, "artist": "Anikas", "name": "Anika", - "created": "2019-06-06T16:38:39.31657693+01:00" + "created": "2019-06-10T17:06:26.028934348+01:00" + }, + { + "id": 11, + "coverArt": 11, + "artistId": 4, + "artist": "13th Floor Elevators", + "name": "The Psychedelic Sounds of the 13th Floor Elevators", + "created": "2019-06-10T17:06:26.015039416+01:00" + }, + { + "id": 10, + "coverArt": 10, + "artistId": 4, + "artist": "13th Floor Elevators", + "name": "Easter Everywhere", + "created": "2019-06-10T17:06:26.01139089+01:00" + }, + { + "id": 8, + "artistId": 3, + "artist": "A Certain Ratio", + "name": "To Each...", + "created": "2019-06-10T17:06:26.00810814+01:00" }, { "id": 7, "coverArt": 7, - "artistId": 2, - "artist": "13th Floor Elevators", - "name": "The Psychedelic Sounds of the 13th Floor Elevators", - "created": "2019-06-06T16:38:39.309763889+01:00" - }, - { - "id": 6, - "coverArt": 6, - "artistId": 2, - "artist": "13th Floor Elevators", - "name": "Easter Everywhere", - "created": "2019-06-06T16:38:39.306600701+01:00" - }, - { - "id": 4, - "artistId": 1, + "artistId": 3, "artist": "A Certain Ratio", - "name": "To Each...", - "created": "2019-06-06T16:38:39.303278797+01:00" + "name": "The Graveyard and the Ballroom", + "created": "2019-06-10T17:06:26.003805335+01:00" + }, + { + "id": 5, + "coverArt": 5, + "artistId": 2, + "artist": "Dead Moon", + "name": "Unknown Passage", + "created": "2019-06-10T17:06:26.000595013+01:00" }, { "id": 3, "coverArt": 3, "artistId": 1, - "artist": "A Certain Ratio", - "name": "The Graveyard and the Ballroom", - "created": "2019-06-06T16:38:39.298724062+01:00" + "artist": "Jah Wobble, The Edge & Holger Czukay", + "name": "Snake Charmer", + "created": "2019-06-10T17:06:25.998358476+01:00" } ] } diff --git a/server/handler/test_data/test_get_album_list_two_random b/server/handler/test_data/test_get_album_list_two_random index ecff8b8..f61b30a 100644 --- a/server/handler/test_data/test_get_album_list_two_random +++ b/server/handler/test_data/test_get_album_list_two_random @@ -4,44 +4,84 @@ "version": "1.9.0", "albumList2": { "album": [ - { - "id": 6, - "coverArt": 6, - "artistId": 2, - "artist": "13th Floor Elevators", - "name": "Easter Everywhere", - "created": "2019-06-06T16:38:39.306600701+01:00" - }, { "id": 3, "coverArt": 3, "artistId": 1, - "artist": "A Certain Ratio", - "name": "The Graveyard and the Ballroom", - "created": "2019-06-06T16:38:39.298724062+01:00" + "artist": "Jah Wobble, The Edge & Holger Czukay", + "name": "Snake Charmer", + "created": "2019-06-10T17:06:25.998358476+01:00" }, { - "id": 4, - "artistId": 1, - "artist": "A Certain Ratio", - "name": "To Each...", - "created": "2019-06-06T16:38:39.303278797+01:00" + "id": 10, + "coverArt": 10, + "artistId": 4, + "artist": "13th Floor Elevators", + "name": "Easter Everywhere", + "created": "2019-06-10T17:06:26.01139089+01:00" }, { "id": 7, "coverArt": 7, - "artistId": 2, - "artist": "13th Floor Elevators", - "name": "The Psychedelic Sounds of the 13th Floor Elevators", - "created": "2019-06-06T16:38:39.309763889+01:00" + "artistId": 3, + "artist": "A Certain Ratio", + "name": "The Graveyard and the Ballroom", + "created": "2019-06-10T17:06:26.003805335+01:00" + }, + { + "id": 8, + "artistId": 3, + "artist": "A Certain Ratio", + "name": "To Each...", + "created": "2019-06-10T17:06:26.00810814+01:00" }, { "id": 11, "coverArt": 11, - "artistId": 3, + "artistId": 4, + "artist": "13th Floor Elevators", + "name": "The Psychedelic Sounds of the 13th Floor Elevators", + "created": "2019-06-10T17:06:26.015039416+01:00" + }, + { + "id": 5, + "coverArt": 5, + "artistId": 2, + "artist": "Dead Moon", + "name": "Unknown Passage", + "created": "2019-06-10T17:06:26.000595013+01:00" + }, + { + "id": 15, + "coverArt": 15, + "artistId": 5, "artist": "Anikas", "name": "Anika", - "created": "2019-06-06T16:38:39.31657693+01:00" + "created": "2019-06-10T17:06:26.028934348+01:00" + }, + { + "id": 21, + "coverArt": 21, + "artistId": 7, + "artist": "Ten Years After", + "name": "Ten Years After", + "created": "2019-06-10T17:06:26.041345532+01:00" + }, + { + "id": 19, + "coverArt": 19, + "artistId": 6, + "artist": "Swell Maps", + "name": "A Trip to Marineville", + "created": "2019-06-10T17:06:26.036222364+01:00" + }, + { + "id": 18, + "coverArt": 18, + "artistId": 6, + "artist": "Swell Maps", + "name": "Jane From Occupied Europe", + "created": "2019-06-10T17:06:26.031594709+01:00" } ] } diff --git a/server/handler/test_data/test_get_album_with_cover b/server/handler/test_data/test_get_album_with_cover index cd94224..461bf4a 100644 --- a/server/handler/test_data/test_get_album_with_cover +++ b/server/handler/test_data/test_get_album_with_cover @@ -6,274 +6,108 @@ "id": 3, "coverArt": 3, "artistId": 1, - "artist": "A Certain Ratio", - "name": "The Graveyard and the Ballroom", - "created": "2019-06-06T16:38:39.298724062+01:00", + "artist": "Jah Wobble, The Edge & Holger Czukay", + "name": "Snake Charmer", + "created": "2019-06-10T17:06:25.998358476+01:00", "song": [ { - "album": "The Graveyard and the Ballroom", + "album": "Snake Charmer", "albumId": 3, - "artist": "A Certain Ratio", + "artist": "Jah Wobble, The Edge & Holger Czukay", "artistId": 1, - "bitRate": 922, + "bitRate": 866, "contentType": "audio/x-flac", "coverArt": 3, - "created": "2019-06-06T16:38:39.302489659+01:00", - "duration": 174, - "id": 12, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/01.14 Do the Du (casse).flac", - "size": 20545509, - "suffix": "flac", - "title": "Do the Du (casse)", - "track": 1, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 916, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.301301007+01:00", - "duration": 142, - "id": 8, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/02.14 Faceless.flac", - "size": 16657561, - "suffix": "flac", - "title": "Faceless", - "track": 2, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 957, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.300698509+01:00", - "duration": 174, - "id": 6, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/03.14 Crippled Child.flac", - "size": 21325811, - "suffix": "flac", - "title": "Crippled Child", - "track": 3, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 961, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.302194015+01:00", - "duration": 201, - "id": 11, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/04.14 Choir.flac", - "size": 24728976, - "suffix": "flac", - "title": "Choir", - "track": 4, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 924, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.299490189+01:00", - "duration": 210, - "id": 2, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/05.14 Flight.flac", - "size": 24860635, - "suffix": "flac", - "title": "Flight", - "track": 5, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 961, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.302789079+01:00", - "duration": 131, - "id": 13, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/06.14 I Feel.flac", - "size": 16118749, - "suffix": "flac", - "title": "I Feel", - "track": 6, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 929, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.303072046+01:00", - "duration": 148, - "id": 14, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/07.14 Strain.flac", - "size": 17608752, - "suffix": "flac", - "title": "Strain", - "track": 7, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 898, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.300381932+01:00", - "duration": 217, - "id": 5, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/08.14 All Night Party.flac", - "size": 24960016, - "suffix": "flac", - "title": "All Night Party", - "track": 8, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 877, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.300087164+01:00", - "duration": 235, - "id": 4, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/09.14 Oceans.flac", - "size": 26401567, - "suffix": "flac", - "title": "Oceans", - "track": 9, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 888, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.301890876+01:00", - "duration": 212, - "id": 10, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/10.14 The Choir.flac", - "size": 24106680, - "suffix": "flac", - "title": "The Choir", - "track": 10, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 916, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.301604638+01:00", - "duration": 205, - "id": 9, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/11.14 The Fox.flac", - "size": 24054498, - "suffix": "flac", - "title": "The Fox", - "track": 11, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 900, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.301006358+01:00", - "duration": 144, - "id": 7, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/12.14 Suspect.flac", - "size": 16592296, - "suffix": "flac", - "title": "Suspect", - "track": 12, - "type": "music" - }, - { - "album": "The Graveyard and the Ballroom", - "albumId": 3, - "artist": "A Certain Ratio", - "artistId": 1, - "bitRate": 877, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "2019-06-06T16:38:39.299163755+01:00", - "duration": 332, + "created": "2019-06-10T17:06:25.998787704+01:00", + "duration": 372, "id": 1, "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/13.14 Flight.flac", - "size": 37302417, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/01.05 Snake Charmer.flac", + "size": 41274185, "suffix": "flac", - "title": "Flight", - "track": 13, + "title": "Snake Charmer", + "track": 1, + "discNumber": 1, "type": "music" }, { - "album": "The Graveyard and the Ballroom", + "album": "Snake Charmer", "albumId": 3, - "artist": "A Certain Ratio", + "artist": "Jah Wobble, The Edge & Holger Czukay", "artistId": 1, - "bitRate": 893, + "bitRate": 733, "contentType": "audio/x-flac", "coverArt": 3, - "created": "2019-06-06T16:38:39.299791782+01:00", - "duration": 213, + "created": "2019-06-10T17:06:25.999138309+01:00", + "duration": 331, + "id": 2, + "parent": 3, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/03.05 It Was a Camel.flac", + "size": 31080508, + "suffix": "flac", + "title": "It Was a Camel", + "track": 1, + "discNumber": 1, + "type": "music" + }, + { + "album": "Snake Charmer", + "albumId": 3, + "artist": "Jah Wobble, The Edge & Holger Czukay", + "artistId": 1, + "bitRate": 798, + "contentType": "audio/x-flac", + "coverArt": 3, + "created": "2019-06-10T17:06:25.999449918+01:00", + "duration": 523, "id": 3, "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/14.14 Genotype_Phenotype.flac", - "size": 24349252, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/02.05 Hold On to Your Dreams.flac", + "size": 53447545, "suffix": "flac", - "title": "Genotype/Phenotype", - "track": 14, + "title": "Hold On to Your Dreams", + "track": 1, + "discNumber": 1, + "type": "music" + }, + { + "album": "Snake Charmer", + "albumId": 3, + "artist": "Jah Wobble, The Edge & Holger Czukay", + "artistId": 1, + "bitRate": 867, + "contentType": "audio/x-flac", + "coverArt": 3, + "created": "2019-06-10T17:06:25.999768289+01:00", + "duration": 418, + "id": 4, + "parent": 3, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/05.05 Snake Charmer (reprise).flac", + "size": 46427922, + "suffix": "flac", + "title": "Snake Charmer (reprise)", + "track": 1, + "discNumber": 1, + "type": "music" + }, + { + "album": "Snake Charmer", + "albumId": 3, + "artist": "Jah Wobble, The Edge & Holger Czukay", + "artistId": 1, + "bitRate": 961, + "contentType": "audio/x-flac", + "coverArt": 3, + "created": "2019-06-10T17:06:26.000111656+01:00", + "duration": 227, + "id": 5, + "parent": 3, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/04.05 Sleazy.flac", + "size": 27938750, + "suffix": "flac", + "title": "Sleazy", + "track": 1, + "discNumber": 1, "type": "music" } ] diff --git a/server/handler/test_data/test_get_album_without_cover b/server/handler/test_data/test_get_album_without_cover index 309f458..84ba29f 100644 --- a/server/handler/test_data/test_get_album_without_cover +++ b/server/handler/test_data/test_get_album_without_cover @@ -4,7 +4,7 @@ "version": "1.9.0", "album": { "id": 2, - "created": "2019-06-06T16:38:39.298507437+01:00" + "created": "2019-06-10T17:06:25.998150103+01:00" } } } diff --git a/server/handler/test_data/test_get_artist_id_one b/server/handler/test_data/test_get_artist_id_one index 1ece5d9..de52da6 100644 --- a/server/handler/test_data/test_get_artist_id_one +++ b/server/handler/test_data/test_get_artist_id_one @@ -4,22 +4,15 @@ "version": "1.9.0", "artist": { "id": 1, - "name": "A Certain Ratio", + "name": "Jah Wobble, The Edge & Holger Czukay", "album": [ { "id": 3, "coverArt": 3, "artistId": 1, - "artist": "A Certain Ratio", - "name": "The Graveyard and the Ballroom", - "created": "2019-06-06T16:38:39.298724062+01:00" - }, - { - "id": 4, - "artistId": 1, - "artist": "A Certain Ratio", - "name": "To Each...", - "created": "2019-06-06T16:38:39.303278797+01:00" + "artist": "Jah Wobble, The Edge & Holger Czukay", + "name": "Snake Charmer", + "created": "2019-06-10T17:06:25.998358476+01:00" } ] } diff --git a/server/handler/test_data/test_get_artist_id_three b/server/handler/test_data/test_get_artist_id_three index 10fbb5c..cccae96 100644 --- a/server/handler/test_data/test_get_artist_id_three +++ b/server/handler/test_data/test_get_artist_id_three @@ -4,15 +4,22 @@ "version": "1.9.0", "artist": { "id": 3, - "name": "Anikas", + "name": "A Certain Ratio", "album": [ { - "id": 11, - "coverArt": 11, + "id": 7, + "coverArt": 7, "artistId": 3, - "artist": "Anikas", - "name": "Anika", - "created": "2019-06-06T16:38:39.31657693+01:00" + "artist": "A Certain Ratio", + "name": "The Graveyard and the Ballroom", + "created": "2019-06-10T17:06:26.003805335+01:00" + }, + { + "id": 8, + "artistId": 3, + "artist": "A Certain Ratio", + "name": "To Each...", + "created": "2019-06-10T17:06:26.00810814+01:00" } ] } diff --git a/server/handler/test_data/test_get_artist_id_two b/server/handler/test_data/test_get_artist_id_two index e314709..874e11d 100644 --- a/server/handler/test_data/test_get_artist_id_two +++ b/server/handler/test_data/test_get_artist_id_two @@ -4,23 +4,15 @@ "version": "1.9.0", "artist": { "id": 2, - "name": "13th Floor Elevators", + "name": "Dead Moon", "album": [ { - "id": 6, - "coverArt": 6, + "id": 5, + "coverArt": 5, "artistId": 2, - "artist": "13th Floor Elevators", - "name": "Easter Everywhere", - "created": "2019-06-06T16:38:39.306600701+01:00" - }, - { - "id": 7, - "coverArt": 7, - "artistId": 2, - "artist": "13th Floor Elevators", - "name": "The Psychedelic Sounds of the 13th Floor Elevators", - "created": "2019-06-06T16:38:39.309763889+01:00" + "artist": "Dead Moon", + "name": "Unknown Passage", + "created": "2019-06-10T17:06:26.000595013+01:00" } ] } diff --git a/server/handler/test_data/test_get_artists_no_args b/server/handler/test_data/test_get_artists_no_args index a7f5358..46e8e78 100644 --- a/server/handler/test_data/test_get_artists_no_args +++ b/server/handler/test_data/test_get_artists_no_args @@ -8,8 +8,9 @@ "name": "#", "artist": [ { - "id": 2, - "name": "13th Floor Elevators" + "id": 4, + "name": "13th Floor Elevators", + "albumCount": 2 } ] }, @@ -17,12 +18,54 @@ "name": "a", "artist": [ { - "id": 1, - "name": "A Certain Ratio" + "id": 3, + "name": "A Certain Ratio", + "albumCount": 2 }, { - "id": 3, - "name": "Anikas" + "id": 5, + "name": "Anikas", + "albumCount": 1 + } + ] + }, + { + "name": "d", + "artist": [ + { + "id": 2, + "name": "Dead Moon", + "albumCount": 1 + } + ] + }, + { + "name": "j", + "artist": [ + { + "id": 1, + "name": "Jah Wobble, The Edge & Holger Czukay", + "albumCount": 1 + } + ] + }, + { + "name": "s", + "artist": [ + { + "id": 6, + "name": "Swell Maps", + "albumCount": 2 + } + ] + }, + { + "name": "t", + "artist": [ + { + "id": 7, + "name": "Ten Years After", + "albumCount": 1 } ] } diff --git a/server/handler/test_data/test_get_indexes_no_args b/server/handler/test_data/test_get_indexes_no_args index f988b22..b56be40 100644 --- a/server/handler/test_data/test_get_indexes_no_args +++ b/server/handler/test_data/test_get_indexes_no_args @@ -9,21 +9,64 @@ "name": "#", "artist": [ { - "id": 5, - "name": "13th Floor Lowervators" + "id": 9, + "name": "13th Floor Lowervators", + "albumCount": 2 }, { - "id": 8, - "name": "___Anika" + "id": 12, + "name": "___Anika", + "albumCount": 2 } ] }, { "name": "a", + "artist": [ + { + "id": 6, + "name": "A Certain Ratio", + "albumCount": 2 + } + ] + }, + { + "name": "d", + "artist": [ + { + "id": 4, + "name": "Dead Moon", + "albumCount": 1 + } + ] + }, + { + "name": "j", "artist": [ { "id": 2, - "name": "A Certain Ratio" + "name": "Jah Wobble, The Edge, Holger Czukay", + "albumCount": 1 + } + ] + }, + { + "name": "s", + "artist": [ + { + "id": 17, + "name": "Swell Maps", + "albumCount": 2 + } + ] + }, + { + "name": "t", + "artist": [ + { + "id": 20, + "name": "Ten Years After", + "albumCount": 1 } ] } diff --git a/server/handler/test_data/test_get_music_directory_with_tracks b/server/handler/test_data/test_get_music_directory_with_tracks index 35a5a40..968a572 100644 --- a/server/handler/test_data/test_get_music_directory_with_tracks +++ b/server/handler/test_data/test_get_music_directory_with_tracks @@ -5,244 +5,96 @@ "directory": { "id": 3, "parent": 2, - "name": "(1994) The Graveyard and the Ballroom", + "name": "(1983) Snake Charmer", "child": [ { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 922, + "album": "(1983) Snake Charmer", + "artist": "Jah Wobble, The Edge & Holger Czukay", + "bitRate": 866, "contentType": "audio/x-flac", "coverArt": 3, "created": "0001-01-01T00:00:00Z", - "duration": 174, - "id": 12, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/01.14 Do the Du (casse).flac", - "size": 20545509, - "suffix": "flac", - "title": "Do the Du (casse)", - "track": 1, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 916, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 142, - "id": 8, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/02.14 Faceless.flac", - "size": 16657561, - "suffix": "flac", - "title": "Faceless", - "track": 2, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 957, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 174, - "id": 6, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/03.14 Crippled Child.flac", - "size": 21325811, - "suffix": "flac", - "title": "Crippled Child", - "track": 3, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 961, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 201, - "id": 11, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/04.14 Choir.flac", - "size": 24728976, - "suffix": "flac", - "title": "Choir", - "track": 4, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 924, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 210, - "id": 2, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/05.14 Flight.flac", - "size": 24860635, - "suffix": "flac", - "title": "Flight", - "track": 5, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 961, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 131, - "id": 13, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/06.14 I Feel.flac", - "size": 16118749, - "suffix": "flac", - "title": "I Feel", - "track": 6, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 929, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 148, - "id": 14, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/07.14 Strain.flac", - "size": 17608752, - "suffix": "flac", - "title": "Strain", - "track": 7, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 898, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 217, - "id": 5, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/08.14 All Night Party.flac", - "size": 24960016, - "suffix": "flac", - "title": "All Night Party", - "track": 8, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 877, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 235, - "id": 4, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/09.14 Oceans.flac", - "size": 26401567, - "suffix": "flac", - "title": "Oceans", - "track": 9, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 888, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 212, - "id": 10, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/10.14 The Choir.flac", - "size": 24106680, - "suffix": "flac", - "title": "The Choir", - "track": 10, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 916, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 205, - "id": 9, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/11.14 The Fox.flac", - "size": 24054498, - "suffix": "flac", - "title": "The Fox", - "track": 11, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 900, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 144, - "id": 7, - "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/12.14 Suspect.flac", - "size": 16592296, - "suffix": "flac", - "title": "Suspect", - "track": 12, - "type": "music" - }, - { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 877, - "contentType": "audio/x-flac", - "coverArt": 3, - "created": "0001-01-01T00:00:00Z", - "duration": 332, + "duration": 372, "id": 1, "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/13.14 Flight.flac", - "size": 37302417, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/01.05 Snake Charmer.flac", + "size": 41274185, "suffix": "flac", - "title": "Flight", - "track": 13, + "title": "Snake Charmer", + "track": 1, + "discNumber": 1, "type": "music" }, { - "album": "(1994) The Graveyard and the Ballroom", - "artist": "A Certain Ratio", - "bitRate": 893, + "album": "(1983) Snake Charmer", + "artist": "Jah Wobble, The Edge & Holger Czukay", + "bitRate": 798, "contentType": "audio/x-flac", "coverArt": 3, "created": "0001-01-01T00:00:00Z", - "duration": 213, + "duration": 523, "id": 3, "parent": 3, - "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/14.14 Genotype_Phenotype.flac", - "size": 24349252, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/02.05 Hold On to Your Dreams.flac", + "size": 53447545, "suffix": "flac", - "title": "Genotype/Phenotype", - "track": 14, + "title": "Hold On to Your Dreams", + "track": 1, + "discNumber": 1, + "type": "music" + }, + { + "album": "(1983) Snake Charmer", + "artist": "Jah Wobble, The Edge & Holger Czukay", + "bitRate": 733, + "contentType": "audio/x-flac", + "coverArt": 3, + "created": "0001-01-01T00:00:00Z", + "duration": 331, + "id": 2, + "parent": 3, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/03.05 It Was a Camel.flac", + "size": 31080508, + "suffix": "flac", + "title": "It Was a Camel", + "track": 1, + "discNumber": 1, + "type": "music" + }, + { + "album": "(1983) Snake Charmer", + "artist": "Jah Wobble, The Edge & Holger Czukay", + "bitRate": 961, + "contentType": "audio/x-flac", + "coverArt": 3, + "created": "0001-01-01T00:00:00Z", + "duration": 227, + "id": 5, + "parent": 3, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/04.05 Sleazy.flac", + "size": 27938750, + "suffix": "flac", + "title": "Sleazy", + "track": 1, + "discNumber": 1, + "type": "music" + }, + { + "album": "(1983) Snake Charmer", + "artist": "Jah Wobble, The Edge & Holger Czukay", + "bitRate": 867, + "contentType": "audio/x-flac", + "coverArt": 3, + "created": "0001-01-01T00:00:00Z", + "duration": 418, + "id": 4, + "parent": 3, + "path": "Jah Wobble, The Edge, Holger Czukay/(1983) Snake Charmer/05.05 Snake Charmer (reprise).flac", + "size": 46427922, + "suffix": "flac", + "title": "Snake Charmer (reprise)", + "track": 1, + "discNumber": 1, "type": "music" } ] diff --git a/server/handler/test_data/test_get_music_directory_without_tracks b/server/handler/test_data/test_get_music_directory_without_tracks index 325fb24..8604a74 100644 --- a/server/handler/test_data/test_get_music_directory_without_tracks +++ b/server/handler/test_data/test_get_music_directory_without_tracks @@ -5,7 +5,7 @@ "directory": { "id": 2, "parent": 1, - "name": "A Certain Ratio", + "name": "Jah Wobble, The Edge, Holger Czukay", "child": [ { "coverArt": 3, @@ -13,14 +13,7 @@ "id": 3, "isDir": true, "parent": 2, - "title": "(1994) The Graveyard and the Ballroom" - }, - { - "created": "0001-01-01T00:00:00Z", - "id": 4, - "isDir": true, - "parent": 2, - "title": "(1981) To Each." + "title": "(1983) Snake Charmer" } ] } diff --git a/server/handler/test_data/test_search_three_q_13 b/server/handler/test_data/test_search_three_q_13 index c70a7c2..dff8055 100644 --- a/server/handler/test_data/test_search_three_q_13 +++ b/server/handler/test_data/test_search_three_q_13 @@ -5,18 +5,18 @@ "searchResult3": { "artist": [ { - "id": 2, + "id": 4, "name": "13th Floor Elevators" } ], "album": [ { - "id": 7, - "coverArt": 7, - "artistId": 2, + "id": 11, + "coverArt": 11, + "artistId": 4, "artist": "13th Floor Elevators", "name": "The Psychedelic Sounds of the 13th Floor Elevators", - "created": "2019-06-06T16:38:39.309763889+01:00" + "created": "2019-06-10T17:06:26.015039416+01:00" } ] } diff --git a/server/handler/test_data/test_search_three_q_ani b/server/handler/test_data/test_search_three_q_ani index bf21ecf..016359a 100644 --- a/server/handler/test_data/test_search_three_q_ani +++ b/server/handler/test_data/test_search_three_q_ani @@ -5,18 +5,18 @@ "searchResult3": { "artist": [ { - "id": 3, + "id": 5, "name": "Anikas" } ], "album": [ { - "id": 11, - "coverArt": 11, - "artistId": 3, + "id": 15, + "coverArt": 15, + "artistId": 5, "artist": "Anikas", "name": "Anika", - "created": "2019-06-06T16:38:39.31657693+01:00" + "created": "2019-06-10T17:06:26.028934348+01:00" } ] } diff --git a/server/handler/test_data/test_search_three_q_cert b/server/handler/test_data/test_search_three_q_cert index 2020872..caf05c7 100644 --- a/server/handler/test_data/test_search_three_q_cert +++ b/server/handler/test_data/test_search_three_q_cert @@ -5,7 +5,7 @@ "searchResult3": { "artist": [ { - "id": 1, + "id": 3, "name": "A Certain Ratio" } ] diff --git a/server/handler/test_data/test_search_two_q_13 b/server/handler/test_data/test_search_two_q_13 index db2f5a2..b2041a8 100644 --- a/server/handler/test_data/test_search_two_q_13 +++ b/server/handler/test_data/test_search_two_q_13 @@ -5,18 +5,18 @@ "searchResult2": { "artist": [ { - "id": 5, + "id": 9, "parent": 1, "name": "13th Floor Lowervators" } ], "album": [ { - "coverArt": 7, + "coverArt": 11, "created": "0001-01-01T00:00:00Z", - "id": 7, + "id": 11, "isDir": true, - "parent": 5, + "parent": 9, "title": "(1966) The Psychedelic Sounds of the 13th Floor Elevators" } ], @@ -26,16 +26,17 @@ "artist": "A Certain Ratio", "bitRate": 877, "contentType": "audio/x-flac", - "coverArt": 3, + "coverArt": 7, "created": "0001-01-01T00:00:00Z", "duration": 332, - "id": 1, - "parent": 3, + "id": 15, + "parent": 7, "path": "A Certain Ratio/(1994) The Graveyard and the Ballroom/13.14 Flight.flac", "size": 37302417, "suffix": "flac", "title": "Flight", - "track": 13, + "track": 1, + "discNumber": 1, "type": "music" }, { @@ -43,16 +44,71 @@ "artist": "13th Floor Elevators", "bitRate": 245, "contentType": "audio/mpeg", - "coverArt": 7, + "coverArt": 11, "created": "0001-01-01T00:00:00Z", "duration": 154, - "id": 35, - "parent": 7, + "id": 49, + "parent": 11, "path": "13th Floor Lowervators/(1966) The Psychedelic Sounds of the 13th Floor Elevators/13.21 Before You Accuse Me.mp3", "size": 4722688, "suffix": "mp3", "title": "Before You Accuse Me", "track": 13, + "discNumber": 1, + "type": "music" + }, + { + "album": "(1980) Jane From Occupied Europe", + "artist": "Swell Maps", + "bitRate": 1176, + "contentType": "audio/x-flac", + "coverArt": 18, + "created": "0001-01-01T00:00:00Z", + "duration": 220, + "id": 85, + "parent": 18, + "path": "Swell Maps/(1980) Jane From Occupied Europe/13.16 Blenheim Shots.flac", + "size": 33140852, + "suffix": "flac", + "title": "Blenheim Shots", + "track": 1, + "discNumber": 1, + "type": "music" + }, + { + "album": "(1979) A Trip to Marineville", + "artist": "Swell Maps", + "bitRate": 295, + "contentType": "audio/mpeg", + "coverArt": 19, + "created": "0001-01-01T00:00:00Z", + "duration": 463, + "id": 102, + "parent": 19, + "path": "Swell Maps/(1979) A Trip to Marineville/d01 13.14 Adventuring Into Basketry.mp3", + "size": 17119309, + "suffix": "mp3", + "title": "Adventuring Into Basketry", + "track": 13, + "discNumber": 1, + "type": "music" + }, + { + "album": "(1967) Ten Years After", + "artist": "Ten Years After", + "bitRate": 192, + "contentType": "audio/ogg", + "coverArt": 21, + "created": "0001-01-01T00:00:00Z", + "duration": 433, + "id": 115, + "parent": 21, + "path": "Ten Years After/(1967) Ten Years After/13.15 Spider in My Web.ogg", + "size": 10400948, + "suffix": "ogg", + "title": "Spider in My Web", + "track": 13, + "discNumber": 1, "type": "music" } ] diff --git a/server/handler/test_data/test_search_two_q_ani b/server/handler/test_data/test_search_two_q_ani index c199c25..2ab697d 100644 --- a/server/handler/test_data/test_search_two_q_ani +++ b/server/handler/test_data/test_search_two_q_ani @@ -5,18 +5,18 @@ "searchResult2": { "artist": [ { - "id": 8, + "id": 12, "parent": 1, "name": "___Anika" } ], "album": [ { - "coverArt": 11, + "coverArt": 15, "created": "0001-01-01T00:00:00Z", - "id": 11, + "id": 15, "isDir": true, - "parent": 10, + "parent": 14, "title": "(2010) Anika" } ] diff --git a/server/handler/test_data/test_search_two_q_cert b/server/handler/test_data/test_search_two_q_cert index c838b36..4625ac6 100644 --- a/server/handler/test_data/test_search_two_q_cert +++ b/server/handler/test_data/test_search_two_q_cert @@ -5,7 +5,7 @@ "searchResult2": { "artist": [ { - "id": 2, + "id": 6, "parent": 1, "name": "A Certain Ratio" }