jam-cloud/ruby/spec/jam_ruby/models/jam_track_search_spec.rb

90 lines
3.4 KiB
Ruby
Raw Permalink Normal View History

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
}
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
JamTrackTrack.delete_all
freebird
stairway
2015-08-02 03:05:57 +00:00
end
describe "Search filter" do
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
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,
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
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
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,
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)
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