summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo k <mo@mokhan.ca>2012-11-07 21:34:00 -0700
committermo k <mo@mokhan.ca>2012-11-07 21:34:00 -0700
commit8d5ba18d8be3ab00a9cd37219e058c2e5696fbe9 (patch)
tree76e8cb60959f08b2f88f21bfc124a2fd64d3cc6a
parent6713f241e5092cdc29f5d0a39c2aa0ceab76a570 (diff)
split DTO, mapper and query into separate files.
-rw-r--r--app/models/creation.rb1
-rw-r--r--app/services/creation_to_display_creation_dto_mapper.rb14
-rw-r--r--app/services/display_creation_dto.rb9
-rw-r--r--app/services/find_all_creations_query.rb25
-rw-r--r--spec/controllers/creations_controller_spec.rb6
5 files changed, 30 insertions, 25 deletions
diff --git a/app/models/creation.rb b/app/models/creation.rb
index e6b61402..8317ef8b 100644
--- a/app/models/creation.rb
+++ b/app/models/creation.rb
@@ -12,6 +12,7 @@ class Creation < ActiveRecord::Base
default_scope order("created_at DESC")
+ # to be removed and moved to the DisplayCreationDTO
def to_param
"#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
end
diff --git a/app/services/creation_to_display_creation_dto_mapper.rb b/app/services/creation_to_display_creation_dto_mapper.rb
new file mode 100644
index 00000000..3aef401f
--- /dev/null
+++ b/app/services/creation_to_display_creation_dto_mapper.rb
@@ -0,0 +1,14 @@
+class CreationToDisplayCreationDTOMapper
+ def map_from(creation)
+ dto = DisplayCreationDTO.new
+ dto.id = creation.id
+ dto.name = creation.name
+ dto.story = creation.story
+ dto.primary_image = creation.primary_image
+ dto.thumb_url = creation.primary_image.image.thumb.url
+ dto.user = creation.user
+ dto.favorites = creation.favorites
+ dto.comment_threads = creation.comment_threads
+ dto
+ end
+end
diff --git a/app/services/display_creation_dto.rb b/app/services/display_creation_dto.rb
new file mode 100644
index 00000000..f4f9239a
--- /dev/null
+++ b/app/services/display_creation_dto.rb
@@ -0,0 +1,9 @@
+class DisplayCreationDTO
+ attr_accessor :id, :name, :story, :primary_image, :thumb_url, :user, :favorites, :comment_threads
+ def self.model_name
+ ActiveModel::Name.new(self, nil, 'Creation')
+ end
+ def to_param
+ "#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
+ end
+end
diff --git a/app/services/find_all_creations_query.rb b/app/services/find_all_creations_query.rb
index 7be82045..f60580f7 100644
--- a/app/services/find_all_creations_query.rb
+++ b/app/services/find_all_creations_query.rb
@@ -1,5 +1,5 @@
class FindAllCreationsQuery
- def initialize(user, mapper = CreationToDisplayCreationDTO.new)
+ def initialize(user, mapper = CreationToDisplayCreationDTOMapper.new)
@user = user
@mapper = mapper
end
@@ -18,26 +18,3 @@ class FindAllCreationsQuery
Kaminari.paginate_array(items).page(page).per(16)
end
end
-class CreationToDisplayCreationDTO
- def map_from(creation)
- dto = DisplayCreationDTO.new
- dto.id = creation.id
- dto.name = creation.name
- dto.story = creation.story
- dto.primary_image = creation.primary_image
- dto.thumb_url = creation.primary_image.image.thumb.url
- dto.user = creation.user
- dto.favorites = creation.favorites
- dto.comment_threads = creation.comment_threads
- dto
- end
-end
-class DisplayCreationDTO
- attr_accessor :id, :name, :story, :primary_image, :thumb_url, :user, :favorites, :comment_threads
- def self.model_name
- ActiveModel::Name.new(self, nil, 'Creation')
- end
- def to_param
- "#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
- end
-end
diff --git a/spec/controllers/creations_controller_spec.rb b/spec/controllers/creations_controller_spec.rb
index 39cb7f43..efdb983a 100644
--- a/spec/controllers/creations_controller_spec.rb
+++ b/spec/controllers/creations_controller_spec.rb
@@ -13,7 +13,11 @@ describe CreationsController do
describe "GET index" do
it "assigns all creations as @creations" do
get :index
- assigns(:creations).should eq([creation])
+ creation = assigns(:creations).first
+ creation.id.should == creation.id
+ creation.name.should == creation.name
+ creation.story.should == creation.story
+ creation.user.should == creation.user
end
end