scaffolder-test-helpers 0.1.0 → 0.2.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.
data/Rakefile CHANGED
@@ -21,8 +21,8 @@ Jeweler::Tasks.new do |gem|
21
21
  gem.name = "scaffolder-test-helpers"
22
22
  gem.homepage = "http://github.com/michaelbarton/scaffolder-test-helpers"
23
23
  gem.license = "MIT"
24
- gem.summary = %Q{Common methods for testing scaffolder.}
25
- gem.description = %Q{Helper methods and cucumber steps for testing scaffolder.}
24
+ gem.summary = %Q{Methods and classes for testing scaffolder.}
25
+ gem.description = %Q{Useful Helper methods and classes for testing scaffolder.}
26
26
  gem.email = "mail@michaelbarton.me.uk"
27
27
  gem.authors = ["Michael Barton"]
28
28
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -2,36 +2,32 @@ require 'tempfile'
2
2
  require 'bio'
3
3
  require 'scaffolder'
4
4
 
5
+ require 'scaffolder/test/sequence'
6
+ require 'scaffolder/test/unresolved'
7
+
5
8
  module Scaffolder::Test
6
9
  module Helpers
7
10
 
8
- def write_sequence_file(entries,file = Tempfile.new("sequence").path)
9
- File.open(file,'w') do |tmp|
10
- make_sequence(entries).each do |entry|
11
- seq = Bio::Sequence.new(entry[:sequence])
12
- tmp.print(seq.output(:fasta,:header => entry[:name]))
13
- end
14
- end
15
- file
11
+ def generate_scaffold_files(entries)
12
+ [write_scaffold_file(entries),write_sequence_file(entries)]
16
13
  end
17
14
 
18
15
  def write_scaffold_file(entries,file = Tempfile.new("scaffold").path)
19
- File.open(file,'w'){|tmp| tmp.print(YAML.dump(make_scaffold(entries)))}
16
+ File.open(file,'w') do |tmp|
17
+ tmp.print(YAML.dump(entries.map{|e| e.to_hash }))
18
+ end
20
19
  file
21
20
  end
22
21
 
23
- def make_scaffold(entries)
24
- entries.map do |entry|
25
- {'sequence' => {'source' => (entry['name'] || entry[:name]) }}
22
+ def write_sequence_file(entries,file = Tempfile.new("sequence").path)
23
+ File.open(file,'w') do |tmp|
24
+ entries.each do |entry|
25
+ tmp.puts(entry.to_fasta) if entry.respond_to? :to_fasta
26
+ end
26
27
  end
28
+ file
27
29
  end
28
30
 
29
- def make_sequence(entries)
30
- entries.map do |entry|
31
- {:name => (entry['name'] || entry[:name]),
32
- :sequence => (entry['nucleotides'] || entry[:nucleotides]) }
33
- end.flatten
34
- end
35
31
 
36
32
  end
37
33
  end
@@ -0,0 +1,33 @@
1
+ require 'scaffolder'
2
+
3
+ module Scaffolder::Test
4
+ class Sequence
5
+
6
+ def initialize(options = {})
7
+ @options = options
8
+ end
9
+
10
+ [:name,:sequence,:reverse,:start,:stop].each do |attribute|
11
+ define_method(attribute) do |*arg|
12
+ unless arg.first
13
+ return @options[attribute]
14
+ end
15
+ @options[attribute] = arg.first
16
+ return self
17
+ end
18
+ end
19
+
20
+ def to_hash
21
+ hash = {'source' => name}
22
+ [:start,:stop,:reverse].each do |attribute|
23
+ hash[attribute.to_s] = @options[attribute] if @options[attribute]
24
+ end
25
+ {'sequence' => hash}
26
+ end
27
+
28
+ def to_fasta
29
+ Bio::Sequence.new(sequence).output(:fasta,:header => name).strip
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,17 @@
1
+ require 'scaffolder'
2
+
3
+ module Scaffolder::Test
4
+ class Unresolved
5
+
6
+ attr_reader :length
7
+
8
+ def initialize(options = {})
9
+ @length = options[:length]
10
+ end
11
+
12
+ def to_hash
13
+ {'unresolved' => {'length' => length}}
14
+ end
15
+
16
+ end
17
+ end
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{scaffolder-test-helpers}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Barton"]
12
- s.date = %q{2011-01-04}
13
- s.description = %q{Helper methods and cucumber steps for testing scaffolder.}
12
+ s.date = %q{2011-04-03}
13
+ s.description = %q{Useful Helper methods and classes for testing scaffolder.}
14
14
  s.email = %q{mail@michaelbarton.me.uk}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -18,25 +18,29 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
- ".rspec",
22
21
  "Gemfile",
23
22
  "LICENSE.txt",
24
23
  "README.rdoc",
25
24
  "Rakefile",
26
25
  "VERSION",
27
- "lib/scaffolder/test/cucumber_steps.rb",
28
26
  "lib/scaffolder/test/helpers.rb",
