<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -612,15 +612,20 @@ module Shoulda # :nodoc:
       #
       #   should_have_indices :email, :name, [:commentable_type, :commentable_id]
       #   should_have_index :age
+      #   should_have_index :ssn, :unique =&gt; true
       #
       def should_have_indices(*columns)
+        unique = get_options!(columns, :unique) == true
         table = model_class.table_name
-        indices = ::ActiveRecord::Base.connection.indexes(table).map(&amp;:columns)
+        indices = ::ActiveRecord::Base.connection.indexes(table)
 
         columns.each do |column|
-          should &quot;have index on #{table} for #{column.inspect}&quot; do
+          expected_uniqueness = unique ? 'unique' : 'non-unique'
+          should &quot;have #{expected_uniqueness} index on #{table} for #{column.inspect}&quot; do
             columns = [column].flatten.map(&amp;:to_s)
-            assert_contains(indices, columns)
+            index = indices.detect {|ind| ind.columns == columns }
+            assert index, &quot;#{table} does not have an index for #{column.inspect}&quot;
+            assert_equal index.unique, unique, &quot;Expected #{expected_uniqueness} index but was #{unique ? 'non-unique' : 'unique'}.&quot;
           end
         end
       end</diff>
      <filename>lib/shoulda/active_record/macros.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ class CreateUsers &lt; ActiveRecord::Migration
     add_index :users, :email
     add_index :users, :name
     add_index :users, :age
-    add_index :users, [:email, :name]
+    add_index :users, [:email, :name], :unique =&gt; true
   end
 
   def self.down</diff>
      <filename>test/rails_root/db/migrate/001_create_users.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,8 @@ class UserTest &lt; Test::Unit::TestCase
   should_have_one :address
   should_have_one :address, :dependent =&gt; :destroy
 
-  should_have_indices :email, :name, [:email, :name]
+  should_have_indices :email, :name
+  should_have_index [:email, :name], :unique =&gt; true
   should_have_index :age
 
   should_have_named_scope :old,       :conditions =&gt; &quot;age &gt; 50&quot;</diff>
      <filename>test/unit/user_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>18229ed735ca64e20cf510b2cf23c8d113a36b39</id>
    </parent>
  </parents>
  <author>
    <name>Lawrence Pit</name>
    <login>lawrencepit</login>
    <email>lawrence.pit@gmail.com</email>
  </author>
  <url>http://github.com/thoughtbot/shoulda/commit/7ba69b344ead4dff1e98c598570a49d2dbc3cf7b</url>
  <id>7ba69b344ead4dff1e98c598570a49d2dbc3cf7b</id>
  <committed-date>2009-01-09T19:33:46-08:00</committed-date>
  <authored-date>2009-01-09T18:13:58-08:00</authored-date>
  <message>Added check for uniqueness to should_have_indices [#129]</message>
  <tree>2e4ef8329f5dded5cfb1eef08be1dcfbb063f106</tree>
  <committer>
    <name>Ryan McGeary</name>
    <login>rmm5t</login>
    <email>ryanongit@mcgeary.org</email>
  </committer>
</commit>
