helix 0.0.4.4.pre → 0.0.4.5.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjA5ODZhZTViNWE2ZjhlYzk2NTMyZTRmMGUzZDA4YjM5NzExNGM1NQ==
5
+ data.tar.gz: !binary |-
6
+ MWVjMTliMTgyNWJlM2U0NzFmMDU2ZmU5NzhjZjNmNWE0OTM0ZDY0Mg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ M2M2MGQ2NmMxNTI4YzhjYmJlNzZhNmMyMTgyM2VhYTEyYzI2MmU3NjE3NzA1
10
+ NzIyZTFlYTUxYmNkYTkyNWNhYjQ4Nzg3ZDQzNmI0NmVjYTJjOTEyZDM5ODgx
11
+ ZDI1NTFlMTRlOGEyNmQxN2Q5MzA3OTVjMjVjNDE5ZTNhYTUwMTM=
12
+ data.tar.gz: !binary |-
13
+ ZTcwNjBmM2Q3ODVkZjAxNGY5NDA2ZmYwZGRmYjNlY2JlODI0ZDI1Y2RlYjgy
14
+ YmZkNDE5NTYxODZkZGViYjRhOGU5ZDkyZmQ4ZGQzMWE2MGFkY2VhNWU5NTdl
15
+ MTIzNzQ3NDgzOTM2OTNhZmRiNWFmODU1YTNjZWVlMWM0ZTRkZTc=
data/lib/helix/album.rb CHANGED
@@ -22,10 +22,6 @@ module Helix
22
22
  raise "Albums Update is not currently supported."
23
23
  end
24
24
 
25
- def self.known_attributes
26
- [:title, :description]
27
- end
28
-
29
25
  end
30
26
 
31
27
  end
data/lib/helix/library.rb CHANGED
@@ -43,11 +43,6 @@ module Helix
43
43
  "libraries"
44
44
  end
45
45
 
46
- #TODO: Revisit and document.
47
- def self.known_attributes
48
- [:player_profile, :ingest_profile, :secure_stream_callback_url, :hooks_attributes]
49
- end
50
-
51
46
  end
52
47
 
53
48
  end
@@ -16,13 +16,14 @@ module Helix
16
16
  # @return [Array] The accumulated attribute Hashes for ORM instances
17
17
  def get_aggregated_data_sets(url, plural_resource_label, original_opts={})
18
18
  data_sets, page, per_page = [], STARTING_PAGE
19
+ specific_page_requested = specific_page_requested?(original_opts)
19
20
  begin
20
21
  aggregation_opts = {page: page, per_page: ITEMS_PER_PAGE}.merge(original_opts)
21
22
  raw_response = get_response(url, {sig_type: :view}.merge(aggregation_opts))
22
23
  data_set = raw_response[plural_resource_label]
23
24
  data_sets += data_set if data_set
24
25
  page += 1
25
- end until last_page? || specific_page_requested?(original_opts)
26
+ end until specific_page_requested || last_page?
26
27
  data_sets
27
28
  end
28
29
 
@@ -71,19 +72,17 @@ module Helix
71
72
  end
72
73
 
73
74
  def parse_response_by_url_format(response, url)
74
- ### FIXME: This is ugly. Clean it up.
75
- if url =~ /json/
76
- JSON.parse(response)
77
- elsif url =~ /xml/
78
- #TODO: Cleanup Nori and response gsub.
79
- Nori.parser = :nokogiri
80
- xml = response.gsub(/<custom-fields type='array'>/, '<custom-fields type=\'hash\'>')
81
- Nori.parse(xml)
82
- elsif url =~ /csv/
83
- response
84
- else
85
- raise "Could not parse #{url}"
86
- end
75
+ return JSON.parse(response) if url =~ /json/
76
+ return response if url =~ /csv/
77
+ return parse_xml_response(response, url) if url =~ /xml/
78
+ raise "Could not parse #{url}"
79
+ end
80
+
81
+ def parse_xml_response(response, url)
82
+ #TODO: Cleanup Nori and response gsub.
83
+ Nori.parser = :nokogiri
84
+ xml = response.gsub(/<custom-fields type='array'>/, "<custom-fields type='hash'>")
85
+ Nori.parse(xml)
87
86
  end
88
87
 
89
88
  end
@@ -6,24 +6,24 @@ module Helix
6
6
 
7
7
  module ClassMethods
8
8
 
9
- def upload(file_name)
10
- url = upload_server_name
9
+ def upload(file_name, opts={})
10
+ url = upload_server_name(opts)
11
11
  payload = { file: File.new(file_name.to_s, "rb") }
12
- headers = { multipart: true }
12
+ headers = { multipart: true }
13
13
  RestClient.post(url, payload, headers)
14
14
  http_close
15
15
  end
16
16
 
17
- def upload_server_name
18
- upload_get(:http_open, ingest_opts)
17
+ def upload_server_name(http_open_opts={})
18
+ upload_get(:http_open, ingest_sig_opts, http_open_opts)
19
19
  end
20
20
 
