OSDN Git Service

t#30138:create original pictures status
[pettanr/pettanr.git] / spec / models / original_picture_spec.rb
index 28b8119..2a9a964 100644 (file)
@@ -293,6 +293,122 @@ describe OriginalPicture do
     end
   end
   
+  describe '未公開に於いて' do
+    before do
+      @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
+    end
+    context '実素材がゼロのとき' do
+      it 'Trueを返す' do
+        r = @op.unpublished?
+        r.should be_true
+      end
+    end
+    context '実素材がゼロではないとき' do
+      it 'Falseを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id 
+        r = @op.unpublished?
+        r.should be_false
+      end
+    end
+  end
+
+  describe '停止中に於いて' do
+    before do
+      @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
+    end
+    context '未公開ではないが、素材がないとき' do
+      it 'Trueを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id 
+        r = @op.stopped?
+        r.should be_true
+      end
+    end
+    context '未公開のとき' do
+      it 'Falseを返す' do
+        r = @op.stopped?
+        r.should be_false
+      end
+    end
+    context '未公開ではなく、素材もあるとき' do
+      it 'falseを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id 
+        @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
+        r = @op.stopped?
+        r.should be_false
+      end
+    end
+  end
+
+  describe 'ライセンス待ちに於いて' do
+    before do
+      @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
+    end
+    context '未公開ではなく、素材もあるが、原画の更新日時が実素材のheadのそれより後のとき' do
+      it 'Trueを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :updated_at => Time.now - 1000
+        @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
+        r = @op.unlicensed?
+        r.should be_true
+      end
+    end
+    context '未公開のとき' do
+      it 'Falseを返す' do
+        r = @op.unlicensed?
+        r.should be_false
+      end
+    end
+    context '未公開ではないが、素材がないとき' do
+      it 'Falseを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id 
+        r = @op.unlicensed?
+        r.should be_false
+      end
+    end
+    context '未公開ではなく、素材もあり、実素材のheadの更新日時が原画のそれより後のとき' do
+      it 'Falseを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :updated_at => Time.now + 1000
+        @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
+        r = @op.unlicensed?
+        r.should be_false
+      end
+    end
+  end
+
+  describe '公開中に於いて' do
+    before do
+      @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
+    end
+    context '未公開ではなく、素材もあり、実素材のheadの更新日時が原画のそれより後のとき' do
+      it 'Trueを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :updated_at => Time.now + 1000
+        @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
+        r = @op.published?
+        r.should be_true
+      end
+    end
+    context '未公開のとき' do
+      it 'Falseを返す' do
+        r = @op.published?
+        r.should be_false
+      end
+    end
+    context '未公開ではないが、素材がないとき' do
+      it 'falseを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id 
+        r = @op.published?
+        r.should be_false
+      end
+    end
+    context '未公開ではなく、素材もあるが、原画の更新日時が実素材のheadのそれより後のとき' do
+      it 'falseを返す' do
+        @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :updated_at => Time.now - 1000
+        @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
+        r = @op.published?
+        r.should be_false
+      end
+    end
+  end
+
   describe '一覧取得に於いて' do
     before do
       @op = FactoryGirl.create :original_picture, :artist_id => @artist.id