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

74 lines
2.3 KiB
Ruby

require 'spec_helper'
describe JamTrackTrack do
include CarrierWave::Test::Matchers
include UsesTempFiles
it "created" do
jam_track_track = FactoryBot.create(:jam_track_track)
jam_track_track.jam_track.should_not be_nil
jam_track_track.jam_track.reload
jam_track_track.jam_track.jam_track_tracks.should == [jam_track_track]
end
describe "validations" do
it "position" do
jam_track = FactoryBot.create(:jam_track)
jam_track_track_1 = FactoryBot.create(:jam_track_track, position: 1, jam_track: jam_track)
jam_track_track_2 = FactoryBot.build(:jam_track_track, position: 1, jam_track: jam_track)
jam_track_track_2.valid?.should == false
#jam_track_track_2.errors[:position].should == ['has already been taken']
end
it "jam_track required" do
pending "Need to be not mandatory because of activeadmin"
jam_track = FactoryBot.build(:jam_track_track, jam_track: nil)
jam_track.valid?.should be false
jam_track.errors[:jam_track].should == ["can't be blank"]
end
end
describe "upload/download" do
TRACK_NAME = 'lead guitar.ogg'
in_directory_with_file(TRACK_NAME)
before(:all) do
original_storage = JamTrackTrackUploader.storage = :fog
end
after(:all) do
JamTrackTrackUploader.storage = @original_storage
end
before(:each) do
content_for_file('abc')
end
it "uploads to s3 with correct name, and then downloads via signed URL" do
s3 = S3Manager.new(APP_CONFIG.aws_bucket, APP_CONFIG.aws_access_key_id, APP_CONFIG.aws_secret_access_key)
jam_track_track = FactoryBot.create(:jam_track_track)
s3.upload(jam_track_track.manually_uploaded_filename(:url_48), TRACK_NAME)
jam_track_track[:url_48] = jam_track_track.manually_uploaded_filename(:url_48)
jam_track_track.save!
jam_track_track.reload
# verify that the uploader stores the correct path
jam_track_track[:url_48].should == jam_track_track.manually_uploaded_filename(:url_48)
# verify it's on S3
s3.exists?(jam_track_track[:url_48]).should be true
s3.length(jam_track_track[:url_48]).should == 'abc'.length
# download it via signed URL, and check contents
url = jam_track_track.sign_url
downloaded_contents = open(url).read
downloaded_contents.should == 'abc'
end
end
end