21
- def http_open
22
- upload_server_name
21
+ def http_open(opts={})
22
+ upload_server_name(opts)
23
23
  end
24
24
 
25
- def upload_open
26
- upload_server_name
25
+ def upload_open(opts={})
26
+ upload_server_name(opts)
27
27
  end
28
28
 
29
29
  def http_close
@@ -36,21 +36,37 @@ module Helix
36
36
 
37
37
  private
38
38
 
39
- def ingest_opts
39
+ # OPTIMIZE: This only accepts a flat Hash for http_open_opts, and
40
+ # doesn't encode. Neither is a big problem for the expected use
41
+ # cases, but should still be noted.
42
+ def add_params_to_url(url, http_open_opts)
43
+ return url if http_open_opts == {}
44
+ query_string = http_open_opts.inject([]) do |memo,pair|
45
+ k,v = *pair
46
+ memo << "#{k}=#{v}"
47
+ end.join('&')
48
+ "#{url}?#{query_string}"
49
+ end
50
+
51
+ def ingest_sig_opts
40
52
  cc = config.credentials
41
- ingest_opts = {
53
+ ingest_sig_opts = {
42
54
  contributor: cc[:contributor],
43
55
  company_id: cc[:company],
44
56
  library_id: cc[:library],
45
57
  }
46
58
  end
47
59
 
48
- def upload_get(action, opts={})
49
- guid = config.signature(:ingest, opts)
50
- url = config.build_url(resource_label: "upload_sessions",
51
- guid: guid,
52
- action: action,
53
- content_type: "" )
60
+ def upload_get(action, ingest_sig_opts={}, http_open_opts={})
61
+ guid = config.signature(:ingest, ingest_sig_opts)
62
+ url_opts = {
63
+ resource_label: "upload_sessions",
64
+ guid: guid,
65
+ action: action,
66
+ content_type: ""
67
+ }
68
+ url = config.build_url(url_opts)
69
+ url = add_params_to_url(url, http_open_opts)
54
70
  RestClient.get(url)
55
71
  end
56
72
 
data/lib/helix/user.rb CHANGED
@@ -29,10 +29,6 @@ module Helix
29
29
  "users"
30
30
  end
31
31
 
32
- def self.known_attributes
33
- []
34
- end
35
-
36
32
  end
37
33
 
38
34
  end
@@ -6,7 +6,7 @@ config = File.exists?(config_filename) ? Helix::Config.load(config_filename) : n
6
6
 
7
7
  if config.nil?
8
8
  puts "No config, skipping integration specs"
9
- elsif %w(1 t true).include?(ENV['SKIP_INTEGRATION'])
9
+ elsif %w(1 t true).include?(ENV['SKIP_INTEGRATION']) or not %w(1 t true).include?(ENV['INTEGRATION'])
10
10
  puts "Skipping integration specs due to user request"
11
11
  else
12
12
 
data/spec/album_spec.rb CHANGED
@@ -14,14 +14,6 @@ describe Helix::Album do
14
14
  it { should respond_to(crud_call) }
15
15
  end
16
16
 
17
- describe ".known_attributes" do
18
- let(:meth) { :known_attributes }
19
- let(:expected_attrs) { [:title, :description] }
20
- it "should equal expected_attrs" do
21
- expect(klass.send(meth)).to eq(expected_attrs)
22
- end
23
- end
24
-
25
17
  describe "Constants"
26
18
 
27
19
  describe "an instance" do
data/spec/config_spec.rb CHANGED
@@ -624,4 +624,15 @@ describe Helix::Config do
624
624
  end
625
625
  end
626
626
 
627
+ describe "#sub_url_scoping" do
628
+ context "when given 'base_url_with_companies', {resource_label: 'libraries'})" do
629
+ subject { obj.send(:sub_url_scoping, 'base_url_with_companies', {resource_label: 'libraries'}) }
630
+ it { should eq('base_url_with_companies/libraries') }
631
+ end
632
+ context "when given 'base_url_without', {resource_label: 'libraries'})" do
633
+ subject { obj.send(:sub_url_scoping, 'base_url_without', {resource_label: 'libraries'}) }
634
+ it { should eq('base_url_without/companies/the_co/libraries') }
635
+ end
636
+ end
637
+
627
638
  end
@@ -29,8 +29,8 @@ describe Helix::Document do
29
29
 
30
30
  ### CLASS METHODS
31
31
 
32
- describe ".ingest_opts" do
33
- let(:meth) { :ingest_opts }
32
+ describe ".ingest_sig_opts" do
33
+ let(:meth) { :ingest_sig_opts }
34
34
  let(:mock_config) { double(Helix::Config, credentials: {}) }
35
35
  subject { klass.method(meth) }
36
36
  its(:arity) { should eq(0) }
@@ -61,110 +61,7 @@ describe Helix::Document do
61
61
  end
62
62
  end
63
63
 
64
- describe ".upload" do
65
- let(:meth) { :upload }
66
- let(:mock_config) { double(Helix::Config) }
67
- subject { klass.method(meth) }
68
- its(:arity) { should eq(1) }
69
- let(:file_hash) { { file: :some_file } }
70
- let(:multipart_hash) { { multipart: true } }
71
- it "should call upload_server_name and RestClient.post with params" do
72
- klass.should_receive(:upload_server_name) { :some_server_url }
73
- File.should_receive(:new).with(:some_file.to_s, "rb") { :some_file }
74
- RestClient.should_receive(:post).with(:some_server_url,
75
- file_hash,
76
- multipart_hash)
77
- klass.should_receive(:http_close)
78
- klass.send(meth, :some_file)
79
- end
80
- end
81
-
82
- describe ".upload_server_name" do
83
- let(:meth) { :upload_server_name }
84
- let(:mock_config) { double(Helix::Config) }
85
- subject { klass.method(meth) }
86
- its(:arity) { should eq(0) }
87
- let(:url_opts) { { resource_label: "upload_sessions",
88
- guid: :some_sig,
89
- action: :http_open,
90
- content_type: "" } }
91
- before { Helix::Config.stub(:instance) { mock_config } }
92
- it "should call RestClient.get with correct url building" do
93
- klass.should_receive(:ingest_opts) { :ingest_opts }
94
- mock_config.should_receive(:build_url).with(url_opts) { :url }
95
- mock_config.should_receive(:signature).with(:ingest, :ingest_opts) { :some_sig }
96
- RestClient.should_receive(:get).with(:url)
97
- klass.send(meth)
98
- end
99
- end
100
-
101
- describe ".http_close" do
102
- let(:meth) { :http_close }
103
- let(:mock_config) { double(Helix::Config) }
104
- subject { klass.method(meth) }
105
- its(:arity) { should eq(0) }
106
- let(:url_opts) { { resource_label: "upload_sessions",
107
- guid: :some_sig,
108
- action: :http_close,
109
- content_type: "" } }
110
- before { Helix::Config.stub(:instance) { mock_config } }
111
- it "should call RestClient.get with correct url building" do
112
- mock_config.should_receive(:build_url).with(url_opts) { :url }
113
- mock_config.should_receive(:signature).with(:ingest, {}) { :some_sig }
114
- RestClient.should_receive(:get).with(:url)
115
- klass.send(meth)
116
- end
117
- end
118
-
119
- describe ".upload_get" do
120
- let(:meth) { :upload_get }
121
- let(:mock_config) { double(Helix::Config) }
122
- subject { klass.method(meth) }
123
- its(:arity) { should eq(-2) }
124
- let(:url_opts) { { resource_label: "upload_sessions",
125
- guid: :some_sig,
126
- action: :upload_get,
127
- content_type: "" } }
128
- before { Helix::Config.stub(:instance) { mock_config } }
129
- it "should call RestClient.get with correct url building" do
130
- mock_config.should_receive(:build_url).with(url_opts) { :url }
131
- mock_config.should_receive(:signature).with(:ingest, {}) { :some_sig }
132
- RestClient.should_receive(:get).with(:url)
133
- klass.send(meth, :upload_get)
134
- end
135
- end
136
-
137
- describe ".http_open" do
138
- let(:meth) { :http_open }
139
- let(:mock_config) { double(Helix::Config) }
140
- subject { klass.method(meth) }
141
- its(:arity) { should eq(0) }
142
- it "should call upload_server_name" do
143
- klass.should_receive(:upload_server_name)
144
- klass.send(meth)
145
- end
146
- end
147
-
148
- describe ".upload_open" do
149
- let(:meth) { :upload_open }
150
- let(:mock_config) { double(Helix::Config) }
151
- subject { klass.method(meth) }
152
- its(:arity) { should eq(0) }
153
- it "should call upload_server_name" do
154
- klass.should_receive(:upload_server_name)
155
- klass.send(meth)
156
- end
157
- end
158
-
159
- describe ".upload_close" do
160
- let(:meth) { :upload_close }
161
- let(:mock_config) { double(Helix::Config) }
162
- subject { klass.method(meth) }
163
- its(:arity) { should eq(0) }
164
- it "should call upload_server_name" do
165
- klass.should_receive(:http_close)
166
- klass.send(meth)
167
- end
168
- end
64
+ it_behaves_like "ingest_sig_opts", Helix::Document
65
+ it_behaves_like "uploads", Helix::Document
169
66
 
170
67
  end
data/spec/library_spec.rb CHANGED
@@ -17,43 +17,8 @@ describe Helix::Library do
17
17
  it { should respond_to(crud_call) }
18
18
  end
19
19
 
20
- describe ".known_attributes" do
21
- let(:meth) { :known_attributes }
22
- let(:expected_attrs) { [ :player_profile,
23
- :ingest_profile,
24
- :secure_stream_callback_url,
25
- :hooks_attributes] }
26
- it "should equal expected_attrs" do
27
- expect(klass.send(meth)).to eq(expected_attrs)
28
- end
29
- end
30
-
31
20
  describe "Constants"
32
21
 
33
- describe ".find" do
34
- let(:meth) { :find }
35
- subject { klass.method(meth) }
36
- its(:arity) { should eq(-2) }
37
- context "when given just a nickname" do
38
- =begin
39
- it "should call super(nickname, {content_type: :xml})" do
40
- Helix::Base.should_not_receive(:load)
41
- Helix::RESTful.should_not_receive(:find)
42
- expect(klass.send(meth, :a_nickname)).to be :blah
43
- end
44
- =end
45
- end
46
- context "when given a nickname and opts" do
47
- =begin
48
- it "should call super(nickname, opts.merge(content_type: :xml))" do
49
- Helix::Base.should_not_receive(:load)
50
- Helix::RESTful.should_not_receive(:find)
51
- expect(klass.send(meth, :a_nickname, {k: :v})).to be :blah
52
- end
53
- =end
54
- end
55
- end
56
-
57
22
  describe "an instance" do
58
23
  let(:obj) { klass.new({'library_id' => 'some_library_id'}) }
59
24
  subject { obj }
data/spec/media_spec.rb CHANGED
@@ -17,7 +17,7 @@ describe Helix::Media do
17
17
  end
18
18
  end
19
19
 
20
- klasses = [ Helix::Album, Helix::Document, Helix::Image, Helix::Track, Helix::User, Helix::Video ]
20
+ klasses = [ Helix::Album, Helix::Document, Helix::Image, Helix::Library, Helix::Track, Helix::User, Helix::Video ]
21
21
  klasses.each do |klass|
22
22
 
23
23
  subject { klass }
@@ -168,8 +168,9 @@ describe Helix::Media do
168
168
  klass.should_receive(:new).with({attributes: {guid_name => guid}, config: mock_config})
169
169
  klass.send(meth, guid, content_type: content_type)
170
170
  end
171
- it "should load(content_type: #{content_type}" do
172
- mock_obj.should_receive(:load).with(content_type: content_type)
171
+ internal_content_type = (klass == Helix::Library) ? :xml : content_type
172
+ it "should load(content_type: #{internal_content_type}" do
173
+ mock_obj.should_receive(:load).with(content_type: internal_content_type)
173
174
  klass.send(meth, guid, content_type: content_type)
174
175
  end
175
176
  end
data/spec/spec_helper.rb CHANGED
@@ -5,3 +5,9 @@ SimpleCov.start do
5
5
  add_filter 'spec'
6
6
  add_group 'Libraries', 'lib'
7
7
  end
8
+
9
+ require 'support/downloads'
10
+ require 'support/ingest_sig_opts'
11
+ require 'support/plays'
12
+ require 'support/uploads'
13
+
data/spec/track_spec.rb CHANGED
@@ -3,8 +3,8 @@ require 'helix'
3
3
 
4
4
  describe Helix::Track do
5
5
 
6
- let(:klass) { Helix::Track }
7
- subject { klass }
6
+ klass = Helix::Track
7
+ subject { klass }
8
8
  mods = [ Helix::Base, Helix::Durationed, Helix::Media ]
9
9
  mods.each { |mod| its(:ancestors) { should include(mod) } }
10
10
  its(:guid_name) { should eq('track_id') }
@@ -19,214 +19,19 @@ describe Helix::Track do
19
19
  ### INSTANCE METHODS
20
20
 
21
21
  describe "an instance" do
22
- let(:obj) { klass.new({'track_id' => 'some_track_guid'}) }
23
- subject { obj }
22
+ obj = klass.new({'track_id' => 'some_track_guid'})
23
+ subject { obj }
24
24
  its(:resource_label_sym) { should be(:track) }
25
25
  [:destroy, :update].each do |crud_call|
26
26
  it { should respond_to(crud_call) }
27
27
  end
28
-
29
- describe "#download" do
30
- let(:meth) { :download }
31
- let(:mock_config) { double(Helix::Config, build_url: :the_built_url, signature: :some_sig) }
32
- subject { obj.method(meth) }
33
- let(:params) { { params: {signature: :some_sig } } }
34
- before do
35
- obj.stub(:config) { mock_config }
36
- obj.stub(:guid) { :some_guid }
37
- obj.stub(:plural_resource_label) { :resource_label }
38
- RestClient.stub(:get) { '' }
39
- end
40
- { '' => '', mp3: :mp3, nil => '' }.each do |arg,actual|
41
- build_url_h = {action: :file, content_type: actual, guid: :some_guid, resource_label: :resource_label}
42
- context "when given {content_type: #{arg}" do
43
- it "should build_url(#{build_url_h})" do
44
- mock_config.should_receive(:build_url).with(build_url_h)
45
- obj.send(meth, content_type: arg)
46
- end
47
- it "should get a view signature" do
48
- mock_config.should_receive(:signature).with(:view) { :some_sig }
49
- obj.send(meth, content_type: arg)
50
- end
51
- it "should return an HTTP get to the built URL with the view sig" do
52
- mock_config.stub(:build_url).with(build_url_h) { :the_url }
53
- RestClient.should_receive(:get).with(:the_url, params) { :expected }
54
- expect(obj.send(meth, content_type: arg)).to be(:expected)
55
- end
56
- end
57
- end
58
- end
59
-
60
- describe "#play" do
61
- let(:meth) { :play }
62
- let(:mock_config) { double(Helix::Config, build_url: :the_built_url, signature: :some_sig) }
63
- subject { obj.method(meth) }
64
- let(:params) { { params: {signature: :some_sig } } }
65
- before do
66
- obj.stub(:config) { mock_config }
67
- obj.stub(:guid) { :some_guid }
68
- obj.stub(:plural_resource_label) { :resource_label }
69
- RestClient.stub(:get) { '' }
70
- end
71
- { '' => '', mp3: :mp3, nil => '' }.each do |arg,actual|
72
- build_url_h = {action: :play, content_type: actual, guid: :some_guid, resource_label: :resource_label}
73
- context "when given {content_type: #{arg}" do
74
- it "should build_url(#{build_url_h})" do
75
- mock_config.should_receive(:build_url).with(build_url_h)
76
- obj.send(meth, content_type: arg)
77
- end
78
- it "should get a view signature" do
79
- mock_config.should_receive(:signature).with(:view) { :some_sig }
80
- obj.send(meth, content_type: arg)
81
- end
82
- it "should return an HTTP get to the built URL with the view sig" do
83
- mock_config.stub(:build_url).with(build_url_h) { :the_url }
84
- RestClient.should_receive(:get).with(:the_url, params) { :expected }
85
- expect(obj.send(meth, content_type: arg)).to be(:expected)
86
- end
87
- end
88
- end
89
- end
90
-
28
+ it_behaves_like "downloads", obj
29
+ it_behaves_like "plays", obj
91
30
  end
92
31
 
93
32
  ### CLASS METHODS
94
33
 
95
- describe ".ingest_opts" do
96
- let(:meth) { :ingest_opts }
97
- let(:mock_config) { double(Helix::Config, credentials: {}) }
98
- subject { klass.method(meth) }
99
- its(:arity) { should eq(0) }
100
- it "should be private" do expect(klass.private_methods).to include(meth) end
101
- context "when called" do
102
- subject { klass.send(meth) }
103
- before(:each) do klass.stub(:config) { mock_config } end
104
- it "should be a Hash" do expect(klass.send(meth)).to be_a(Hash) end
105
- its(:keys) { should match_array([:contributor, :company_id, :library_id]) }
106
- context "the value for :contributor" do
107
- it "should be config.credentials[:contributor]" do
108
- mock_config.should_receive(:credentials) { {contributor: :expected_contributor} }
109
- expect(klass.send(meth)[:contributor]).to be(:expected_contributor)
110
- end
111
- end
112
- context "the value for :company_id" do
113
- it "should be config.credentials[:company]" do
114
- mock_config.should_receive(:credentials) { {company: :expected_company} }
115
- expect(klass.send(meth)[:company_id]).to be(:expected_company)
116
- end
117
- end
118
- context "the value for :library_id" do
119
- it "should be config.credentials[:library]" do
120
- mock_config.should_receive(:credentials) { {library: :expected_library} }
121
- expect(klass.send(meth)[:library_id]).to be(:expected_library)
122
- end
123
- end
124
- end
125
- end
126
- describe ".upload" do
127
- let(:meth) { :upload }
128
- let(:mock_config) { double(Helix::Config) }
129
- subject { klass.method(meth) }
130
- its(:arity) { should eq(1) }
131
- let(:file_hash) { { file: :some_file } }
132
- let(:multipart_hash) { { multipart: true } }
133
- it "should call upload_server_name and RestClient.post with params" do
134
- klass.should_receive(:upload_server_name) { :some_server_url }
135
- File.should_receive(:new).with(:some_file.to_s, "rb") { :some_file }
136
- RestClient.should_receive(:post).with(:some_server_url,
137
- file_hash,
138
- multipart_hash)
139
- klass.should_receive(:http_close)
140
- klass.send(meth, :some_file)
141
- end
142
- end
143
-
144
- describe ".upload_server_name" do
145
- let(:meth) { :upload_server_name }
146
- let(:mock_config) { double(Helix::Config) }
147
- subject { klass.method(meth) }
148
- its(:arity) { should eq(0) }
149
- let(:url_opts) { { resource_label: "upload_sessions",
150
- guid: :some_sig,
151
- action: :http_open,
152
- content_type: "" } }
153
- before { Helix::Config.stub(:instance) { mock_config } }
154
- it "should call RestClient.get with correct url building" do
155
- klass.should_receive(:ingest_opts) { :ingest_opts }
156
- mock_config.should_receive(:build_url).with(url_opts) { :url }
157
- mock_config.should_receive(:signature).with(:ingest, :ingest_opts) { :some_sig }
158
- RestClient.should_receive(:get).with(:url)
159
- klass.send(meth)
160
- end
161
- end
162
-
163
- describe ".http_close" do
164
- let(:meth) { :http_close }
165
- let(:mock_config) { double(Helix::Config) }
166
- subject { klass.method(meth) }
167
- its(:arity) { should eq(0) }
168
- let(:url_opts) { { resource_label: "upload_sessions",
169
- guid: :some_sig,
170
- action: :http_close,
171
- content_type: "" } }
172
- before { Helix::Config.stub(:instance) { mock_config } }
173
- it "should call RestClient.get with correct url building" do
174
- mock_config.should_receive(:build_url).with(url_opts) { :url }
175
- mock_config.should_receive(:signature).with(:ingest, {}) { :some_sig }
176
- RestClient.should_receive(:get).with(:url)
177
- klass.send(meth)
178
- end
179
- end
180
-
181
- describe ".upload_get" do
182
- let(:meth) { :upload_get }
183
- let(:mock_config) { double(Helix::Config) }
184
- subject { klass.method(meth) }
185
- its(:arity) { should eq(-2) }
186
- let(:url_opts) { { resource_label: "upload_sessions",
187
- guid: :some_sig,
188
- action: :upload_get,
189
- content_type: "" } }
190
- before { Helix::Config.stub(:instance) { mock_config } }
191
- it "should call RestClient.get with correct url building" do
192
- mock_config.should_receive(:build_url).with(url_opts) { :url }
193
- mock_config.should_receive(:signature).with(:ingest, {}) { :some_sig }
194
- RestClient.should_receive(:get).with(:url)
195
- klass.send(meth, :upload_get)
196
- end
197
- end
198
-
199
- describe ".http_open" do
200
- let(:meth) { :http_open }
201
- let(:mock_config) { double(Helix::Config) }
202
- subject { klass.method(meth) }
203
- its(:arity) { should eq(0) }
204
- it "should call upload_server_name" do
205
- klass.should_receive(:upload_server_name)
206
- klass.send(meth)
207
- end
208
- end
209
-
210
- describe ".upload_open" do
211
- let(:meth) { :upload_open }
212
- let(:mock_config) { double(Helix::Config) }
213
- subject { klass.method(meth) }
214
- its(:arity) { should eq(0) }
215
- it "should call upload_server_name" do
216
- klass.should_receive(:upload_server_name)
217
- klass.send(meth)
218
- end
219
- end
220
-
221
- describe ".upload_close" do
222
- let(:meth) { :upload_close }
223
- let(:mock_config) { double(Helix::Config) }
224
- subject { klass.method(meth) }
225
- its(:arity) { should eq(0) }
226
- it "should call upload_server_name" do
227
- klass.should_receive(:http_close)
228
- klass.send(meth)
229
- end
230
- end
34
+ it_behaves_like "ingest_sig_opts", Helix::Track
35
+ it_behaves_like "uploads", Helix::Track
231
36
 
232
37
  end
data/spec/user_spec.rb CHANGED
@@ -17,10 +17,6 @@ describe Helix::User do
17
17
  it { should respond_to(crud_call) }
18
18
  end
19
19
 
20
- describe ".known_attributes" do
21
- its(:known_attributes) { should eq([]) }
22
- end
23
-
24
20
  describe "Constants"
25
21
 
26
22
  describe "an instance" do
data/spec/video_spec.rb CHANGED
@@ -7,8 +7,8 @@ describe Helix::Video do
7
7
  { list: { entry: values[:url_params] || {} } }.to_xml(root: :add)
8
8
  end
9
9
 
10
- let(:klass) { Helix::Video }
11
- subject { klass }
10
+ klass = Helix::Video
11
+ subject { klass }
12
12
  mods = [ Helix::Base, Helix::Durationed, Helix::Media ]
13
13
  mods.each { |mod| its(:ancestors) { should include(mod) } }
14
14
  its(:guid_name) { should eq('video_id') }
@@ -23,71 +23,12 @@ describe Helix::Video do
23
23
  ### INSTANCE METHODS
24
24
 
25
25
  describe "an instance" do
26
- let(:obj) { klass.new({video_id: 'some_video_guid'}) }
26
+ obj = klass.new({video_id: 'some_video_guid'})
27
27
  subject { obj }
28
28
  its(:resource_label_sym) { should be(:video) }
29
29
 
30
- describe "#download" do
31
- let(:meth) { :download }
32
- let(:mock_config) { double(Helix::Config, build_url: :the_built_url, signature: :some_sig) }
33
- subject { obj.method(meth) }
34
- let(:params) { { params: {signature: :some_sig } } }
35
- before do
36
- obj.stub(:config) { mock_config }
37
- obj.stub(:guid) { :some_guid }
38
- obj.stub(:plural_resource_label) { :resource_label }
39
- RestClient.stub(:get) { '' }
40
- end
41
- { '' => '', mp3: :mp3, nil => '' }.each do |arg,actual|
42
- build_url_h = {action: :file, content_type: actual, guid: :some_guid, resource_label: :resource_label}
43
- context "when given {content_type: #{arg}" do
44
- it "should build_url(#{build_url_h})" do
45
- mock_config.should_receive(:build_url).with(build_url_h)
46
- obj.send(meth, content_type: arg)
47
- end
48
- it "should get a view signature" do
49
- mock_config.should_receive(:signature).with(:view) { :some_sig }
50
- obj.send(meth, content_type: arg)
51
- end
52
- it "should return an HTTP get to the built URL with the view sig" do
53
- mock_config.stub(:build_url).with(build_url_h) { :the_url }
54
- RestClient.should_receive(:get).with(:the_url, params) { :expected }
55
- expect(obj.send(meth, content_type: arg)).to be(:expected)
56
- end
57
- end
58
- end
59
- end
60
-
61
- describe "#play" do
62
- let(:meth) { :play }
63
- let(:mock_config) { double(Helix::Config, build_url: :the_built_url, signature: :some_sig) }
64
- subject { obj.method(meth) }
65
- let(:params) { { params: {signature: :some_sig } } }
66
- before do
67
- obj.stub(:config) { mock_config }
68
- obj.stub(:guid) { :some_guid }
69
- obj.stub(:plural_resource_label) { :resource_label }
70
- RestClient.stub(:get) { '' }
71
- end
72
- { '' => '', mp3: :mp3, nil => '' }.each do |arg,actual|
73
- build_url_h = {action: :play, content_type: actual, guid: :some_guid, resource_label: :resource_label}
74
- context "when given {content_type: #{arg}" do
75
- it "should build_url(#{build_url_h})" do
76
- mock_config.should_receive(:build_url).with(build_url_h)
77
- obj.send(meth, content_type: arg)
78
- end
79
- it "should get a view signature" do
80
- mock_config.should_receive(:signature).with(:view) { :some_sig }
81
- obj.send(meth, content_type: arg)
82
- end
83
- it "should return an HTTP get to the built URL with the view sig" do
84
- mock_config.stub(:build_url).with(build_url_h) { :the_url }
85
- RestClient.should_receive(:get).with(:the_url, params) { :expected }
86
- expect(obj.send(meth, content_type: arg)).to be(:expected)
87
- end
88
- end
89
- end
90
- end
30
+ it_behaves_like "downloads", obj
31
+ it_behaves_like "plays", obj
91
32
 
92
33
  describe "#stillframe" do
93
34
  let(:meth) { :stillframe }
@@ -182,142 +123,8 @@ describe Helix::Video do
182
123
 
183
124
  ### CLASS METHODS
184
125
 
185
- describe ".ingest_opts" do
186
- let(:meth) { :ingest_opts }
187
- let(:mock_config) { double(Helix::Config, credentials: {}) }
188
- subject { klass.method(meth) }
189
- its(:arity) { should eq(0) }
190
- it "should be private" do expect(klass.private_methods).to include(meth) end
191
- context "when called" do
192
- subject { klass.send(meth) }
193
- before(:each) do klass.stub(:config) { mock_config } end
194
- it "should be a Hash" do expect(klass.send(meth)).to be_a(Hash) end
195
- its(:keys) { should match_array([:contributor, :company_id, :library_id]) }
196
- context "the value for :contributor" do
197
- it "should be config.credentials[:contributor]" do
198
- mock_config.should_receive(:credentials) { {contributor: :expected_contributor} }
199
- expect(klass.send(meth)[:contributor]).to be(:expected_contributor)
200
- end
201
- end
202
- context "the value for :company_id" do
203
- it "should be config.credentials[:company]" do
204
- mock_config.should_receive(:credentials) { {company: :expected_company} }
205
- expect(klass.send(meth)[:company_id]).to be(:expected_company)
206
- end
207
- end
208
- context "the value for :library_id" do
209
- it "should be config.credentials[:library]" do
210
- mock_config.should_receive(:credentials) { {library: :expected_library} }
211
- expect(klass.send(meth)[:library_id]).to be(:expected_library)
212
- end
213
- end
214
- end
215
- end
216
- describe ".upload" do
217
- let(:meth) { :upload }
218
- let(:mock_config) { double(Helix::Config) }
219
- subject { klass.method(meth) }
220
- its(:arity) { should eq(1) }
221
- let(:file_hash) { { file: :some_file } }
222
- let(:multipart_hash) { { multipart: true } }
223
- it "should call upload_server_name and RestClient.post with params" do
224
- klass.should_receive(:upload_server_name) { :some_server_url }
225
- File.should_receive(:new).with(:some_file.to_s, "rb") { :some_file }
226
- RestClient.should_receive(:post).with(:some_server_url,
227
- file_hash,
228
- multipart_hash)
229
- klass.should_receive(:http_close)
230
- klass.send(meth, :some_file)
231
- end
232
- end
233
-
234
- describe ".upload_server_name" do
235
- let(:meth) { :upload_server_name }
236
- let(:mock_config) { double(Helix::Config) }
237
- subject { klass.method(meth) }
238
- its(:arity) { should eq(0) }
239
- let(:url_opts) { { resource_label: "upload_sessions",
240
- guid: :some_sig,
241
- action: :http_open,
242
- content_type: "" } }
243
- before { Helix::Config.stub(:instance) { mock_config } }
244
- it "should call RestClient.get with correct url building" do
245
- klass.should_receive(:ingest_opts) { :ingest_opts }
246
- mock_config.should_receive(:build_url).with(url_opts) { :url }
247
- mock_config.should_receive(:signature).with(:ingest, :ingest_opts) { :some_sig }
248
- RestClient.should_receive(:get).with(:url)
249
- klass.send(meth)
250
- end
251
- end
252
-
253
- describe ".http_close" do
254
- let(:meth) { :http_close }
255
- let(:mock_config) { double(Helix::Config) }
256
- subject { klass.method(meth) }
257
- its(:arity) { should eq(0) }
258
- let(:url_opts) { { resource_label: "upload_sessions",
259
- guid: :some_sig,
260
- action: :http_close,
261
- content_type: "" } }
262
- before { Helix::Config.stub(:instance) { mock_config } }
263
- it "should call RestClient.get with correct url building" do
264
- mock_config.should_receive(:build_url).with(url_opts) { :url }
265
- mock_config.should_receive(:signature).with(:ingest, {}) { :some_sig }
266
- RestClient.should_receive(:get).with(:url)
267
- klass.send(meth)
268
- end
269
- end
270
-
271
- describe ".upload_get" do
272
- let(:meth) { :upload_get }
273
- let(:mock_config) { double(Helix::Config) }
274
- subject { klass.method(meth) }
275
- its(:arity) { should eq(-2) }
276
- let(:url_opts) { { resource_label: "upload_sessions",
277
- guid: :some_sig,
278
- action: :upload_get,
279
- content_type: "" } }
280
- before { Helix::Config.stub(:instance) { mock_config } }
281
- it "should call RestClient.get with correct url building" do
282
- mock_config.should_receive(:build_url).with(url_opts) { :url }
283
- mock_config.should_receive(:signature).with(:ingest, {}) { :some_sig }
284
- RestClient.should_receive(:get).with(:url)
285
- klass.send(meth, :upload_get)
286
- end
287
- end
288
-
289
- describe ".http_open" do
290
- let(:meth) { :http_open }
291
- let(:mock_config) { double(Helix::Config) }
292
- subject { klass.method(meth) }
293
- its(:arity) { should eq(0) }
294
- it "should call upload_server_name" do
295
- klass.should_receive(:upload_server_name)
296
- klass.send(meth)
297
- end
298
- end
299
-
300
- describe ".upload_open" do
301
- let(:meth) { :upload_open }
302
- let(:mock_config) { double(Helix::Config) }
303
- subject { klass.method(meth) }
304
- its(:arity) { should eq(0) }
305
- it "should call upload_server_name" do
306
- klass.should_receive(:upload_server_name)
307
- klass.send(meth)
308
- end
309
- end
310
-
311
- describe ".upload_close" do
312
- let(:meth) { :upload_close }
313
- let(:mock_config) { double(Helix::Config) }
314
- subject { klass.method(meth) }
315
- its(:arity) { should eq(0) }
316
- it "should call upload_server_name" do
317
- klass.should_receive(:http_close)
318
- klass.send(meth)
319
- end
320
- end
126
+ it_behaves_like "ingest_sig_opts", Helix::Video
127
+ it_behaves_like "uploads", Helix::Video
321
128
 
322
129
  describe ".slice" do
323
130
  let(:meth) { :slice }
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.4.pre
5
- prerelease: 8
4
+ version: 0.0.4.5.pre
6
5
  platform: ruby
7
6
  authors:
8
7
  - Twistage, Inc
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-09-12 00:00:00.000000000 Z
11
+ date: 2013-10-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: json
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rest-client
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - '='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - '='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: nori
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - '='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - '='
60
53
  - !ruby/object:Gem::Version
@@ -115,27 +108,26 @@ files:
115
108
  homepage: https://github.com/Twistage/helix/
116
109
  licenses:
117
110
  - 3-Clause BSD
111
+ metadata: {}
118
112
  post_install_message:
119
113
  rdoc_options: []
120
114
  require_paths:
121
115
  - lib
122
116
  required_ruby_version: !ruby/object:Gem::Requirement
123
- none: false
124
117
  requirements:
125
118
  - - ! '>='
126
119
  - !ruby/object:Gem::Version
127
120
  version: '0'
128
121
  required_rubygems_version: !ruby/object:Gem::Requirement
129
- none: false
130
122
  requirements:
131
123
  - - ! '>'
132
124
  - !ruby/object:Gem::Version
133
125
  version: 1.3.1
134
126
  requirements: []
135
127
  rubyforge_project:
136
- rubygems_version: 1.8.25
128
+ rubygems_version: 2.1.4
137
129
  signing_key:
138
- specification_version: 3
130
+ specification_version: 4
139
131
  summary: Wrapper library for the video API
140
132
  test_files: []
141
133
  has_rdoc: yard