title: rspec model testing; method doesn't work
body: <p>The method itself works as expected, but when I try to test it in the model spec the create part fails. The find part works well. What did I miss?</p>
  
  <p>conversation.rb</p>
  
  <pre><code>scope :between, -&gt; (sender_id, recipient_id) do
    where("(conversations.sender_id = ? AND conversations.recipient_id = ?) OR (conversations.sender_id = ? AND conversations.recipient_id = ?)", sender_id, recipient_id, recipient_id, sender_id)
  end
  
  def self.create_or_find_conversation(task_assigner_id, task_executor_id)
    Conversation.between(task_assigner_id, task_executor_id).first_or_create do |conversation|
      conversation.sender_id = task_assigner_id
      conversation.recipient_id = task_executor_id
    end
  end
  </code></pre>
  
  <p>conversation_spec.rb</p>
  
  <pre><code>describe "class methods" do
  
    let(:sender) { create(:user) }
    let(:recipient) { create(:user) }
    let(:other_recipient) { create(:user) }
    let!(:conversation) { create(:conversation, sender: sender, recipient: recipient) }
  
    context "create_of_find_conversation" do
  
     #this one throws Failure/Error: expect{conv}.to change{Conversation.count}.by(1)
     #expected result to have changed by 1, but was changed by 0
      it "creates conversation" do
        conv = Conversation.create_or_find_conversation(sender, other_recipient)
        expect{conv}.to change{Conversation.count}.by(1)
      end
  
      #this one is working as expected
      it "finds conversation" do
        conv = Conversation.create_or_find_conversation(sender, recipient)
        expect(conv).to eq(conversation)
      end
    end
  end
  </code></pre>