sequenceserver 1.1.0.beta2 → 1.1.0.beta3
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.
Potentially problematic release.
This version of sequenceserver might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +16 -5
- data/README.md +3 -0
- data/lib/sequenceserver/api_errors.rb +67 -0
- data/lib/sequenceserver/blast/constants.rb +1 -1
- data/lib/sequenceserver/blast/formatter.rb +4 -2
- data/lib/sequenceserver/blast/job.rb +17 -62
- data/lib/sequenceserver/blast/report.rb +15 -2
- data/lib/sequenceserver/blast.rb +1 -0
- data/lib/sequenceserver/exceptions.rb +2 -3
- data/lib/sequenceserver/job.rb +72 -44
- data/lib/sequenceserver/routes.rb +29 -25
- data/lib/sequenceserver/version.rb +1 -1
- data/lib/sequenceserver.rb +32 -20
- data/public/js/errormodal.js +55 -0
- data/public/js/report.js +6 -2
- data/public/js/sequenceserver.js +0 -12
- data/public/sequenceserver-report.min.js +15 -15
- data/public/sequenceserver-search.min.js +3 -3
- data/sequenceserver.gemspec +2 -1
- data/spec/capybara_spec.rb +120 -21
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhd +8 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhi +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhr +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nin +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nog +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsd +16 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsi +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsq +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.txt +8 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phd +9140 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phi +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phr +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pin +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pog +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psd +18280 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psi +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psq +0 -0
- data/spec/database/sample/proteins/uniprot/URL +1 -0
- data/spec/nucleotide_query.fa +21 -0
- data/spec/protein_query.fa +21 -0
- data/spec/routes_spec.rb +2 -0
- data/spec/sample_reports/blastn_sample/job.yaml +1 -0
- data/spec/sample_reports/blastn_sample/{rfile → stdout} +0 -0
- data/spec/sample_reports/blastp_sample/job.yaml +1 -0
- data/spec/sample_reports/blastp_sample/{rfile → stdout} +0 -0
- data/spec/sample_reports/blastx_sample/job.yaml +1 -0
- data/spec/sample_reports/blastx_sample/{rfile → stdout} +0 -0
- data/spec/sample_reports/no_hits_sample/job.yaml +1 -0
- data/spec/sample_reports/no_hits_sample/{rfile → stdout} +0 -0
- data/spec/sample_reports/tblastn_sample/job.yaml +1 -0
- data/spec/sample_reports/tblastn_sample/{rfile → stdout} +0 -0
- data/spec/sample_reports/tblastx_sample/job.yaml +1 -0
- data/spec/sample_reports/tblastx_sample/{rfile → stdout} +0 -0
- data/spec/sample_reports/with_hits_sample/job.yaml +1 -0
- data/spec/sample_reports/with_hits_sample/{rfile → stdout} +0 -0
- data/spec/sequenceserver_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -16
- data/views/layout.erb +0 -45
- metadata +55 -16
- data/lib/sequenceserver/blast/exceptions.rb +0 -27
- data/views/400.erb +0 -29
- data/views/500.erb +0 -41
data/sequenceserver.gemspec
CHANGED
@@ -28,8 +28,9 @@ DESC
|
|
28
28
|
s.add_development_dependency('rspec', '~> 3.7', '>= 3.7.0')
|
29
29
|
s.add_development_dependency('capybara', '~> 2.18', '>= 2.18.0')
|
30
30
|
s.add_development_dependency('rack-test', '~> 1.0', '>= 1.0.0')
|
31
|
+
s.add_development_dependency('sauce_whisk', '~> 0.0', '>= 0.0.19')
|
31
32
|
s.add_development_dependency('selenium-webdriver', '~> 3.11', '>= 3.11.0')
|
32
|
-
s.add_development_dependency('codeclimate-test-reporter', '~> 0
|
33
|
+
s.add_development_dependency('codeclimate-test-reporter', '~> 1.0', '>= 1.0.8')
|
33
34
|
|
34
35
|
# gem
|
35
36
|
s.files = `git ls-files`.split("\n") - ['Gemfile', 'Gemfile.lock']
|
data/spec/capybara_spec.rb
CHANGED
@@ -1,51 +1,150 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'sauce_whisk'
|
3
|
+
require 'capybara/rspec'
|
4
|
+
require 'selenium-webdriver'
|
2
5
|
|
3
|
-
|
4
|
-
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.include Capybara::DSL
|
8
|
+
end
|
5
9
|
|
6
10
|
describe 'a browser', :js => true do
|
7
|
-
|
8
|
-
sample_nucl_db = 'Sinvicta 2-2-3 cdna subset'
|
9
|
-
# sample_prot_db = 'Sinvicta2-2-3.prot'
|
10
|
-
|
11
|
-
before do
|
11
|
+
before do |scenario|
|
12
12
|
Capybara.app = SequenceServer.init
|
13
13
|
Capybara.javascript_driver = :selenium
|
14
|
+
|
15
|
+
Capybara.register_driver :selenium do |app|
|
16
|
+
capabilities = {
|
17
|
+
name: scenario.full_description,
|
18
|
+
platform: ENV['platform'],
|
19
|
+
browserName: ENV['browserName'],
|
20
|
+
browserVersion: ENV['browserVersion'],
|
21
|
+
build: ENV['TRAVIS_BUILD_NUMBER'],
|
22
|
+
'tunnel-identifier': ENV['TRAVIS_JOB_NUMBER']
|
23
|
+
}
|
24
|
+
url = "https://#{ENV['SAUCE_USERNAME']}:#{ENV['SAUCE_ACCESS_KEY']}" \
|
25
|
+
"@ondemand.saucelabs.com:443/wd/hub".strip
|
26
|
+
|
27
|
+
Capybara::Selenium::Driver.new(app, browser: :remote, url: url,
|
28
|
+
desired_capabilities: capabilities)
|
29
|
+
end
|
14
30
|
end
|
15
31
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
32
|
+
before :each do |scenario|
|
33
|
+
jobname = scenario.full_description
|
34
|
+
Capybara.session_name = "#{jobname} - #{ENV['platform']} - " +
|
35
|
+
"#{ENV['browserName']} - #{ENV['browserVersion']}"
|
36
|
+
|
37
|
+
@driver = Capybara.current_session.driver
|
38
|
+
|
39
|
+
# Output sessionId and jobname to std out for Sauce OnDemand Plugin to
|
40
|
+
# display embeded results
|
41
|
+
@session_id = @driver.browser.session_id
|
42
|
+
puts "SauceOnDemandSessionID=#{@session_id} job-name=#{jobname}"
|
24
43
|
end
|
25
44
|
|
26
45
|
it 'properly controls blast button' do
|
27
46
|
visit '/'
|
28
47
|
|
29
|
-
fill_in('sequence', :
|
48
|
+
fill_in('sequence', with: nucleotide_query, wait: 5)
|
30
49
|
page.evaluate_script("$('#method').is(':disabled')").should eq(true)
|
31
50
|
|
32
|
-
check(
|
51
|
+
check(nucleotide_databases.first)
|
33
52
|
page.evaluate_script("$('#method').is(':disabled')").should eq(false)
|
34
53
|
end
|
35
54
|
|
36
55
|
it 'properly controls interaction with database listing' do
|
37
56
|
visit '/'
|
38
|
-
fill_in('sequence', :
|
39
|
-
check(
|
57
|
+
fill_in('sequence', with: nucleotide_query, wait: 5)
|
58
|
+
check(nucleotide_databases.first)
|
40
59
|
page.evaluate_script("$('.protein .database').first().hasClass('disabled')")
|
41
60
|
.should eq(true)
|
42
61
|
end
|
43
62
|
|
44
63
|
it 'shows a dropdown menu when other blast methods are available' do
|
45
64
|
visit '/'
|
46
|
-
fill_in('sequence', :
|
47
|
-
check(
|
65
|
+
fill_in('sequence', with: nucleotide_query, wait: 5)
|
66
|
+
check(nucleotide_databases.first)
|
48
67
|
page.save_screenshot('screenshot.png')
|
49
68
|
page.has_css?('button.dropdown-toggle').should eq(true)
|
50
69
|
end
|
70
|
+
|
71
|
+
it 'can run a simple blastn search' do
|
72
|
+
perform_search query: nucleotide_query,
|
73
|
+
databases: nucleotide_databases
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'can run a simple blastp search' do
|
77
|
+
perform_search query: protein_query,
|
78
|
+
databases: protein_databases
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'can run a simple blastx search' do
|
82
|
+
perform_search query: nucleotide_query,
|
83
|
+
databases: protein_databases
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'can run a simple tblastx search' do
|
87
|
+
perform_search query: nucleotide_query,
|
88
|
+
databases: nucleotide_databases,
|
89
|
+
method: 'tblastx'
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'can run a simple tblastn search' do
|
93
|
+
perform_search query: protein_query,
|
94
|
+
databases: nucleotide_databases
|
95
|
+
end
|
96
|
+
|
97
|
+
after :each do |scenario|
|
98
|
+
@driver.quit
|
99
|
+
Capybara.use_default_driver
|
100
|
+
if scenario.exception
|
101
|
+
SauceWhisk::Jobs.fail_job @session_id
|
102
|
+
else
|
103
|
+
SauceWhisk::Jobs.pass_job @session_id
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
## Helpers ##
|
108
|
+
|
109
|
+
def perform_search(query: , databases: , method: nil)
|
110
|
+
# Load search form.
|
111
|
+
visit '/'
|
112
|
+
|
113
|
+
# Fill in query, select databases, submit form.
|
114
|
+
fill_in('sequence', with: query, wait: 5)
|
115
|
+
databases.each { |db| check db }
|
116
|
+
if method == 'tblastx'
|
117
|
+
find('.dropdown-toggle').click
|
118
|
+
find('.dropdown-menu li').click
|
119
|
+
end
|
120
|
+
click_button('method')
|
121
|
+
|
122
|
+
# switch to new window because link opens in new window
|
123
|
+
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
|
124
|
+
|
125
|
+
# Check that results loaded.
|
126
|
+
page.should have_content('Query', wait: 10)
|
127
|
+
end
|
128
|
+
|
129
|
+
def nucleotide_query
|
130
|
+
File.read File.join __dir__, 'nucleotide_query.fa'
|
131
|
+
end
|
132
|
+
|
133
|
+
def protein_query
|
134
|
+
File.read File.join __dir__, 'protein_query.fa'
|
135
|
+
end
|
136
|
+
|
137
|
+
def nucleotide_databases
|
138
|
+
[
|
139
|
+
'Solenopsis invicta gnG subset',
|
140
|
+
'Sinvicta 2-2-3 cdna subset'
|
141
|
+
]
|
142
|
+
end
|
143
|
+
|
144
|
+
def protein_databases
|
145
|
+
[
|
146
|
+
'Sinvicta 2-2-3 prot subset',
|
147
|
+
'2018-04 Swiss-Prot insecta'
|
148
|
+
]
|
149
|
+
end
|
51
150
|
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,16 @@
|
|
1
|
+
nw_0117949335
|
2
|
+
nw_011794933.15
|
3
|
+
nw_0117952763
|
4
|
+
nw_011795276.13
|
5
|
+
nw_0117968480
|
6
|
+
nw_011796848.10
|
7
|
+
nw_0117969511
|
8
|
+
nw_011796951.11
|
9
|
+
nw_0117981057
|
10
|
+
nw_011798105.17
|
11
|
+
nw_0117982564
|
12
|
+
nw_011798256.14
|
13
|
+
nw_0118003602
|
14
|
+
nw_011800360.12
|
15
|
+
nw_0118046886
|
16
|
+
nw_011804688.16
|
Binary file
|
Binary file
|