27
+ "lib/scaffolder/test/sequence.rb",
28
+ "lib/scaffolder/test/unresolved.rb",
29
29
  "scaffolder-test-helpers.gemspec",
30
30
  "spec/scaffolder/test/helpers_spec.rb",
31
+ "spec/scaffolder/test/sequence_spec.rb",
32
+ "spec/scaffolder/test/unresolved_spec.rb",
31
33
  "spec/spec_helper.rb"
32
34
  ]
33
35
  s.homepage = %q{http://github.com/michaelbarton/scaffolder-test-helpers}
34
36
  s.licenses = ["MIT"]
35
37
  s.require_paths = ["lib"]
36
38
  s.rubygems_version = %q{1.3.7}
37
- s.summary = %q{Common methods for testing scaffolder.}
39
+ s.summary = %q{Methods and classes for testing scaffolder.}
38
40
  s.test_files = [
39
41
  "spec/scaffolder/test/helpers_spec.rb",
42
+ "spec/scaffolder/test/sequence_spec.rb",
43
+ "spec/scaffolder/test/unresolved_spec.rb",
40
44
  "spec/spec_helper.rb"
41
45
  ]
42
46
 
@@ -1,14 +1,71 @@
1
1
  require File.join(File.dirname(__FILE__),'..','..','spec_helper')
2
2
 
3
- describe Scaffolder::Test::Helpers do
3
+ describe Scaffolder::Test::Helpers, "#generate_scaffold_files method" do
4
4
 
5
- it{ described_class.class.should == Module }
5
+ describe "pass an array with a single sequence" do
6
6
 
7
- describe "namespace loading" do
7
+ before(:all) do
8
+ entries = [Sequence.new(:name => 'c1',:sequence => 'ATG')]
9
+ @scaf_file, @seq_file = described_class.generate_scaffold_files(entries)
10
+ end
8
11
 
9
- it{ Scaffolder.class.should == Class }
10
- it{ Scaffolder.methods.should include("update_with_sequence") }
12
+ it "should create the corresponding scaffold file" do
13
+ File.exists?(@scaf_file).should be_true
14
+ scaffold = YAML.load(File.read(@scaf_file))
15
+ scaffold.should == [{'sequence' => {'source' => 'c1'}}]
16
+ end
17
+
18
+ it "should create the corresponding sequence file" do
19
+ File.exists?(@seq_file).should be_true
20
+ sequence = File.read(@seq_file)
21
+ sequence.should == ">c1\nATG\n"
22
+ end
23
+
24
+ end
25
+
26
+ describe "pass an array with two sequences" do
27
+
28
+ before(:all) do
29
+ entries = [Sequence.new(:name => 'c1',:sequence => 'ATG'),
30
+ Sequence.new(:name => 'c2',:sequence => 'ATG')]
31
+ @scaf_file, @seq_file = described_class.generate_scaffold_files(entries)
32
+ end
33
+
34
+ it "should create the corresponding scaffold file" do
35
+ File.exists?(@scaf_file).should be_true
36
+ scaffold = YAML.load(File.read(@scaf_file))
37
+ scaffold.should == [{'sequence' => {'source' => 'c1'}},
38
+ {'sequence' => {'source' => 'c2'}}]
39
+ end
40
+
41
+ it "should create the corresponding sequence file" do
42
+ File.exists?(@seq_file).should be_true
43
+ sequence = File.read(@seq_file)
44
+ sequence.should == ">c1\nATG\n>c2\nATG\n"
45
+ end
11
46
 
12
47
  end
13
48
 
49
+ describe "pass an array with a sequence and an unresolved region" do
50
+
51
+ before(:all) do
52
+ entries = [Sequence.new(:name => 'c1',:sequence => 'ATG'),
53
+ Unresolved.new(:length => 5)]
54
+ @scaf_file, @seq_file = generate_scaffold_files(entries)
55
+ end
56
+
57
+ it "should create the corresponding scaffold file" do
58
+ File.exists?(@scaf_file).should be_true
59
+ scaffold = YAML.load(File.read(@scaf_file))
60
+ scaffold.should == [{'sequence' => {'source' => 'c1'}},
61
+ {'unresolved' => {'length' => 5}}]
62
+ end
63
+
64
+ it "should create the corresponding sequence file" do
65
+ File.exists?(@seq_file).should be_true
66
+ sequence = File.read(@seq_file)
67
+ sequence.should == ">c1\nATG\n"
68
+ end
69
+
70
+ end
14
71
  end
@@ -0,0 +1,52 @@
1
+ require File.join(File.dirname(__FILE__),'..','..','spec_helper')
2
+
3
+ describe Scaffolder::Test::Sequence do
4
+
5
+ describe "basic instance" do
6
+ subject do
7
+ described_class.new(:name => 'contig1',:sequence => 'ATGCCC')
8
+ end
9
+
10
+ its(:name) {should == 'contig1'}
11
+ its(:sequence){should == 'ATGCCC'}
12
+
13
+ its(:to_fasta){should == ">contig1\nATGCCC"}
14
+ its(:to_hash) {should == {'sequence' => {'source' => 'contig1'}} }
15
+ end
16
+
17
+ [:start,:stop,:reverse].each do |attribute|
18
+
19
+ describe "instance with #{attribute} attribute" do
20
+
21
+ let(:value){:value}
22
+ subject do
23
+ described_class.new(:name => 'contig1',:sequence => 'ATGCCC',
24
+ attribute => value)
25
+ end
26
+
27
+ its(:name) {should == 'contig1'}
28
+ its(:sequence){should == 'ATGCCC'}
29
+ its(attribute){should == value}
30
+
31
+ its(:to_fasta){should == ">contig1\nATGCCC"}
32
+ its(:to_hash) do
33
+ should == {'sequence' => {'source' => 'contig1', attribute.to_s => value}}
34
+ end
35
+
36
+ end
37
+
38
+ describe "chaining instance attributes" do
39
+
40
+ let(:value){:value}
41
+ subject do
42
+ instance = described_class.new(:name => 'contig1',:sequence => 'ATGCCC')
43
+ instance.send(attribute,value)
44
+ end
45
+
46
+ its(attribute){should == value}
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__),'..','..','spec_helper')
2
+
3
+ describe Scaffolder::Test::Unresolved do
4
+
5
+ describe "basic instance" do
6
+ subject do
7
+ described_class.new(:length => 5)
8
+ end
9
+
10
+ its(:length) {should == 5}
11
+ its(:to_hash){should == {'unresolved' => {'length' => 5}} }
12
+ end
13
+
14
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,12 +1,10 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- require 'rspec'
4
3
 
