quorum 0.7.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/.rspec +1 -0
  2. data/.travis.yml +5 -1
  3. data/Gemfile +4 -2
  4. data/Gemfile.lock +68 -47
  5. data/HISTORY.md +9 -0
  6. data/README.rdoc +1 -1
  7. data/app/assets/javascripts/quorum/quorum.js +4 -4
  8. data/app/controllers/quorum/application_controller.rb +1 -0
  9. data/app/controllers/quorum/jobs_controller.rb +65 -80
  10. data/app/models/quorum/blastn_job.rb +1 -1
  11. data/app/models/quorum/blastn_job_report.rb +4 -1
  12. data/app/models/quorum/blastp_job.rb +1 -1
  13. data/app/models/quorum/blastp_job_report.rb +4 -1
  14. data/app/models/quorum/blastx_job.rb +1 -1
  15. data/app/models/quorum/blastx_job_report.rb +4 -1
  16. data/app/models/quorum/job.rb +64 -56
  17. data/app/models/quorum/job_data.rb +22 -0
  18. data/app/models/quorum/job_fetch_data.rb +11 -0
  19. data/app/models/quorum/job_queue_observer.rb +11 -0
  20. data/app/models/quorum/job_queue_service.rb +66 -0
  21. data/app/models/quorum/job_report_searcher.rb +36 -0
  22. data/app/models/quorum/job_serializer.rb +96 -0
  23. data/app/models/quorum/tblastn_job.rb +1 -1
  24. data/app/models/quorum/tblastn_job_report.rb +4 -1
  25. data/app/views/quorum/jobs/show.html.erb +3 -0
  26. data/app/views/quorum/jobs/templates/_blast_detailed_report_template.html.erb +1 -1
  27. data/app/views/quorum/jobs/templates/_blast_template.html.erb +3 -1
  28. data/config/initializers/mime_types.rb +2 -0
  29. data/config/routes.rb +3 -3
  30. data/db/migrate/20120809155712_add_percent_identity_to_blast_reports.rb +8 -0
  31. data/db/migrate/20120921182416_add_mismatch_to_blast_reports.rb +8 -0
  32. data/lib/generators/templates/blast.rb +8 -1
  33. data/lib/quorum/engine.rb +2 -0
  34. data/lib/quorum/sequence.rb +35 -0
  35. data/lib/quorum/version.rb +1 -1
  36. data/lib/quorum.rb +3 -10
  37. data/lib/tasks/quorum_blastdb_build.rake +3 -1
  38. data/lib/workers/system.rb +3 -1
  39. data/quorum.gemspec +1 -0
  40. data/spec/dummy/config/environment.rb +18 -5
  41. data/spec/javascripts/helpers/jasmine-jquery.js +2 -2
  42. data/spec/javascripts/{jobs_spec.js → suites/jobs_spec.js} +0 -0
  43. data/spec/javascripts/{quorum_spec.js → suites/quorum_spec.js} +0 -0
  44. data/spec/javascripts/{string_spec.js → suites/string_spec.js} +0 -0
  45. data/spec/lib/tasks/travis.rake +9 -4
  46. data/spec/models/blastn_job_report_spec.rb +7 -3
  47. data/spec/models/blastp_job_report_spec.rb +8 -3
  48. data/spec/models/blastx_job_report_spec.rb +8 -3
  49. data/spec/models/job_data_spec.rb +21 -0
  50. data/spec/models/job_fetch_data_spec.rb +25 -0
  51. data/spec/models/job_queue_observer_spec.rb +18 -0
  52. data/spec/models/job_queue_service_spec.rb +49 -0
  53. data/spec/models/job_report_searcher_spec.rb +47 -0
  54. data/spec/models/job_serializer_spec.rb +60 -0
  55. data/spec/models/job_spec.rb +1 -16
  56. data/spec/models/tblastn_job_report_spec.rb +8 -3
  57. data/spec/quorum/quorum_sequence_spec.rb +2 -0
  58. data/spec/requests/jobs_spec.rb +16 -7
  59. data/spec/spec_helper.rb +2 -0
  60. metadata +38 -8
  61. data/spec/dummy/app/models/blast.rb +0 -2
