sequenceserver 0.8.9 → 1.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/{README.txt → README.md} +2 -0
  3. data/bin/sequenceserver +255 -55
  4. data/config.ru +2 -4
  5. data/lib/sequenceserver.rb +293 -447
  6. data/lib/sequenceserver/blast.rb +464 -64
  7. data/lib/sequenceserver/database.rb +185 -19
  8. data/lib/sequenceserver/links.rb +114 -0
  9. data/lib/sequenceserver/logger.rb +27 -0
  10. data/lib/sequenceserver/sequence.rb +141 -0
  11. data/public/css/bootstrap.min.css +8 -413
  12. data/public/css/custom.css +363 -122
  13. data/public/css/font-awesome.min.css +4 -0
  14. data/public/fonts/FontAwesome.otf +0 -0
  15. data/public/fonts/fontawesome-webfont.eot +0 -0
  16. data/public/fonts/fontawesome-webfont.svg +565 -0
  17. data/public/fonts/fontawesome-webfont.ttf +0 -0
  18. data/public/fonts/fontawesome-webfont.woff +0 -0
  19. data/public/fonts/fontawesome-webfont.woff2 +0 -0
  20. data/public/js/bootstrap.min.js +11 -0
  21. data/public/js/d3.v3.min.js +5 -0
  22. data/public/js/html5shiv.min.js +4 -0
  23. data/public/js/jquery.scrollspy.js +74 -0
  24. data/public/js/jquery.t.js +353 -0
  25. data/public/js/sequence.js +2419 -0
  26. data/public/js/sequenceserver.blast.js +29 -30
  27. data/public/js/sequenceserver.js +544 -120
  28. data/public/js/underscore.min.js +6 -0
  29. data/public/js/webshims/polyfiller.js +1 -0
  30. data/public/js/webshims/shims/FlashCanvas/canvas2png.js +1 -0
  31. data/public/js/webshims/shims/FlashCanvas/flashcanvas.js +1 -0
  32. data/public/js/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
  33. data/public/js/webshims/shims/FlashCanvasPro/canvas2png.js +1 -0
  34. data/public/js/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  35. data/public/js/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  36. data/public/js/webshims/shims/FlashCanvasPro/flashcanvas.js +1 -0
  37. data/public/js/webshims/shims/canvas-blob.js +1 -0
  38. data/public/js/webshims/shims/color-picker.js +2 -0
  39. data/public/js/webshims/shims/combos/1.js +6 -0
  40. data/public/js/webshims/shims/combos/10.js +2 -0
  41. data/public/js/webshims/shims/combos/11.js +2 -0
  42. data/public/js/webshims/shims/combos/12.js +6 -0
  43. data/public/js/webshims/shims/combos/13.js +1 -0
  44. data/public/js/webshims/shims/combos/14.js +1 -0
  45. data/public/js/webshims/shims/combos/15.js +2 -0
  46. data/public/js/webshims/shims/combos/16.js +7 -0
  47. data/public/js/webshims/shims/combos/17.js +2 -0
  48. data/public/js/webshims/shims/combos/18.js +3 -0
  49. data/public/js/webshims/shims/combos/2.js +7 -0
  50. data/public/js/webshims/shims/combos/21.js +2 -0
  51. data/public/js/webshims/shims/combos/22.js +1 -0
  52. data/public/js/webshims/shims/combos/23.js +6 -0
  53. data/public/js/webshims/shims/combos/25.js +2 -0
  54. data/public/js/webshims/shims/combos/27.js +1 -0
  55. data/public/js/webshims/shims/combos/28.js +1 -0
  56. data/public/js/webshims/shims/combos/29.js +1 -0
  57. data/public/js/webshims/shims/combos/3.js +1 -0
  58. data/public/js/webshims/shims/combos/30.js +2 -0
  59. data/public/js/webshims/shims/combos/31.js +1 -0
  60. data/public/js/webshims/shims/combos/33.js +1 -0
  61. data/public/js/webshims/shims/combos/34.js +1 -0
  62. data/public/js/webshims/shims/combos/4.js +1 -0
  63. data/public/js/webshims/shims/combos/5.js +2 -0
  64. data/public/js/webshims/shims/combos/6.js +2 -0
  65. data/public/js/webshims/shims/combos/7.js +7 -0
  66. data/public/js/webshims/shims/combos/8.js +7 -0
  67. data/public/js/webshims/shims/combos/9.js +2 -0
  68. data/public/js/webshims/shims/combos/97.js +1 -0
  69. data/public/js/webshims/shims/combos/98.js +1 -0
  70. data/public/js/webshims/shims/combos/99.js +1 -0
  71. data/public/js/webshims/shims/details.js +1 -0
  72. data/public/js/webshims/shims/dom-extend.js +1 -0
  73. data/public/js/webshims/shims/es5.js +1 -0
  74. data/public/js/webshims/shims/es6.js +1 -0
  75. data/public/js/webshims/shims/excanvas.js +1 -0
  76. data/public/js/webshims/shims/filereader-xhr.js +1 -0
  77. data/public/js/webshims/shims/form-combat.js +1 -0
  78. data/public/js/webshims/shims/form-core.js +1 -0
  79. data/public/js/webshims/shims/form-datalist-lazy.js +1 -0
  80. data/public/js/webshims/shims/form-datalist.js +1 -0
  81. data/public/js/webshims/shims/form-fixrangechange.js +1 -0
  82. data/public/js/webshims/shims/form-inputmode.js +1 -0
  83. data/public/js/webshims/shims/form-message.js +1 -0
  84. data/public/js/webshims/shims/form-native-extend.js +1 -0
  85. data/public/js/webshims/shims/form-number-date-api.js +1 -0
  86. data/public/js/webshims/shims/form-number-date-ui.js +1 -0
  87. data/public/js/webshims/shims/form-shim-extend.js +1 -0
  88. data/public/js/webshims/shims/form-shim-extend2.js +1 -0
  89. data/public/js/webshims/shims/form-validation.js +1 -0
  90. data/public/js/webshims/shims/form-validators.js +1 -0
  91. data/public/js/webshims/shims/forms-picker.js +1 -0
  92. data/public/js/webshims/shims/geolocation.js +1 -0
  93. data/public/js/webshims/shims/i18n/formcfg-ar.js +1 -0
  94. data/public/js/webshims/shims/i18n/formcfg-ch-CN.js +1 -0
  95. data/public/js/webshims/shims/i18n/formcfg-cs.js +1 -0
  96. data/public/js/webshims/shims/i18n/formcfg-de.js +1 -0
  97. data/public/js/webshims/shims/i18n/formcfg-el.js +1 -0
  98. data/public/js/webshims/shims/i18n/formcfg-en.js +1 -0
  99. data/public/js/webshims/shims/i18n/formcfg-es.js +1 -0
  100. data/public/js/webshims/shims/i18n/formcfg-fa.js +1 -0
  101. data/public/js/webshims/shims/i18n/formcfg-fr.js +1 -0
  102. data/public/js/webshims/shims/i18n/formcfg-he.js +1 -0
  103. data/public/js/webshims/shims/i18n/formcfg-hi.js +1 -0
  104. data/public/js/webshims/shims/i18n/formcfg-hu.js +1 -0
  105. data/public/js/webshims/shims/i18n/formcfg-it.js +1 -0
  106. data/public/js/webshims/shims/i18n/formcfg-ja.js +1 -0
  107. data/public/js/webshims/shims/i18n/formcfg-lt.js +1 -0
  108. data/public/js/webshims/shims/i18n/formcfg-nl.js +1 -0
  109. data/public/js/webshims/shims/i18n/formcfg-pl.js +1 -0
  110. data/public/js/webshims/shims/i18n/formcfg-pt-BR.js +1 -0
  111. data/public/js/webshims/shims/i18n/formcfg-pt-PT.js +1 -0
  112. data/public/js/webshims/shims/i18n/formcfg-pt.js +1 -0
  113. data/public/js/webshims/shims/i18n/formcfg-ru.js +1 -0
  114. data/public/js/webshims/shims/i18n/formcfg-sv.js +1 -0
  115. data/public/js/webshims/shims/i18n/formcfg-zh-CN.js +1 -0
  116. data/public/js/webshims/shims/i18n/formcfg-zh-TW.js +1 -0
  117. data/public/js/webshims/shims/jme/alternate-media.js +1 -0
  118. data/public/js/webshims/shims/jme/base.js +1 -0
  119. data/public/js/webshims/shims/jme/controls.css +1 -0
  120. data/public/js/webshims/shims/jme/jme.eot +0 -0
  121. data/public/js/webshims/shims/jme/jme.svg +36 -0
  122. data/public/js/webshims/shims/jme/jme.ttf +0 -0
  123. data/public/js/webshims/shims/jme/jme.woff +0 -0
  124. data/public/js/webshims/shims/jme/mediacontrols-lazy.js +1 -0
  125. data/public/js/webshims/shims/jme/mediacontrols.js +1 -0
  126. data/public/js/webshims/shims/jme/playlist.js +1 -0
  127. data/public/js/webshims/shims/jpicker/images/AlphaBar.png +0 -0
  128. data/public/js/webshims/shims/jpicker/images/Bars.png +0 -0
  129. data/public/js/webshims/shims/jpicker/images/Maps.png +0 -0
  130. data/public/js/webshims/shims/jpicker/images/NoColor.png +0 -0
  131. data/public/js/webshims/shims/jpicker/images/bar-opacity.png +0 -0
  132. data/public/js/webshims/shims/jpicker/images/map-opacity.png +0 -0
  133. data/public/js/webshims/shims/jpicker/images/mappoint.gif +0 -0
  134. data/public/js/webshims/shims/jpicker/images/picker.gif +0 -0
  135. data/public/js/webshims/shims/jpicker/images/preview-opacity.png +0 -0
  136. data/public/js/webshims/shims/jpicker/images/rangearrows.gif +0 -0
  137. data/public/js/webshims/shims/jpicker/jpicker.css +1 -0
  138. data/public/js/webshims/shims/matchMedia.js +3 -0
  139. data/public/js/webshims/shims/mediacapture-picker.js +1 -0
  140. data/public/js/webshims/shims/mediacapture.js +1 -0
  141. data/public/js/webshims/shims/mediaelement-core.js +1 -0
  142. data/public/js/webshims/shims/mediaelement-debug.js +1 -0
  143. data/public/js/webshims/shims/mediaelement-jaris.js +1 -0
  144. data/public/js/webshims/shims/mediaelement-native-fix.js +1 -0
  145. data/public/js/webshims/shims/mediaelement-yt.js +1 -0
  146. data/public/js/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
  147. data/public/js/webshims/shims/moxie/flash/Moxie.min.swf +0 -0
  148. data/public/js/webshims/shims/moxie/js/moxie-html4.js +3 -0
  149. data/public/js/webshims/shims/moxie/js/moxie-swf.js +2 -0
  150. data/public/js/webshims/shims/picture.js +1 -0
  151. data/public/js/webshims/shims/plugins/jquery.ui.position.js +11 -0
  152. data/public/js/webshims/shims/range-ui.js +1 -0
  153. data/public/js/webshims/shims/sizzle.js +11 -0
  154. data/public/js/webshims/shims/sticky.js +1 -0
  155. data/public/js/webshims/shims/styles/color-picker.png +0 -0
  156. data/public/js/webshims/shims/styles/forms-ext.css +1 -0
  157. data/public/js/webshims/shims/styles/forms-picker.css +1 -0
  158. data/public/js/webshims/shims/styles/progress.gif +0 -0
  159. data/public/js/webshims/shims/styles/progress.png +0 -0
  160. data/public/js/webshims/shims/styles/shim-ext.css +1 -0
  161. data/public/js/webshims/shims/styles/shim.css +1 -0
  162. data/public/js/webshims/shims/styles/transparent.png +0 -0
  163. data/public/js/webshims/shims/styles/widget.eot +0 -0
  164. data/public/js/webshims/shims/styles/widget.svg +12 -0
  165. data/public/js/webshims/shims/styles/widget.ttf +0 -0
  166. data/public/js/webshims/shims/styles/widget.woff +0 -0
  167. data/public/js/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  168. data/public/js/webshims/shims/swfmini-embed.js +1 -0
  169. data/public/js/webshims/shims/swfmini.js +6 -0
  170. data/public/js/webshims/shims/track-ui.js +1 -0
  171. data/public/js/webshims/shims/track.js +1 -0
  172. data/public/js/webshims/shims/url.js +1 -0
  173. data/public/js/webshims/shims/usermedia-core.js +1 -0
  174. data/public/js/webshims/shims/usermedia-shim.js +1 -0
  175. data/sequenceserver.gemspec +16 -13
  176. data/views/400.erb +28 -0
  177. data/views/500.erb +35 -19
  178. data/views/_options.erb +6 -15
  179. data/views/result.erb +218 -0
  180. data/views/search.erb +354 -151
  181. metadata +254 -62
  182. data/example.config.yml +0 -39
  183. data/lib/sequenceserver/customisation.rb +0 -60
  184. data/lib/sequenceserver/database_formatter.rb +0 -190
  185. data/lib/sequenceserver/helpers.rb +0 -136
  186. data/lib/sequenceserver/sequencehelpers.rb +0 -93
  187. data/lib/sequenceserver/sinatralikeloggerformatter.rb +0 -12
  188. data/lib/sequenceserver/version.rb +0 -9
  189. data/public/css/beige.css.css +0 -254
  190. data/public/css/bootstrap.dropdown.css +0 -29
  191. data/public/css/bootstrap.icons.css +0 -155
  192. data/public/css/bootstrap.modal.css +0 -28
  193. data/public/js/bootstrap.dropdown.js +0 -92
  194. data/public/js/bootstrap.modal.js +0 -7
  195. data/public/js/bootstrap.transition.js +0 -7
  196. data/public/js/jquery-scrollspy.js +0 -98
  197. data/public/js/jquery.activity.js +0 -10
  198. data/public/js/jquery.enablePlaceholder.min.js +0 -10
  199. data/public/js/store.min.js +0 -2
  200. data/public/sequence.html +0 -28
  201. data/tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta +0 -5486
  202. data/tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta.nhr +0 -0
  203. data/tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta.nin +0 -0
  204. data/tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta.nsq +0 -0
  205. data/tests/database/protein/Sinvicta2-2-3.prot.subset.fasta +0 -6449
  206. data/tests/database/protein/Sinvicta2-2-3.prot.subset.fasta.phr +0 -0
  207. data/tests/database/protein/Sinvicta2-2-3.prot.subset.fasta.pin +0 -0
  208. data/tests/database/protein/Sinvicta2-2-3.prot.subset.fasta.psq +0 -0
  209. data/tests/run +0 -26
  210. data/tests/test_sequencehelpers.rb +0 -77
  211. data/tests/test_sequenceserver_blast.rb +0 -60
  212. data/tests/test_ui.rb +0 -104
  213. data/tests/ui.specs.todo +0 -10
