quorum 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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