From 5135fe7faf23871d1ad07e4b936427fb6915326f Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Fri, 3 Oct 2014 13:36:51 -0500 Subject: [PATCH] VRFS-2024 - Migration, model and spec for video source. --- db/manifest | 3 ++- db/up/video_sources.sql | 9 +++++++++ ruby/lib/jam_ruby.rb | 1 + ruby/lib/jam_ruby/models/connection.rb | 1 + ruby/lib/jam_ruby/models/video_source.rb | 10 ++++++++++ ruby/spec/factories.rb | 4 ++++ .../spec/jam_ruby/models/video_source_spec.rb | 20 +++++++++++++++++++ 7 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 db/up/video_sources.sql create mode 100644 ruby/lib/jam_ruby/models/video_source.rb create mode 100644 ruby/spec/jam_ruby/models/video_source_spec.rb diff --git a/db/manifest b/db/manifest index 8114e06ee..5d7ffd7b8 100755 --- a/db/manifest +++ b/db/manifest @@ -214,4 +214,5 @@ fix_find_session_sorting_2216a.sql fix_find_session_sorting_2216b.sql fix_find_session_sorting_2216c.sql entabulate_current_network_scores.sql -discard_scores_changed.sql \ No newline at end of file +discard_scores_changed.sql +video_sources.sql diff --git a/db/up/video_sources.sql b/db/up/video_sources.sql new file mode 100644 index 000000000..cab646c94 --- /dev/null +++ b/db/up/video_sources.sql @@ -0,0 +1,9 @@ +CREATE TABLE video_sources ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + connection_id VARCHAR(64) NOT NULL, + client_video_source_id VARCHAR(64) NOT NULL, + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + diff --git a/ruby/lib/jam_ruby.rb b/ruby/lib/jam_ruby.rb index eb8fc345e..5c98fa960 100755 --- a/ruby/lib/jam_ruby.rb +++ b/ruby/lib/jam_ruby.rb @@ -173,6 +173,7 @@ require "jam_ruby/models/chat_message" require "jam_ruby/models/generic_state" require "jam_ruby/models/score_history" require "jam_ruby/models/jam_company" +require "jam_ruby/models/video_source" include Jampb diff --git a/ruby/lib/jam_ruby/models/connection.rb b/ruby/lib/jam_ruby/models/connection.rb index 311eaaf13..9083b4543 100644 --- a/ruby/lib/jam_ruby/models/connection.rb +++ b/ruby/lib/jam_ruby/models/connection.rb @@ -17,6 +17,7 @@ module JamRuby belongs_to :music_session, :class_name => "JamRuby::ActiveMusicSession", foreign_key: :music_session_id has_one :latency_tester, class_name: 'JamRuby::LatencyTester', foreign_key: :client_id, primary_key: :client_id has_many :tracks, :class_name => "JamRuby::Track", :inverse_of => :connection, :foreign_key => 'connection_id', :dependent => :delete_all + has_many :video_sources, :class_name => "JamRuby::VideoSource", :inverse_of => :connection, :foreign_key => 'connection_id', :dependent => :delete_all validates :as_musician, :inclusion => {:in => [true, false]} validates :client_type, :inclusion => {:in => [TYPE_CLIENT, TYPE_BROWSER, TYPE_LATENCY_TESTER]} diff --git a/ruby/lib/jam_ruby/models/video_source.rb b/ruby/lib/jam_ruby/models/video_source.rb new file mode 100644 index 000000000..ebf095241 --- /dev/null +++ b/ruby/lib/jam_ruby/models/video_source.rb @@ -0,0 +1,10 @@ +# Video analog to JamRuby::Track +module JamRuby + class VideoSource < ActiveRecord::Base + self.table_name = "video_sources" + self.primary_key = 'id' + default_scope order('created_at ASC') + belongs_to :connection, :class_name => "JamRuby::Connection", :inverse_of => :video_sources, :foreign_key => 'connection_id' + validates :connection, presence: true + end +end \ No newline at end of file diff --git a/ruby/spec/factories.rb b/ruby/spec/factories.rb index 249cd8247..3f552fa0e 100644 --- a/ruby/spec/factories.rb +++ b/ruby/spec/factories.rb @@ -231,6 +231,10 @@ FactoryGirl.define do sequence(:client_track_id) { |n| "client_track_id#{n}"} end + factory :video_source, :class => JamRuby::VideoSource do + client_video_source_id "test_source_id" + end + factory :recorded_track, :class => JamRuby::RecordedTrack do instrument JamRuby::Instrument.first sound 'stereo' diff --git a/ruby/spec/jam_ruby/models/video_source_spec.rb b/ruby/spec/jam_ruby/models/video_source_spec.rb new file mode 100644 index 000000000..02b9c4e1c --- /dev/null +++ b/ruby/spec/jam_ruby/models/video_source_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe VideoSource do + + let (:user) {FactoryGirl.create(:user) } + let (:music_session) { FactoryGirl.create(:active_music_session, :creator => user)} + let (:connection) { FactoryGirl.create(:connection, :user => user, :music_session => music_session) } + let (:msuh) {FactoryGirl.create(:music_session_user_history, :history => music_session.music_session, :user => user, :client_id => connection.client_id) } + + before(:each) do + msuh.touch + end + + describe "simple create" do + it "create a video source" do + track = FactoryGirl.create(:video_source, :connection => connection) + track.should_not be_nil + end + end +end \ No newline at end of file