data/tests/run DELETED
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Usage:
3
- #
4
- # run all test suites
5
- #
6
- # $ tests/run
7
- #
8
- # run a particular test suite
9
- #
10
- # $ tests/run tests/test_sequencehelpers.rb
11
- #
12
-
13
- # script dir
14
- dir = File.dirname(__FILE__)
15
-
16
- # setup load path
17
- require 'rubygems'
18
- $LOAD_PATH.unshift(File.join(dir, '..', 'lib'))
19
-
20
- # user specified or glob all?
21
- files = ARGV.empty? ? Dir[File.join(dir, 'test_*.rb')] : ARGV
22
-
23
- # run!
24
- files.each do |file|
25
- require File.expand_path(file)
26
- end
@@ -1,77 +0,0 @@
1
- require 'sequenceserver'
2
- require 'sequenceserver/sequencehelpers'
3
- require 'test/unit'
4
-
5
- class Tester < Test::Unit::TestCase
6
- include SequenceServer::SequenceHelpers
7
- def test_guess_sequence_type_nucleotide
8
- #must 'correctly detect nucleotide sequence, even when it includes crap' do
9
- ['AAAAAAAAAAAAAAAAAAAAAT',
10
- ' CAGATGCRRCAAAGCAAACGGCAA 34523453 652352',
11
- 'ACCNNNNNNXXXXCAUUUUUU',
12
- "ACGT\n\t\t\nACCACGGACCACGAAAGCG" ].each do |seq|
13
- assert_equal(:nucleotide, guess_sequence_type(seq), message="for #{seq}")
14
- end
15
- end
16
-
17
- def test_guess_sequence_type_aminoacid
18
- #must 'correctly detect aminoacid sequence, even when it includes a lot of crap' do
19
- ['ADSACGHKSJLFCVMGTL',
20
- ' 345 KSSYPHYSPPPPHS 345 23453 652352',
21
- 'GEYSNLNNNNNNXXXXSSSSSSSSSSSSSSSSSSSSSSS',
22
- "EE\n\t\t\n \t\t\EEQRRQQSARTSRRQR" ].each do |seq|
23
- assert_equal(:protein, guess_sequence_type(seq) , message="for #{seq}")
24
- end
25
- end
26
-
27
- def test_guess_sequence_type_impossible
28
- assert_equal(nil, guess_sequence_type('ACSFGT'), message='too little sequence')
29
- end
30
-
31
- ## Tests for type_of_sequences (multi-fasta kind of thing the user would enter)
32
- def test_type_of_sequences
33
- aa_multifasta = ">SDFDSF\nACGTGSDLKJGNLDKSJFLSDKJFLSDKOIU\n>asdfas\nasfasdfffffffffffffffffffff\n>alksjflkasdj slakdjf\nasdfasdfasdfljaslkdjf"
34
- aa_multifasta_including_short_seq_missing_lead = "ACGTGSDLKJGNLDKSJFLSDKJFLSDKOIU\n>asdfas\nasf\n>alksjflkasdj slakdjf\nasdfasdfasdfljaslkdjf"
35
- aa_singlesequence = "ACGTGSDLKJGNLDKSJFLSDKJFLSDKOIU\n"
36
- nt_multifasta = ">asdf\nAAAAAAAAAAAAAAAAAAAAT\n>sfaslkj\nCAGATGCRRCAAAGCAAACGGCAA\n>asssssjlkj\nACCCANNNNNNXXXXCAUUUUUU"
37
- aa_nt_mix = ">alksjflkasdj slakdjf\nasdfasdfasdfljaslkdjf\n>ffffffassdf\nACGCNAGTGCCCCCCCCGANATGGGTGGTTXXXXXGGTG"
38
-
39
- assert_equal(:protein, type_of_sequences(aa_multifasta), 'aa_multifasta')
40
- assert_equal(:protein, type_of_sequences(aa_multifasta_including_short_seq_missing_lead ), 'aa_multifasta_short_seq_and_no_>')
41
- assert_equal(:protein, type_of_sequences(aa_singlesequence), 'single AA sequence')
42
- assert_equal(:nucleotide, type_of_sequences(nt_multifasta), 'nt_multifasta')
43
- assert_raise(ArgumentError, 'mixed aa and nt should raise') { type_of_sequences(aa_nt_mix) }
44
- end
45
-
46
- def test_composition
47
- expected_comp = {"a"=>2, "d"=>3, "f"=>7, "s"=>3, "A"=>1}
48
- assert_equal(expected_comp, composition('asdfasdfffffAsdf'))
49
- end
50
-
51
- def test_construct_standard_sequence_hyperlink
52
- assert_equal "/get_sequence/?id=one&db=abc def", construct_standard_sequence_hyperlink({:sequence_id => 'one', :databases => %w(abc def)})
53
- assert_equal nil, construct_standard_sequence_hyperlink({:sequence_id => ' one', :databases => %w(abc def)})
54
- assert_equal "/get_sequence/?id=MAL13P1.218&db=abc def", construct_standard_sequence_hyperlink({:sequence_id => 'lcl|MAL13P1.218', :databases => %w(abc def)})
55
- end
56
- end
57
-
58
- class AppTester < Test::Unit::TestCase
59
- def test_process_advanced_blast_options
60
- app = SequenceServer::App.new!
61
-
62
- assert_nothing_raised {app.validate_advanced_parameters('')}
63
- assert_nothing_raised {app.validate_advanced_parameters('-word_size 5')}
64
- assert_raise(ArgumentError, 'security advanced option parser'){app.validate_advanced_parameters('-word_size 5; rm -rf /')}
65
- assert_raise(ArgumentError, 'conflicting advanced option'){app.validate_advanced_parameters('-db roar')}
66
- end
67
- end
68
-
69
- class SystemHelpersTester < Test::Unit::TestCase
70
- include SequenceServer::Helpers::SystemHelpers
71
-
72
- def test_multipart_database_name?
73
- assert_equal true, multipart_database_name?('/home/ben/pd.ben/sequenceserver/db/nr.00')
74
- assert_equal false, multipart_database_name?('/home/ben/pd.ben/sequenceserver/db/nr')
75
- assert_equal true, multipart_database_name?('/home/ben/pd.ben/sequenceserver/db/img3.5.finished.faa.01')
76
- end
77
- end
@@ -1,60 +0,0 @@
1
- require 'sequenceserver'
2
- require 'minitest/spec'
3
- require 'minitest/autorun'
4
- require 'rack/test'
5
-
6
- ENV['RACK_ENV'] = 'test'
7
-
8
- module SequenceServer
9
- describe "App" do
10
- include Rack::Test::Methods
11
-
12
- def app
13
- App
14
- end
15
-
16
- def setup
17
- @params = {'method' => 'blastn', 'sequence' => 'AGCTAGCTAGCT', 'databases' => ['123']}
18
- end
19
-
20
- it 'returns Bad Request (400) if no blast method is provided' do
21
- @params.delete('method')
22
- post '/', @params
23
- last_response.status.must_equal 400
24
- end
25
-
26
- it 'returns Bad Request (400) if no input sequence is provided' do
27
- @params.delete('sequence')
28
- post '/', @params
29
- last_response.status.must_equal 400
30
- end
31
-
32
- it 'returns Bad Request (400) if no database id is provided' do
33
- @params.delete('databases')
34
- post '/', @params
35
- last_response.status.must_equal 400
36
- end
37
-
38
- it 'returns Bad Request (400) if an empty database list is provided' do
39
- @params['databases'].pop
40
-
41
- # ensure the list of databases is empty
42
- @params['databases'].length.must_equal 0
43
-
44
- post '/', @params
45
- last_response.status.must_equal 400
46
- end
47
-
48
- it 'returns Bad Request (400) if an incorrect blast method is supplied' do
49
- @params['method'] = 'foo'
50
- post '/', @params
51
- last_response.status.must_equal 400
52
- end
53
-
54
- it 'returns Bad Request (400) if incorrect advanced params are supplied' do
55
- @params['advanced'] = '-word_size 5; rm -rf /'
56
- post '/', @params
57
- last_response.status.must_equal 400
58
- end
59
- end
60
- end
data/tests/test_ui.rb DELETED
@@ -1,104 +0,0 @@
1
- require 'rspec'
2
- require 'watir-webdriver'
3
- require 'headless'
4
-
5
- # These shared examples should work for
6
- shared_examples_for 'a browser' do
7
- let(:seqserv_url){'http://localhost:4567'}
8
-
9
- it 'should simply go the seqserv webpage' do
10
- b.goto seqserv_url
11
- b.url.gsub(/\/$/,'').should eq(seqserv_url)
12
- b.ready_state.should eq('complete')
13
- end
14
-
15
- it 'should do a simple blastp' do
16
- b.goto seqserv_url
17
-
18
- # Nucleotide database should be available
19
- b.checkbox(:value => 'ed4250adc44601256f6bbbd4ab5cc80c').enabled?.should eq(true)
20
-
21
- # First up the blast button should be disabled
22
- b.button(:id => 'method').text.should eq('BLAST')
23
- b.button(:id => 'method').enabled?.should eq(false)
24
-
25
- # Pick a protein blast database
26
- b.checkbox(:value => 'b9a05001b93ca2587b447dacb9906f2a').set
27
- b.checkbox(:value => 'b9a05001b93ca2587b447dacb9906f2a').checked?.should eq(true)
28
-
29
- # nuc dbs now disabled
30
- b.checkbox(:value => 'ed4250adc44601256f6bbbd4ab5cc80c').enabled?.should eq(false)
31
-
32
- # The blast button should still be disabled
33
- b.button(:id => 'method').text.should eq('BLAST')
34
- b.button(:id => 'method').enabled?.should eq(false)
35
-
36
- # Give a sequence we know should hit
37
- b.textarea(:name => 'sequence').set 'YTLPPPPTKLYSAPISCRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLA'
38
-
39
- #blast butn now active
40
- b.button(:id => 'method').text.should eq('BLASTP')
41
- b.button(:id => 'method').enabled?.should eq(true)
42
-
43
- # Run the blast
44
- b.button(:id => 'method').click
45
-
46
- while b.div(:id => 'result').text.include?('Waiting for BLAST to be run')
47
- end
48
-
49
- # blast should have worked
50
- b.div(:id => 'result').text.include?('FASTA of 11 retrievable').should eq(true)
51
- end
52
- end
53
-
54
- #####################################################################################
55
- #+++++++++++ Below is admin code, hopefully not necessary to mess around with to test new UI specs
56
-
57
- # NOT thread-safe, at least because of the interaction with headless
58
- class BrowserAdmin
59
- def self.setup_browser(type)
60
- case type
61
- when :firefox then
62
- Watir::Browser.new :firefox
63
- when :chrome then
64
- Watir::Browser.new :chrome
65
- when :headless_firefox then
66
- @headless = Headless.new
67
- @headless.start
68
- Watir::Browser.new :firefox
69
- when :headless_chrome then
70
- @headless = Headless.new
71
- @headless.start
72
- Watir::Browser.new :chrome
73
- else
74
- raise "Unknown browser type asked for: #{type.inspect}"
75
- end
76
- end
77
-
78
- def self.teardown_browser(browser)
79
- browser.close
80
-
81
- # Re-head again, but maybe this makes no difference
82
- @headless.destroy unless @headless.nil?
83
- @headless = nil
84
- end
85
- end
86
-
87
-
88
- describe 'ui' do
89
- [:firefox, :chrome, :headless_firefox, :headless_chrome].each do |bro|
90
- context bro.to_s do
91
- it_behaves_like 'a browser' do
92
- browser = nil
93
- before do
94
- browser = BrowserAdmin.setup_browser bro
95
- end
96
- after do
97
- BrowserAdmin.teardown_browser browser
98
- end
99
- let(:b){browser}
100
- end
101
- end
102
- end
103
- end
104
-
data/tests/ui.specs.todo DELETED
@@ -1,10 +0,0 @@
1
- it "should automatically focus sequence input box" do
2
- # when the page loads, check that sequence input box is focussed
3
- #
4
- # NOTE: unless #75 is resolved, make sure to test this functionality only if
5
- # HTML5 autofocus attribute is supported
6
- end
7
-
8
- it "should ensure spell checking is disabled for sequence input box" do
9
- # NOTE: only if the browser supports it
10
- end