4
+ require 'rspec'
5
5
  require 'scaffolder/test/helpers'
6
6
 
7
- # Requires supporting files with custom matchers and macros, etc,
8
- # in ./support/ and its subdirectories.
9
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
-
11
- RSpec.configure do |config|
7
+ RSpec.configure do
8
+ include Scaffolder::Test
9
+ include Scaffolder::Test::Helpers
12
10
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scaffolder-test-helpers
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Barton
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-04 00:00:00 -05:00
18
+ date: 2011-04-03 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -123,7 +123,7 @@ dependencies:
123
123
  name: yard
124
124
  prerelease: false
125
125
  version_requirements: *id007
126
- description: Helper methods and cucumber steps for testing scaffolder.
126
+ description: Useful Helper methods and classes for testing scaffolder.
127
127
  email: mail@michaelbarton.me.uk
128
128
  executables: []
129
129
 
@@ -134,16 +134,18 @@ extra_rdoc_files:
134
134
  - README.rdoc
135
135
  files:
136
136
  - .document
137
- - .rspec
138
137
  - Gemfile
139
138
  - LICENSE.txt
140
139
  - README.rdoc
141
140
  - Rakefile
142
141
  - VERSION
143
- - lib/scaffolder/test/cucumber_steps.rb
144
142
  - lib/scaffolder/test/helpers.rb
143
+ - lib/scaffolder/test/sequence.rb
144
+ - lib/scaffolder/test/unresolved.rb
145
145
  - scaffolder-test-helpers.gemspec
146
146
  - spec/scaffolder/test/helpers_spec.rb
147
+ - spec/scaffolder/test/sequence_spec.rb
148
+ - spec/scaffolder/test/unresolved_spec.rb
147
149
  - spec/spec_helper.rb
148
150
  has_rdoc: true
149
151
  homepage: http://github.com/michaelbarton/scaffolder-test-helpers
@@ -178,7 +180,9 @@ rubyforge_project:
178
180
  rubygems_version: 1.3.7
179
181
  signing_key:
180
182
  specification_version: 3
181
- summary: Common methods for testing scaffolder.
183
+ summary: Methods and classes for testing scaffolder.
182
184
  test_files:
183
185
  - spec/scaffolder/test/helpers_spec.rb
186
+ - spec/scaffolder/test/sequence_spec.rb
187
+ - spec/scaffolder/test/unresolved_spec.rb
184
188
  - spec/spec_helper.rb
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color
@@ -1,24 +0,0 @@
1
- require 'scaffolder/test/helpers'
2
- require 'cucumber'
3
-
4
- World(Scaffolder::Test::Helpers)
5
-
6
- Given /^the scaffold is composed of the sequences:$/ do |sequences|
7
- @entries = sequences.hashes.map do |seq|
8
- {'sequence' => {'source' => seq['name']}}
9
- end
10
- @sequences = sequences.hashes.map do |seq|
11
- {:name => seq['name'], :sequence => seq['nucleotides']}
12
- end
13
-
14
- @sequence_file = write_sequence_file(@sequences)
15
- @scaffold_file = write_scaffold_file(@entries)
16
- end
17
-
18
- Given /^the scaffold file is called "([^"]*)"$/ do |file|
19
- FileUtils.mv(@scaffold_file,file)
20
- end
21
-
22
- Given /^the sequence file is called "([^"]*)"$/ do |file|
23
- FileUtils.mv(@sequence_file,file)
24
- end