STATUS_EXPECTED_TRANSLATIONS = [ [inp1, outp1], ... ]

      it "should translate received statuses" do
        STATUS_EXPECTED_TRANSLATIONS.each do |tr|
          controller.send('translate_status_to_envelope_status', tr[0]).should == tr[1]
        end
      end

While this is short and DRY, a problem arises when one of the values in my look-up table does not behave as expected anymore. The complete test will fail, without having any clue which value caused it to fail. That is not good!

But luckily, in rspec there exists the option to use macros. It is a kind of templates for tests.
Using macros i could write this much cleaner, and generate my test-clauses on the fly.

      STATUS_EXPECTED_TRANSLATIONS.each  do |tr|
        it "should translate #tr[0]} to success" do
          controller.send('translate_status_to_envelope_status', tr[0]).should == tr[1]
        end
      end

Now if a test fails, i know which i value need to check, because i will get an appropriate error-message.