spec/signore/database_spec.rb in signore-0.0.0 vs spec/signore/database_spec.rb in signore-0.1.0
- old
+ new
@@ -2,91 +2,58 @@
require_relative '../spec_helper'
module Signore describe Database do
- before do
- @path = "#{Dir.tmpdir}/#{rand}/signatures.yml"
- end
+ describe '#find' do
- after do
- FileUtils.rmtree File.dirname @path
- end
-
- describe '.db' do
-
- it 'returns the signature database loaded by .load' do
- Database.load @path
- Database.db.must_equal []
- end
-
- end
-
- describe '.find' do
-
before do
srand
- Database.load 'spec/fixtures/signatures.yml'
+ @db = Database.new 'spec/fixtures/signatures.yml'
end
it 'returns a random signature by default' do
srand 1981
- Database.find.text.must_equal 'Amateur fighter pilot ignores orders, listens to the voices in his head and slaughters thousands.'
+ @db.find.text.must_equal 'Amateur fighter pilot ignores orders, listens to the voices in his head and slaughters thousands.'
srand 1979
- Database.find.text.must_equal 'stay-at-home executives vs. wallstreet dads'
+ @db.find.text.must_equal 'stay-at-home executives vs. wallstreet dads'
end
it 'returns a random signature if the tags are empty' do
srand 2009
- Database.find(tags: []).text.must_equal '// sometimes I believe compiler ignores all my comments'
+ @db.find(tags: []).text.must_equal '// sometimes I believe compiler ignores all my comments'
end
it 'returns a random signature based on provided tags' do
- Database.find(tags: ['programming']).text.must_equal '// sometimes I believe compiler ignores all my comments'
- Database.find(tags: ['work']).text.must_equal 'You do have to be mad to work here, but it doesn’t help.'
+ @db.find(tags: ['programming']).text.must_equal '// sometimes I believe compiler ignores all my comments'
+ @db.find(tags: ['work']).text.must_equal 'You do have to be mad to work here, but it doesn’t help.'
end
it 'returns a random signature based on required and forbidden tags' do
- Database.find(tags: ['tech'], no_tags: ['programming', 'security']).text.must_equal 'You do have to be mad to work here, but it doesn’t help.'
+ @db.find(tags: ['tech'], no_tags: ['programming', 'security']).text.must_equal 'You do have to be mad to work here, but it doesn’t help.'
end
end
- describe '.load' do
+ describe '#save' do
- it 'creates an empty signature database if it does not exist, but does not save it' do
- refute Pathname(@path).exist?
- Database.load @path
- Database.db.must_equal []
- refute Pathname(@path).exist?
- end
-
- end
-
- describe '.save' do
-
it 'saves the provided signature to disk' do
- Database.load @path
- sig = Signature.new 'Normaliser Unix c’est comme pasteuriser le camembert.'
- Database.save sig
- File.read(@path).must_equal "---\n- !ruby/struct:Signore::Signature\n text: Normaliser Unix c’est comme pasteuriser le camembert.\n"
- end
+ file = Tempfile.new ''
+ db = Database.new file.path
+ sig = Signature.new 'Normaliser Unix c’est comme pasteuriser le camembert.'
- end
+ db << sig
- describe '.min_yaml' do
-
- it 'returns the minimal YAML representation of the signature database' do
- Database.load 'spec/fixtures/min_yaml.yml'
- Database.min_yaml.must_equal File.read('spec/fixtures/min_yaml.yml')
- end
-
- it 'escapes initial spaces in multi-line signatures' do
- tng = " ← space\nthe final\nfrontier"
- Database.load @path
- Database.save Signature.new tng
- Database.load @path
- Database.find.display.must_equal tng
+ file.read.must_equal <<-END.dedent
+ ---
+ signatures:
+ - !ruby/struct:Signore::Signature
+ text: Normaliser Unix c’est comme pasteuriser le camembert.
+ author: !!null
+ source: !!null
+ subject: !!null
+ tags: !!null
+ END
end
end
end end