diff options
Diffstat (limited to 'spec/lib/message_spec.rb')
-rw-r--r-- | spec/lib/message_spec.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/lib/message_spec.rb b/spec/lib/message_spec.rb new file mode 100644 index 0000000..2605117 --- /dev/null +++ b/spec/lib/message_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'rspec' +require_relative '../../lib/chotto/message' +require_relative '../../lib/chotto/helpers' + +RSpec.describe Chotto::Message do + let(:tags) { [] } + let(:msg) { double('Notmuch::Message', tags: tags) } + + let(:subject) { Chotto::Message.new(msg: msg) } + + it 'reads headers' do + expect(msg).to receive(:header).with('A-Header') + + subject.a_header + end + + describe 'tags' do + it 'keeps tags state in memory' do + subject.tags << 'tag' + expect(subject.tags).to match ['tag'] + + subject.tags << 'tag2' + expect(subject.tags).to match %w[tag tag2] + end + + it 'allows to overwritte entire tags array' do + subject.tags = [1, 2, 3, 4] + expect(subject.tags).to match [1, 2, 3, 4] + end + end + + describe 'save!' do + let(:tags) { [1, 2, 3] } + it 'saves current tag array to db' do + expect(msg).to receive(:remove_all_tags) + tags.each do |tag| + expect(msg).to receive(:add_tag).with(tag.to_s) + end + + subject.tags = tags + subject.save! + end + end +end |