Given /^there is a message for me$/ do
  @message = FactoryGirl.create :message, user_ids_to_show: [@user.id]
end

Given /^there is a message for me with:$/ do |options|
  attributes = options.rows_hash
  attributes.merge! user_ids_to_show: [@user.id]
  if old_message = Message.find(attributes['id'])
    old_message.destroy
  end
  @message = FactoryGirl.create :message, attributes
end

Given(/^that message is marked as read$/) do
    @message.mark_as_read_by(@user)
    @message.save
end

Then /^the response should (not)?\s?include that message$/ do |negative|
  json = JSON.parse(last_response.body)
  message = json.detect{|message| message['id'] == @message.id}
  if negative.present?
    assert !message
  else
    assert_equal @message.text, message['text']
  end
end

Then /^that message should be marked as read$/ do
  assert @message.reload.read_by? @user
  assert !@message.unread_by?(@user)
end