sequenceserver 0.8.9 → 1.0.0.pre.1

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 (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