2015-08-02 03:05:57 +00:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
|
|
describe 'JamTrack Search Model' do
|
|
|
|
|
|
|
|
|
|
let(:artist_filter) {
|
|
|
|
|
filter = JamTrackSearch.json_schema.clone
|
|
|
|
|
filter[JamTrackSearch::KEY_RESULT_TYPES] = [JamTrackSearch::KEY_ARTISTS]
|
|
|
|
|
filter
|
|
|
|
|
}
|
|
|
|
|
let(:song_filter) {
|
|
|
|
|
filter = JamTrackSearch.json_schema.clone
|
|
|
|
|
filter[JamTrackSearch::KEY_RESULT_TYPES] = [JamTrackSearch::KEY_SONGS]
|
|
|
|
|
filter
|
|
|
|
|
}
|
2015-08-02 07:31:58 +00:00
|
|
|
let(:freebird) {
|
|
|
|
|
FactoryGirl.create(:jam_track_with_tracks, original_artist: 'jim bob', name: 'freebird')
|
|
|
|
|
}
|
|
|
|
|
let(:stairway) {
|
|
|
|
|
FactoryGirl.create(:jam_track_with_tracks, original_artist: 'jim bob', name: 'stairway to heaven')
|
|
|
|
|
}
|
2015-08-02 03:05:57 +00:00
|
|
|
|
|
|
|
|
before :each do
|
|
|
|
|
JamTrack.delete_all
|
2015-08-02 07:31:58 +00:00
|
|
|
JamTrackTrack.delete_all
|
|
|
|
|
freebird
|
|
|
|
|
stairway
|
2015-08-02 03:05:57 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "Search filter" do
|
2015-08-02 07:31:58 +00:00
|
|
|
|
2015-08-02 03:05:57 +00:00
|
|
|
it "finds by artist" do
|
2015-11-08 21:31:38 +00:00
|
|
|
pending
|
2015-08-02 03:05:57 +00:00
|
|
|
filter = artist_filter.clone
|
2015-08-02 07:31:58 +00:00
|
|
|
filter[JamTrackSearch::KEY_SEARCH_STR] = freebird.original_artist
|
2015-11-08 21:31:38 +00:00
|
|
|
filter = JamTrackSearch.new.search_results_page(filter['query'])
|
2015-08-02 15:38:32 +00:00
|
|
|
expect(filter[JamTrackSearch::KEY_RESULTS][JamTrackSearch::KEY_ARTISTS].count).to be(1)
|
2015-08-02 03:05:57 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "paginates by artist" do
|
2015-11-08 21:31:38 +00:00
|
|
|
pending
|
|
|
|
|
JamTrackSearch::PER_PAGE.times do |nn|
|
2015-08-02 03:05:57 +00:00
|
|
|
FactoryGirl.create(:jam_track_with_tracks,
|
2015-08-02 07:31:58 +00:00
|
|
|
original_artist: freebird.original_artist + nn.to_s,
|
2015-08-02 03:05:57 +00:00
|
|
|
name: 'abc'+nn.to_s)
|
|
|
|
|
end
|
|
|
|
|
filter = artist_filter.clone
|
2015-08-02 07:31:58 +00:00
|
|
|
filter[JamTrackSearch::KEY_SEARCH_STR] = freebird.original_artist
|
2015-11-08 21:31:38 +00:00
|
|
|
out_filter = JamTrackSearch.new.search_results_page(filter.clone['query'])
|
|
|
|
|
expect(out_filter[JamTrackSearch::KEY_RESULTS][JamTrackSearch::KEY_ARTISTS].count).to be([JamTrackSearch::PER_PAGE, JamTrack.count].min)
|
|
|
|
|
num_page = (JamTrack.count / JamTrackSearch::PER_PAGE) + 1
|
2015-08-02 03:05:57 +00:00
|
|
|
expect(out_filter[JamTrackSearch::KEY_ARTISTS]['page_count']).to be(num_page)
|
|
|
|
|
|
|
|
|
|
filter[JamTrackSearch::KEY_ARTISTS]['page_num'] = 2
|
2015-11-08 21:31:38 +00:00
|
|
|
out_filter = JamTrackSearch.new.search_results_page(filter.clone['query'])
|
2015-08-02 15:38:32 +00:00
|
|
|
expect(out_filter[JamTrackSearch::KEY_RESULTS][JamTrackSearch::KEY_ARTISTS].count).to be(1)
|
2015-08-02 03:05:57 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "finds by song" do
|
2015-11-08 21:31:38 +00:00
|
|
|
pending
|
2015-08-02 03:05:57 +00:00
|
|
|
filter = song_filter.clone
|
2015-08-02 07:31:58 +00:00
|
|
|
filter[JamTrackSearch::KEY_SEARCH_STR] = freebird.name
|
2015-11-08 21:31:38 +00:00
|
|
|
filter = JamTrackSearch.new.search_results_page(filter.clone['query'])
|
2015-08-02 15:38:32 +00:00
|
|
|
expect(filter[JamTrackSearch::KEY_RESULTS][JamTrackSearch::KEY_SONGS].count).to be(1)
|
2015-08-02 03:05:57 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "paginates by song" do
|
2015-11-08 21:31:38 +00:00
|
|
|
pending
|
|
|
|
|
(JamTrackSearch::PER_PAGE + 2).times do |nn|
|
2015-08-02 03:05:57 +00:00
|
|
|
FactoryGirl.create(:jam_track_with_tracks,
|
2015-08-02 07:31:58 +00:00
|
|
|
original_artist: freebird.original_artist,
|
2015-08-02 03:05:57 +00:00
|
|
|
name: 'abc'+nn.to_s)
|
|
|
|
|
end
|
|
|
|
|
filter = song_filter.clone
|
|
|
|
|
filter[JamTrackSearch::KEY_SEARCH_STR] = 'abc'
|
2015-11-08 21:31:38 +00:00
|
|
|
out_filter = JamTrackSearch.new.search_results_page(filter.clone['query'])
|
|
|
|
|
expect(out_filter[JamTrackSearch::KEY_RESULTS][JamTrackSearch::KEY_SONGS].count).to be([JamTrackSearch::PER_PAGE, JamTrack.count].min)
|
2015-08-02 07:31:58 +00:00
|
|
|
|
|
|
|
|
total_count = JamTrack.where("name LIKE 'abc%'").count
|
2015-11-08 21:31:38 +00:00
|
|
|
num_page = (total_count / JamTrackSearch::PER_PAGE) + (0==(total_count % JamTrackSearch::PER_PAGE) ? 0 : 1)
|
2015-08-02 03:05:57 +00:00
|
|
|
expect(out_filter[JamTrackSearch::KEY_SONGS]['page_count']).to be(num_page)
|
|
|
|
|
|
|
|
|
|
filter[JamTrackSearch::KEY_SONGS]['page_num'] = 2
|
2015-11-08 21:31:38 +00:00
|
|
|
out_filter = JamTrackSearch.new.search_results_page(filter.clone['query'])
|
2015-08-02 15:38:32 +00:00
|
|
|
expect(out_filter[JamTrackSearch::KEY_RESULTS][JamTrackSearch::KEY_SONGS].count).to be(2)
|
2015-08-02 03:05:57 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|