2015-05-17 3 views
1

У нас есть тесты модели Griddler, отлично работающие. например мы можем создать экземпляр lib/email_processor.rb, и он обрабатывает. Мы хотим создать контрольный тест, который отправляет сообщение конца в конец стандартного/email_процессора.Невозможно смоделировать Rails 4 Тест-драйв Griddler gem для почтового процессора (проблема с post params)

Проблема в том, что параметры не проходят через сообщение. наш основной код:

@postattr= {to: "[email protected]", subject: "a subject", attachments: [ 
     ActionDispatch::Http::UploadedFile.new({ 
     filename: 'example_virgin_onetransaction.pdf', 
     type: 'application/pdf', 
     tempfile: File.new('testfiles/examplefile.pdf")}) 
    ]} 
    post :create, @postattr 
    expect(response).to be_success 

он работает как вывешивает на правильный маршрут и получает обрабатываются за исключением того, email.attachments объекта равна нулю.

мы пытались

  • @ postattr.to_json # дает неверную последовательность байт в кодировке UTF-8
  • @ postattr.to_s.to_json # работ, но не PARAMS не прошел через
  • URI кодирующим json string

ничего похожего не обработано правильно. что мы пропустили?

ответ

0

Правильно кажется, что форматирование параметров электронной почты не так очевидно. от и до адреса являются фактически списками.

@post_attr = {Subject: "a subject", TextBody: "Hello!", 
       ToFull: [{Email: '[email protected]', Name: 'to email'}], 
       FromFull: {Email: "[email protected]", Name: "from email"}, 
       Attachments: [{Name: 'filename.pdf', 
           Content: Base64.encode64(fixture_file.read), 
           ContentType: 'application/pdf', 
           ContentLength: fixture_file.size 
           }]} 

надеюсь, что это помогает кто-то

1

Ваш Params кажется правильным для использования только Griddler. Но неправильно, когда вы используете грид-штемпель. Адаптер Griddle Postmark принимает параметры, такие как ваш ответ, а затем параметры перед обработкой griddler-postmark для griddler. Правильный формат для передачи Params для входящих сообщений электронной почты в рельсах приложении выглядит следующим образом с Griddler-штемпелем

attributes = {Subject: "a subject", TextBody: "Hello!", 
      ToFull: [{Email: '[email protected]', Name: 'to email'}], 
      FromFull: {Email: "[email protected]", Name: "from email"}, 
      Attachments: [{Name: 'filename.pdf', 
          Content: Base64.encode64(fixture_file.read), 
          ContentType: 'application/pdf', 
          ContentLength: fixture_file.size 
          }]} 

post :create, attributes 

Вы можете принести проблемы с обработкой входящей электронной почты с приложением. Таким образом, я добавляю услышать пример EmailProcessor класс следующим образом

class EmailProcessor 

    def initialize(email) 
     @email = email 
    end 

    def process 
    if @email.attachments.present? 
     attachment = @email.attachments.first 
     file = File.new(attachment.original_filename, 'wb') 
     file.write attachment.read 
     file.flush 
     attached_document = AttachedDocument.new(paper: file) 
     attached_document.save! 
    end 
    end 
end 

Желание это поможет :)

 Смежные вопросы

  • Нет связанных вопросов^_^