aboutsummaryrefslogtreecommitdiff
path: root/spec/lib/message_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/message_spec.rb')
-rw-r--r--spec/lib/message_spec.rb46
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