Commit e62f17e0

mo khan <mo@mokhan.ca>
2014-06-08 21:57:53
add specs for creation repository and eager load photos.
1 parent 932ed22
app/models/creation.rb
@@ -8,7 +8,7 @@ class Creation < ActiveRecord::Base
   acts_as_taggable
   alias_method :author, :user
 
-  default_scope -> { order(:created_at => :desc) }
+  default_scope -> { order('creations.created_at desc') }
 
   def to_param
     "#{id}-#{name.downcase.gsub(/[^a-z0-9]+/i, '-')}"
app/models/creation_repository.rb
@@ -7,11 +7,11 @@ class CreationRepository
 
   def search(query)
     sql_search = "%#{query}%"
-    @connection.includes(:user).where("upper(name) like upper(?) OR upper(story) like upper(?)", sql_search, sql_search)
+    connection.includes(:user).where("upper(name) like upper(?) OR upper(story) like upper(?)", sql_search, sql_search)
   end
 
   def visible_creations
-    @connection.distinct.includes(:user).joins(:photos).where(is_restricted: false, 'photos.image_processing' => nil)
+    connection.distinct.includes(:user, :photos).joins(:photos).where(is_restricted: false, 'photos.image_processing' => nil)
   end
 
   private
app/services/application/find_all_creations_query.rb
@@ -1,9 +1,11 @@
 class FindAllCreationsQuery
+  DEFAULT_PER_PAGE=12
+
   def initialize(repository = CreationRepository.new)
     @repository = repository
   end
 
   def fetch(params)
-    @repository.visible_creations.page(params[:page]).per(params[:per_page] || 12)
+    @repository.visible_creations.page(params[:page]).per(params[:per_page] || DEFAULT_PER_PAGE)
   end
 end
spec/models/creation_repository_spec.rb
@@ -0,0 +1,24 @@
+require "spec_helper"
+
+describe CreationRepository do
+  describe "#visible_creations" do
+    let!(:user){ create(:user) }
+    let!(:published_cake){ create(:creation, user: user) }
+    let!(:restricted_cake){ create(:creation, user: user, is_restricted: true) }
+
+    before :each do
+      published_cake.photos.create(image: 'example.png', image_processing: nil)
+    end
+
+    let(:results) { subject.visible_creations }
+
+    it "returns cakes that are not restricted" do
+      expect(results).to_not include(restricted_cake)
+    end
+
+    it "returns cakes that do not have photos that are processing" do
+      expect(results.count).to eql(1)
+      expect(results).to include(published_cake)
+    end
+  end
+end
spec/models/photo_spec.rb
@@ -37,7 +37,7 @@ describe Photo do
 
     it "applies the sha256 of the file" do
       subject.upload(file, blob_storage)
-      expect(subject.sha256).to eql("a1b1b9b8b22d3a4a3523ebb0dc2c57c685938427e12e8a6439fbab104da6b1d8")
+      expect(subject.sha256).to eql("530990323da10ba4b8ab6a9809e9d694bd354831fd58afc96e18c708bfad5ef1")
     end
 
     def upload_key(prefix = '')