From a19d6dcc07e054f535fcd2a9ef4a364a86db5a84 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Wed, 14 May 2014 15:48:42 -0500 Subject: [PATCH] * adding RsvpRequest and RsvpSlot models --- ruby/lib/jam_ruby.rb | 2 ++ ruby/lib/jam_ruby/models/rsvp_request.rb | 17 +++++++++++++++++ ruby/lib/jam_ruby/models/rsvp_slot.rb | 10 ++++++++++ ruby/spec/factories.rb | 14 ++++++++++++++ ruby/spec/jam_ruby/models/rsvp_request_spec.rb | 8 ++++++++ ruby/spec/jam_ruby/models/rsvp_slot_spec.rb | 8 ++++++++ 6 files changed, 59 insertions(+) create mode 100644 ruby/lib/jam_ruby/models/rsvp_request.rb create mode 100644 ruby/lib/jam_ruby/models/rsvp_slot.rb create mode 100644 ruby/spec/jam_ruby/models/rsvp_request_spec.rb create mode 100644 ruby/spec/jam_ruby/models/rsvp_slot_spec.rb diff --git a/ruby/lib/jam_ruby.rb b/ruby/lib/jam_ruby.rb index 2ea2b5a2b..acbcdb4ff 100755 --- a/ruby/lib/jam_ruby.rb +++ b/ruby/lib/jam_ruby.rb @@ -66,6 +66,8 @@ require "jam_ruby/models/max_mind_isp" require "jam_ruby/models/band_genre" require "jam_ruby/models/genre" require "jam_ruby/models/user" +require "jam_ruby/models/rsvp_request" +require "jam_ruby/models/rsvp_slot" require "jam_ruby/models/user_observer" require "jam_ruby/models/user_authorization" require "jam_ruby/models/join_request" diff --git a/ruby/lib/jam_ruby/models/rsvp_request.rb b/ruby/lib/jam_ruby/models/rsvp_request.rb new file mode 100644 index 000000000..28ca90401 --- /dev/null +++ b/ruby/lib/jam_ruby/models/rsvp_request.rb @@ -0,0 +1,17 @@ +module JamRuby + class RsvpRequest < ActiveRecord::Base + + belongs_to :user, :class_name => "JamRuby::User" + belongs_to :rsvp_slot, :class_name => "JamRuby::RsvpSlot" + + validates :message, length: {maximum: 1000}, no_profanity: true + validates :chosen, :inclusion => {:in => [nil, true, false]} + validates :canceled, :inclusion => {:in => [nil, true, false]} + validates :rsvp_slot, presence: true + + + # XXX we need to validate that only one RsvpRequest.chosen = true for a given RsvpSlot + # in other words, you can have many requests to a slot, but only 0 or 1 rsvp_request.chosen = true) + end + +end diff --git a/ruby/lib/jam_ruby/models/rsvp_slot.rb b/ruby/lib/jam_ruby/models/rsvp_slot.rb new file mode 100644 index 000000000..7559fee7f --- /dev/null +++ b/ruby/lib/jam_ruby/models/rsvp_slot.rb @@ -0,0 +1,10 @@ +module JamRuby + class RsvpSlot < ActiveRecord::Base + + belongs_to :instrument, :class_name => "JamRuby::Instrument" + belongs_to :music_session + has_many :rsvp_requests, :class_name => "JamRuby::RsvpRequest" + + # TODO: validates :proficiency_level + end +end diff --git a/ruby/spec/factories.rb b/ruby/spec/factories.rb index e914a2d66..20b37fb77 100644 --- a/ruby/spec/factories.rb +++ b/ruby/spec/factories.rb @@ -458,4 +458,18 @@ FactoryGirl.define do creator JamRuby::Diagnostic::CLIENT data Faker::Lorem.sentence end + + factory :rsvp_slot, class: JamRuby::RsvpSlot do + association :instrument, factory: :instrument + association :music_session, factory: :music_session + proficiency_level 'beginner' + end + + factory :rsvp_request, class: JamRuby::RsvpRequest do + association :user, factory: :user + association :rsvp_slot, factory: :rsvp_slot + sequence(:message) { |n| "I want to join!#{n}" } + chosen false + canceled false + end end diff --git a/ruby/spec/jam_ruby/models/rsvp_request_spec.rb b/ruby/spec/jam_ruby/models/rsvp_request_spec.rb new file mode 100644 index 000000000..02e137a6b --- /dev/null +++ b/ruby/spec/jam_ruby/models/rsvp_request_spec.rb @@ -0,0 +1,8 @@ +require 'spec_helper' + +describe RsvpRequest do + + it "success" do + FactoryGirl.create(:rsvp_request) + end +end \ No newline at end of file diff --git a/ruby/spec/jam_ruby/models/rsvp_slot_spec.rb b/ruby/spec/jam_ruby/models/rsvp_slot_spec.rb new file mode 100644 index 000000000..0dfd52eaa --- /dev/null +++ b/ruby/spec/jam_ruby/models/rsvp_slot_spec.rb @@ -0,0 +1,8 @@ +require 'spec_helper' + +describe RsvpSlot do + + it "success" do + FactoryGirl.create(:rsvp_slot) + end +end \ No newline at end of file