1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- require 'rails_helper'
- require 'lib/import/import_factory_examples'
- RSpec.describe Import::OTRS::Article::AttachmentFactory do
- it_behaves_like 'Import factory'
- def load_attachment_json(file)
- json_fixture("import/otrs/article/attachment/#{file}")
- end
- let(:local_article) { instance_double(Ticket::Article, ticket_id: 1337, id: 42) }
- let(:attachments) do
- [
- load_attachment_json('default'),
- load_attachment_json('default'),
- load_attachment_json('default')
- ]
- end
- let(:start_import) do
- described_class.import(
- attachments: attachments,
- local_article: local_article
- )
- end
- def import_expectations
- expect(Store).to receive(:add).exactly(3).times.with(hash_including(
- object: 'Ticket::Article',
- o_id: local_article.id,
- ))
- end
- def article_attachment_expectations(article_attachments)
- expect(local_article).to receive(:attachments).and_return(article_attachments)
- end
- it 'imports' do
- article_attachment_expectations([])
- import_expectations
- start_import
- end
- it 'deletes old and reimports' do
- dummy_attachment = double()
- expect(dummy_attachment).to receive(:delete)
- article_attachment_expectations([dummy_attachment])
- import_expectations
- start_import
- end
- it 'skips import for same count' do
- article_attachment_expectations([1, 2, 3])
- expect(Store).not_to receive(:add)
- start_import
- end
- end
|