OSDN Git Service

t#30124:create md5 dupulicate check
[pettanr/pettanr.git] / spec / models / picture_spec.rb
index 8166400..e37eac7 100644 (file)
@@ -530,35 +530,6 @@ describe Picture do
     end
   end
   
-  describe 'md5検索に於いて' do
-    before do
-      @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
-      @p = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 0,
-        :original_picture_id => @op.id, :md5 => 'a' * 32
-      @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
-      @op2 = FactoryGirl.create :original_picture, :artist_id => @artist.id
-      @p2 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 0,
-        :original_picture_id => @op2.id, :md5 => 'b' * 32
-      @op3 = FactoryGirl.create :original_picture, :artist_id => @artist.id
-    end
-    it 'リストを返す' do
-      res = Picture.find_by_md5(@p.md5)
-      res.is_a?(Array).should be_true
-    end
-    it 'md5が違えば含まない' do
-      res = Picture.find_by_md5(@p.md5)
-      res.include?(@p2).should be_false
-    end
-    it '更新日時順' do
-      @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
-        :original_picture_id => @op2.id, :md5 => 'C' * 32
-      @p4 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
-        :original_picture_id => @op3.id, :md5 => @p3.md5, :updated_at => Time.now + 100
-      res = Picture.find_by_md5(@p3.md5)
-      res.should eq [@p4, @p3]
-    end
-  end
-  
   describe 'md5重複リストに於いて' do
     before do
       @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
@@ -570,43 +541,63 @@ describe Picture do
         :original_picture_id => @op2.id, :md5 => 'b' * 32
       @op3 = FactoryGirl.create :original_picture, :artist_id => @artist.id
     end
-    it 'リストを返す' do
-      res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
-      res.is_a?(Array).should be_true
-    end
-    it 'md5が違えば含まない' do
-      res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
-      res.include?(@p2).should be_false
-    end
-    it '同一原画は含まない' do
-      res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
-      res.empty?.should be_true
-    end
-    it '同一原画は旧版でも含まない' do
-      @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
-        :original_picture_id => @op.id, :md5 => 'a' * 32
-      res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
-      res.empty?.should be_true
-    end
-    it '他所の原画なら含む' do
-      @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
-        :original_picture_id => @op2.id, :md5 => 'a' * 32
-      res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
-      res.should eq [@p3]
-    end
-    it '他所の原画でもmd5が違えば含まない' do
-      @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
-        :original_picture_id => @op2.id, :md5 => 'c' * 32
-      res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
-      res.empty?.should be_true
-    end
-    it '更新日時順' do
-      @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
-        :original_picture_id => @op2.id, :md5 => 'a' * 32
-      @p4 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
-        :original_picture_id => @op3.id, :md5 => 'a' * 32, :updated_at => Time.now + 100
-      res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
-      res.should eq [@p4, @p3]
+    context '除外する原画idで指定されていないとき' do
+      it 'リストを返す' do
+        res = Picture.list_by_md5(@p.md5)
+        res.is_a?(Array).should be_true
+      end
+      it 'md5が違えば含まない' do
+        res = Picture.list_by_md5(@p.md5)
+        res.include?(@p2).should be_false
+      end
+      it '更新日時順' do
+        @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
+          :original_picture_id => @op2.id, :md5 => 'C' * 32
+        @p4 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
+          :original_picture_id => @op3.id, :md5 => @p3.md5, :updated_at => Time.now + 100
+        res = Picture.find_by_md5(@p3.md5)
+        res.should eq [@p4, @p3]
+      end
+    end
+    context '除外する原画idで指定されたとき' do
+      it 'リストを返す' do
+        res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
+        res.is_a?(Array).should be_true
+      end
+      it 'md5が違えば含まない' do
+        res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
+        res.include?(@p2).should be_false
+      end
+      it '同一原画は含まない' do
+        res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
+        res.empty?.should be_true
+      end
+      it '同一原画は旧版でも含まない' do
+        @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
+          :original_picture_id => @op.id, :md5 => 'a' * 32
+        res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
+        res.empty?.should be_true
+      end
+      it '他所の原画なら含む' do
+        @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
+          :original_picture_id => @op2.id, :md5 => 'a' * 32
+        res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
+        res.should eq [@p3]
+      end
+      it '他所の原画でもmd5が違えば含まない' do
+        @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
+          :original_picture_id => @op2.id, :md5 => 'c' * 32
+        res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
+        res.empty?.should be_true
+      end
+      it '更新日時順' do
+        @p3 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
+          :original_picture_id => @op2.id, :md5 => 'a' * 32
+        @p4 = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
+          :original_picture_id => @op3.id, :md5 => 'a' * 32, :updated_at => Time.now + 100
+        res = Picture.list_by_md5(@p.md5, @p.original_picture_id)
+        res.should eq [@p4, @p3]
+      end
     end
   end