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

76 lines
2.2 KiB
Ruby

require 'spec_helper'
describe JamTrackMixdown do
let(:user) {FactoryBot.create(:user)}
let(:jam_track) {FactoryBot.create(:jam_track)}
let(:settings) { {speed:5} }
it "can be created (factory girl)" do
mixdown = FactoryBot.create(:jam_track_mixdown)
mixdown = JamTrackMixdown.find(mixdown.id)
mixdown.settings.should eq({"speed" => 5})
end
it "can be created" do
mixdown = JamTrackMixdown.create('abc', 'description', user, jam_track, settings)
mixdown.errors.any?.should == false
end
it "index" do
query, start, count = JamTrackMixdown.index({id: jam_track}, user)
query.length.should eq(0)
start.should be_nil
count.should eq(0)
mixdown = FactoryBot.create(:jam_track_mixdown, user: user, jam_track: jam_track)
query, start, count = JamTrackMixdown.index({id: jam_track}, user)
query[0].should eq(mixdown)
start.should be_nil
count.should eq(1)
end
describe "settings" do
it "validates empty settings" do
invalid = FactoryBot.build(:jam_track_mixdown, settings: {}.to_json)
invalid.save
invalid.errors.any?.should be true
invalid.errors["settings"].should include("have nothing specified")
end
it "validates speed numeric" do
invalid = FactoryBot.build(:jam_track_mixdown, settings: {"speed" => "5"}.to_json)
invalid.save
invalid.errors.any?.should be true
invalid.errors["settings"].should eq(["has non-integer speed"])
end
it "validates pitch numeric" do
invalid = FactoryBot.build(:jam_track_mixdown, settings: {"pitch" => "5"}.to_json)
invalid.save
invalid.errors.any?.should be true
invalid.errors["settings"].should eq(["has non-integer pitch"])
end
it "validates speed not-float" do
invalid = FactoryBot.build(:jam_track_mixdown, settings: {"speed" => 5.5}.to_json)
invalid.save
invalid.errors.any?.should be true
invalid.errors["settings"].should eq(["has non-integer speed"])
end
it "validates pitch not-float" do
invalid = FactoryBot.build(:jam_track_mixdown, settings: {"pitch" => 10.5}.to_json)
invalid.save
invalid.errors.any?.should be true
invalid.errors["settings"].should eq(["has non-integer pitch"])
end
end
end