@@ -27,8 +27,53 @@ module SequenceServer
2727 Database [ id ] . first
2828 end
2929
30- it 'knows if a given accession is in the database or not' do
31- solenopsis_protein_database . include? ( 'SI2.2.0_06267' ) . should be_truthy
30+ describe '#include?' do
31+ it 'knows if a given accession is present in the database' do
32+ expect ( solenopsis_protein_database ) . to include ( 'SI2.2.0_06267' )
33+ end
34+
35+ it 'knows if a given accession is absent in the database' do
36+ expect ( solenopsis_protein_database ) . not_to include ( 'LOL.2.0_404' )
37+ end
38+
39+ it 'validates the id' do
40+ expect do
41+ solenopsis_protein_database . include? ( "';hi" )
42+ end . to raise_error ( ArgumentError , "Invalid sequence id: ';hi" )
43+ end
44+ end
45+
46+ describe '.retrieve' do
47+ it "retrieves the sequence for a given accession" do
48+ sequence = Database . retrieve ( "SI2.2.0_06267" )
49+ expect ( sequence ) . to include ( 'SI2.2.0_06267' )
50+ expect ( sequence ) . to include ( 'MNTLWLSLWDYPGKL' ) # start of fasta sequence
51+ end
52+
53+ it "retrieves an open sequence range for a given accession" do
54+ sequence = Database . retrieve ( "SI2.2.0_06267:10-" )
55+ expect ( sequence ) . to include ( 'SI2.2.0_06267' )
56+ expect ( sequence ) . not_to include ( 'MNTLWLSLWD' ) # excludes first 10 chars
57+ expect ( sequence . lines [ 1 ] ) . to start_with ( 'DYPGKLP' ) # start at an offset of 10
58+ end
59+
60+ it "retrieves a closed sequence range for a given accession" do
61+ sequence = Database . retrieve ( "SI2.2.0_06267:1-10" )
62+ expect ( sequence ) . to include ( 'SI2.2.0_06267' )
63+ expect ( sequence . lines . last . size ) . to eq ( 10 )
64+ end
65+
66+ it "validates the sequence id" do
67+ expect do
68+ Database . retrieve ( "';hi" )
69+ end . to raise_error ( SequenceServer ::InvalidSequenceIdError )
70+ end
71+
72+ it "validates the range" do
73+ expect do
74+ Database . retrieve ( "SI2.2.0_06267:';hi" )
75+ end . to raise_error ( SequenceServer ::InvalidParameterError )
76+ end
3277 end
3378 end
3479end
0 commit comments