@@ -81,7 +81,7 @@ jasmine.Fixtures.prototype.createContainer_ = function(html) {
81
81
  jQuery('body').append(container);
82
82
  };
83
83
 
84
- jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {
84
+ jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {
85
85
  if (typeof this.fixturesCache_[url] == 'undefined') {
86
86
  this.loadFixtureIntoCache_(url);
87
87
  }
@@ -223,7 +223,7 @@ jasmine.JQuery.matchersClass = {};
223
223
  var events = this.actual.data("events");
224
224
  return events && events[eventName].length > 0;
225
225
  },
226
-
226
+
227
227
  // tests the existence of a specific event binding + handler
228
228
  toHandleWith: function(eventName, eventHandler) {
229
229
  var stack = this.actual.data("events")[eventName];
@@ -95,10 +95,15 @@ namespace :travis do
95
95
  task :create_db_config do
96
96
  config = File.expand_path("../../../dummy/config", __FILE__)
97
97
  File.open(File.join(config, "database.yml"), "w+") do |file|
98
- file.puts "\ntest:\n adapter: mysql2\n encoding: utf8\n" <<
99
- " reconnect: false\n database: quorum_test\n" <<
100
- " pool: 5\n username: root\n password:\n" <<
101
- " host: localhost\n"
98
+ file.puts "\nmysql: &mysql\n adapter: mysql2\n" <<
99
+ " database: quorum_test\n username: root\n"
100
+ file.puts "\npostgresql: &postgresql\n adapter: postgresql\n" <<
101
+ " database: quorum_test\n username: postgres\n" <<
102
+ " min_messages: ERROR\n"
103
+ file.puts "\ndefaults: &defaults\n pool: 5\n" <<
104
+ " timeout: 5000\n host: localhost\n" <<
105
+ " <<: *<%= ENV['DB'] %>\n"
106
+ file.puts "\ntest:\n <<: *defaults"
102
107
  end
103
108
  end
104
109
 
@@ -2,12 +2,16 @@ require 'spec_helper'
2
2
 
3
3
  describe Quorum::BlastnJobReport do
4
4
 
5
+ before(:all) do
6
+ @blastn = Quorum::BlastnJobReport
7
+ end
8
+
5
9
  it "should respond to default_order" do
6
- Quorum::BlastnJobReport.methods.should include(:default_order)
10
+ @blastn.respond_to?(:default_order).should be_true
7
11
  end
8
12
 
9
- it "should respond to by_query" do
10
- Quorum::BlastnJobReport.methods.should include(:by_query)
13
+ it "should be searchable" do
14
+ @blastn.respond_to?(:search).should be_true
11
15
  end
12
16
 
13
17
  end
@@ -2,12 +2,17 @@ require 'spec_helper'
2
2
 
3
3
  describe Quorum::BlastpJobReport do
4
4
 
5
+ before(:all) do
6
+ @blastp = Quorum::BlastpJobReport
7
+ end
8
+
5
9
  it "should respond to default_order" do
6
- Quorum::BlastpJobReport.methods.should include(:default_order)
10
+ @blastp.respond_to?(:default_order).should be_true
7
11
  end
8
12
 
9
- it "should respond to by_query" do
10
- Quorum::BlastpJobReport.methods.should include(:by_query)
13
+ it "should be searchable" do
14
+ @blastp.respond_to?(:search).should be_true
11
15
  end
12
16
 
13
17
  end
18
+
@@ -2,12 +2,17 @@ require 'spec_helper'
2
2
 
3
3
  describe Quorum::BlastxJobReport do
4
4
 
5
- it "should respond to default_order" do
6
- Quorum::BlastxJobReport.methods.should include(:default_order)
5
+ before(:all) do
6
+ @blastx = Quorum::BlastxJobReport
7
7
  end
8
8
 
9
9
  it "should respond to default_order" do
10
- Quorum::BlastxJobReport.methods.should include(:by_query)
10
+ @blastx.respond_to?(:default_order).should be_true
11
+ end
12
+
13
+ it "should be searchable" do
14
+ @blastx.respond_to?(:search).should be_true
11
15
  end
12
16
 
13
17
  end
18
+
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Quorum::JobData do
4
+
5
+ before(:each) do
6
+ @data = Quorum::JobData.new()
7
+ end
8
+
9
+ it "#results stores data in an array" do
10
+ @data.results.should be_a(Array)
11
+ end
12
+
13
+ it "#no_results returns a hash { results: false }" do
14
+ @data.no_results.should eq([{ results: false }])
15
+ end
16
+
17
+ it "#not_enqueued returns a hash { results: false, enqueued: false }" do
18
+ @data.not_enqueued.should eq([{ results: false, enqueued: false }])
19
+ end
20
+
21
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Quorum::JobFetchData do
4
+
5
+ before(:each) do
6
+ @fetch = Quorum::JobFetchData.new
7
+ end
8
+
9
+ it "validates presence of attributes" do
10
+ @fetch.should have(1).error_on(:algo)
11
+ @fetch.should have(1).error_on(:blast_dbs)
12
+ @fetch.should have(1).error_on(:hit_id)
13
+ @fetch.should have(1).error_on(:hit_display_id)
14
+ @fetch.valid?.should be_false
15
+ end
16
+
17
+ it "passes validation when attrs are set" do
18
+ @fetch.algo = "foo"
19
+ @fetch.blast_dbs = "foo"
20
+ @fetch.hit_id = "foo"
21
+ @fetch.hit_display_id = "foo"
22
+ @fetch.valid?.should be_true
23
+ end
24
+
25
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Quorum::JobQueueObserver do
4
+
5
+ it "should queue workers after create" do
6
+ job = Quorum::Job.new()
7
+ job.sequence = ">test\n" + "a" * 50
8
+ job.build_blastn_job
9
+ job.blastn_job.queue = true
10
+ job.blastn_job.blast_dbs = ["test"]
11
+
12
+ obs = Quorum::JobQueueObserver.instance
13
+
14
+ Quorum::JobQueueService.should_receive(:queue_search_workers).with(job)
15
+ obs.after_create(job)
16
+ end
17
+
18
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe Quorum::JobQueueService do
4
+
5
+ before(:each) do
6
+ ResqueSpec.reset!
7
+ end
8
+
9
+ describe "Job Queue" do
10
+
11
+ before(:each) do
12
+ @job = Quorum::Job.new()
13
+ @job.sequence = File.open(
14
+ File.expand_path("../../data/nucl_prot_seqs.txt", __FILE__)
15
+ ).read
16
+ @job.build_blastn_job
17
+ @job.blastn_job.queue = true
18
+ @job.blastn_job.blast_dbs = ["db"]
19
+ @job.save!
20
+ end
21
+
22
+ it "enqueues job after save" do
23
+ Quorum::JobQueueService.queue_search_workers(@job)
24
+ Workers::System.should have_queue_size_of(1)
25
+ end
26
+
27
+ end
28
+
29
+ describe "Fetch Queue" do
30
+
31
+ before(:each) do
32
+ @fetch = Quorum::JobFetchData.new
33
+ @fetch.algo = "foo"
34
+ @fetch.blast_dbs = "foo"
35
+ @fetch.hit_id = "foo"
36
+ @fetch.hit_display_id = "foo"
37
+ end
38
+
39
+ it "enqueues valid blast fetch and returns meta_id" do
40
+ f = Quorum::JobQueueService.queue_fetch_worker(@fetch)
41
+ Workers::System.should have_queue_size_of(1)
42
+ f.should have(1).items
43
+ f[0].keys.should eq([:meta_id])
44
+ f[0].values.should_not be_empty
45
+ end
46
+
47
+ end
48
+
49
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe Quorum::JobReportSearcher do
4
+
5
+ include Quorum::JobReportSearcher
6
+
7
+ before(:each) do
8
+ @algo = "blastn"
9
+ blastn = Quorum::BlastnJobReport
10
+ 2.times do
11
+ blastn.create!({
12
+ :query => "test",
13
+ :hit_display_id => "foo",
14
+ :identity => 0,
15
+ :align_len => 0,
16
+ :query_from => 10,
17
+ :query_to => 100,
18
+ :hit_from => 900,
19
+ :hit_to => 1000,
20
+ :evalue => "1e-100",
21
+ :bit_score => 1000,
22
+ :results => true,
23
+ :blastn_job_id => 1
24
+ })
25
+ end
26
+ end
27
+
28
+ it "makes job reports searchable" do
29
+ p = { :id => 1, :blastn_id => "1,2", :query => "test" }
30
+ search(@algo, p).count.should eq(2)
31
+
32
+ p = { :id => 1, :blastn_id => "2", :query => "test" }
33
+ search(@algo, p).count.should eq(1)
34
+
35
+ p = { :id => 1, :blastn_id => "1,2", :query => nil }
36
+ search(@algo, p).count.should eq(2)
37
+
38
+ p = { :id => 1, :blastn_id => nil, :query => "test" }
39
+ search(@algo, p).count.should eq(2)
40
+
41
+ p = { :id => 1 }
42
+ search(@algo, p).count.should eq(2)
43
+
44
+ search(@algo, {}).count.should eq(0)
45
+ end
46
+
47
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Quorum::JobSerializer" do
4
+
5
+ include Quorum::JobSerializer
6
+ before(:each) do
7
+ @blastn = Quorum::BlastnJobReport
8
+ 2.times do
9
+ @blastn.create!({
10
+ :query => "test",
11
+ :hit_display_id => "foo",
12
+ :identity => 0,
13
+ :align_len => 0,
14
+ :pct_identity => 100.0,
15
+ :query_from => 10,
16
+ :query_to => 100,
17
+ :hit_from => 900,
18
+ :hit_to => 1000,
19
+ :evalue => "1e-100",
20
+ :bit_score => 1000,
21
+ :results => true
22
+ })
23
+ end
24
+ end
25
+
26
+ describe "#as_json" do
27
+ it "returns error messages as json when present" do
28
+ Quorum::JobSerializer.as_json(Quorum::Job.create({})).should have_key(:errors)
29
+ end
30
+
31
+ it "returns object as json" do
32
+ Quorum::JobSerializer.as_json(@blastn.first).should eq(@blastn.first.as_json)
33
+ end
34
+ end
35
+
36
+ describe "#as_txt" do
37
+ it "returns a tab delimited string of Blast results" do
38
+ Quorum::JobSerializer.as_txt(@blastn.all).match(/[\w\d\W\t\n]*/).should be_true
39
+ end
40
+ end
41
+
42
+ describe "#as_gff" do
43
+ it "returns a gff string of Blast results" do
44
+ Quorum::JobSerializer.as_gff(@blastn.all).match(/##gff-version 3\n\.*/).should be_true
45
+ # Strand should be +
46
+ Quorum::JobSerializer.as_gff(@blastn.all).include?("+").should be_true
47
+ end
48
+ end
49
+
50
+ describe "#format_hit_start_stop" do
51
+ it "returns original params when start < stop" do
52
+ Quorum::JobSerializer.format_hit_start_stop(10, 12).should eq([10,12])
53
+ end
54
+
55
+ it "returns params in acending order when start > stop" do
56
+ Quorum::JobSerializer.format_hit_start_stop(12, 10).should eq([10,12])
57
+ end
58
+ end
59
+
60
+ end
@@ -4,7 +4,6 @@ describe Quorum::Job do
4
4
 
5
5
  before(:each) do
6
6
  @job = Quorum::Job.new()
7
- ResqueSpec.reset!
8
7
  end
9
8
 
10
9
  it "fails validation without params" do
@@ -38,7 +37,7 @@ describe Quorum::Job do
38
37
  @job.should have(0).errors_on(:algorithm)
39
38
  end
40
39
 
41
- it "deletes submitted jobs" do
40
+ it "deletes completed jobs" do
42
41
  1.upto(5) do |i|
43
42
  job = Quorum::Job.new()
44
43
  job.sequence = File.open(
@@ -56,18 +55,4 @@ describe Quorum::Job do
56
55
  Quorum::BlastnJob.count.should eq(3)
57
56
  end
58
57
 
59
- it "queues workers after save" do
60
- @job.sequence = File.open(
61
- File.expand_path("../../data/nucl_prot_seqs.txt", __FILE__)
62
- ).read
63
-
64
- @job.build_blastn_job
65
- @job.blastn_job.queue = true
66
- @job.blastn_job.blast_dbs = ["test_1", "test_2"]
67
-
68
- @job.save!
69
-
70
- Workers::System.should have_queue_size_of(1)
71
- end
72
-
73
58
  end
@@ -2,12 +2,17 @@ require 'spec_helper'
2
2
 
3
3
  describe Quorum::TblastnJobReport do
4
4
 
5
- it "should respond to default_order" do
6
- Quorum::TblastnJobReport.methods.should include(:default_order)
5
+ before(:all) do
6
+ @tblastn = Quorum::TblastnJobReport
7
7
  end
8
8
 
9
9
  it "should respond to default_order" do
10
- Quorum::TblastnJobReport.methods.should include(:by_query)
10
+ @tblastn.respond_to?(:default_order).should be_true
11
+ end
12
+
13
+ it "should be searchable" do
14
+ @tblastn.respond_to?(:search).should be_true
11
15
  end
12
16
 
13
17
  end
18
+
@@ -4,6 +4,7 @@ require 'quorum/sequence'
4
4
  include Quorum::Sequence
5
5
 
6
6
  describe "Quorum::Sequence" do
7
+
7
8
  describe "#create_hash" do
8
9
  it "creates a MD5.hexdigest of a sequence" do
9
10
  sequence = File.open(
@@ -89,4 +90,5 @@ describe "Quorum::Sequence" do
89
90
  discover_input_sequence_type(sequence).should eq("amino_acid")
90
91
  end
91
92
  end
93
+
92
94
  end
@@ -54,6 +54,7 @@ describe "Jobs" do
54
54
  Capybara.current_driver = :selenium
55
55
  end
56
56
  before(:each) do
57
+ ActiveRecord::Base.observers.enable Quorum::JobQueueObserver
57
58
  ResqueSpec.reset!
58
59
  ResqueSpec.inline = true
59
60
  end
@@ -135,7 +136,7 @@ describe "Jobs" do
135
136
  page.should have_content("hseq")
136
137
 
137
138
  # Download sequence
138
- find("p.small a#download_sequence_2").click
139
+ find("p.small a.download_sequence").click
139
140
  page.should have_content("Fetching sequence...")
140
141
  page.should have_content("Sequence Downloaded Successfully")
141
142
 
@@ -150,33 +151,41 @@ describe "Jobs" do
150
151
  end
151
152
  after(:all) do
152
153
  Capybara.use_default_driver
154
+ ActiveRecord::Base.observers.disable :all
153
155
  end
154
156
  end
155
157
 
156
158
  describe "GET /quorum/jobs/id" do
157
159
  it "displays notice and renders form with invalid id" do
158
- visit job_path('12893479812347912')
160
+ visit job_path('12893')
159
161
  page.should have_content("The data you requested is unavailable. Please check your URL and try again.")
160
162
  current_path.should eq(new_job_path)
161
163
  end
162
164
  end
163
165
 
164
- describe "GET /quorum/jobs/id/get_quorum_search_results" do
166
+ describe "GET /quorum/jobs/id/search" do
165
167
  it "renders JSON results => false with invalid id" do
166
- visit "/quorum/jobs/23542352345/get_quorum_search_results.json"
168
+ visit "/quorum/jobs/23542/search.json"
167
169
  page.should have_content("[{\"results\":false}]")
168
170
  end
169
171
  end
170
172
 
171
- describe "GET /quorum/jobs/id/get_quorum_blast_hit_sequence" do
173
+ describe "GET /quorum/jobs/id/get_blast_hit_sequence" do
172
174
  it "renders empty JSON with invalid id" do
173
- visit "/quorum/jobs/23542352345/get_quorum_blast_hit_sequence.json"
175
+ visit "/quorum/jobs/23542/get_blast_hit_sequence.json"
174
176
  page.should have_content("[]")
175
177
  end
176
178
 
177
179
  it "renders empty JSON with invalid id and valid params" do
178
- visit "/quorum/jobs/23542352345/get_quorum_blast_hit_sequence.json?algo=blastn"
180
+ visit "/quorum/jobs/23542/get_blast_hit_sequence.json?algo=blastn"
179
181
  page.should have_content("[]")
180
182
  end
181
183
  end
184
+
185
+ describe "GET /quorum/jobs/id/send_blast_hit_sequence" do
186
+ it "renders empty text on error" do
187
+ visit "/quorum/jobs/23423/send_blast_hit_sequence?meta_id=1231"
188
+ page.should_not have_content(" ")
189
+ end
190
+ end
182
191
  end
data/spec/spec_helper.rb CHANGED
@@ -25,6 +25,8 @@ RSpec.configure do |config|
25
25
  config.filter_run :focus => true
26
26
  config.run_all_when_everything_filtered = true
27
27
 
28
+ ActiveRecord::Base.observers.disable :all
29
+
28
30
  ## DatabaseCleaner ##
29
31
  DatabaseCleaner.logger = Rails.logger
30
32
  config.before(:suite) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quorum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-07 00:00:00.000000000 Z
12
+ date: 2012-11-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -123,6 +123,22 @@ dependencies:
123
123
  - - ~>
124
124
  - !ruby/object:Gem::Version
125
125
  version: 0.3.11
126
+ - !ruby/object:Gem::Dependency
127
+ name: pg
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 0.14.1
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 0.14.1
126
142
  - !ruby/object:Gem::Dependency
127
143
  name: rspec-rails
128
144
  requirement: !ruby/object:Gem::Requirement
@@ -255,6 +271,12 @@ files:
255
271
  - app/models/quorum/blastx_job.rb
256
272
  - app/models/quorum/blastx_job_report.rb
257
273
  - app/models/quorum/job.rb
274
+ - app/models/quorum/job_data.rb
275
+ - app/models/quorum/job_fetch_data.rb
276
+ - app/models/quorum/job_queue_observer.rb
277
+ - app/models/quorum/job_queue_service.rb
278
+ - app/models/quorum/job_report_searcher.rb
279
+ - app/models/quorum/job_serializer.rb
258
280
  - app/models/quorum/tblastn_job.rb
259
281
  - app/models/quorum/tblastn_job_report.rb
260
282
  - app/views/layouts/quorum/application.html.erb
@@ -267,6 +289,7 @@ files:
267
289
  - app/views/quorum/jobs/templates/_blast_detailed_report_template.html.erb
268
290
  - app/views/quorum/jobs/templates/_blast_template.html.erb
269
291
  - app/views/shared/_error_messages.html.erb
292
+ - config/initializers/mime_types.rb
270
293
  - config/locales/en.yml
271
294
  - config/routes.rb
272
295
  - db/migrate/20111031204518_create_jobs.rb
@@ -280,8 +303,10 @@ files:
280
303
  - db/migrate/20111031204941_create_tblastn_job_reports.rb
281
304
  - db/migrate/20120109232446_add_hit_display_id_to_blast_reports.rb
282
305
  - db/migrate/20120807202555_add_gaps_to_blast_reports.rb
306
+ - db/migrate/20120809155712_add_percent_identity_to_blast_reports.rb
283
307
  - db/migrate/20120910175911_change_hsp_group_column_type.rb
284
308
  - db/migrate/20120918205556_rename_max_score_column.rb
309
+ - db/migrate/20120921182416_add_mismatch_to_blast_reports.rb
285
310
  - lib/generators/quorum/images_generator.rb
286
311
  - lib/generators/quorum/install_generator.rb
287
312
  - lib/generators/quorum/styles_generator.rb
@@ -329,7 +354,6 @@ files:
329
354
  - spec/dummy/app/helpers/application_helper.rb
330
355
  - spec/dummy/app/mailers/.gitkeep
331
356
  - spec/dummy/app/models/.gitkeep
332
- - spec/dummy/app/models/blast.rb
333
357
  - spec/dummy/app/views/layouts/application.html.erb
334
358
  - spec/dummy/config.ru
335
359
  - spec/dummy/config/application.rb
@@ -358,12 +382,12 @@ files:
358
382
  - spec/javascripts/fixtures/quorum_search_form.html
359
383
  - spec/javascripts/fixtures/quorum_tabs.html
360
384
  - spec/javascripts/helpers/jasmine-jquery.js
361
- - spec/javascripts/jobs_spec.js
362
385
  - spec/javascripts/jquery/jquery-ui.min.js
363
386
  - spec/javascripts/jquery/jquery.min.js
364
387
  - spec/javascripts/jquery/jquery_ujs.js
365
- - spec/javascripts/quorum_spec.js
366
- - spec/javascripts/string_spec.js
388
+ - spec/javascripts/suites/jobs_spec.js
389
+ - spec/javascripts/suites/quorum_spec.js
390
+ - spec/javascripts/suites/string_spec.js
367
391
  - spec/javascripts/support/jasmine.yml
368
392
  - spec/javascripts/support/jasmine_config.rb
369
393
  - spec/javascripts/support/jasmine_runner.rb
@@ -374,6 +398,12 @@ files:
374
398
  - spec/models/blastp_job_spec.rb
375
399
  - spec/models/blastx_job_report_spec.rb
376
400
  - spec/models/blastx_job_spec.rb
401
+ - spec/models/job_data_spec.rb
402
+ - spec/models/job_fetch_data_spec.rb
403
+ - spec/models/job_queue_observer_spec.rb
404
+ - spec/models/job_queue_service_spec.rb
405
+ - spec/models/job_report_searcher_spec.rb
406
+ - spec/models/job_serializer_spec.rb
377
407
  - spec/models/job_spec.rb
378
408
  - spec/models/tblastn_job_report_spec.rb
379
409
  - spec/models/tblastn_job_spec.rb
@@ -403,7 +433,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
403
433
  version: '0'
404
434
  segments:
405
435
  - 0
406
- hash: 1003819355082357991
436
+ hash: -3863476940221336517
407
437
  required_rubygems_version: !ruby/object:Gem::Requirement
408
438
  none: false
409
439
  requirements:
@@ -412,7 +442,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
412
442
  version: '0'
413
443
  segments:
414
444
  - 0
415
- hash: 1003819355082357991
445
+ hash: -3863476940221336517
416
446
  requirements: []
417
447
  rubyforge_project:
418
448
  rubygems_version: 1.8.24
@@ -1,2 +0,0 @@
1
- class Blast < ActiveRecord::Base
2
- end