From 43caffcd94ebd16180730e824c23e1f2a8caf6d4 Mon Sep 17 00:00:00 2001
From: Giovanne Marcelo <gms15@inf.ufpr.br>
Date: Wed, 15 Feb 2017 17:29:12 -0200
Subject: [PATCH] Add show all reviews

---
 spec/acceptance/reviews_spec.rb    | 24 ++++++++++++++++++++++++
 spec/factories/learning_objects.rb |  5 ++++-
 spec/factories/ratings.rb          |  6 ++++++
 spec/factories/review_ratings.rb   |  6 ++++++
 spec/factories/reviews.rb          | 10 ++++++++++
 5 files changed, 50 insertions(+), 1 deletion(-)
 create mode 100644 spec/acceptance/reviews_spec.rb
 create mode 100644 spec/factories/ratings.rb
 create mode 100644 spec/factories/review_ratings.rb
 create mode 100644 spec/factories/reviews.rb

diff --git a/spec/acceptance/reviews_spec.rb b/spec/acceptance/reviews_spec.rb
new file mode 100644
index 000000000..ae0b9b65a
--- /dev/null
+++ b/spec/acceptance/reviews_spec.rb
@@ -0,0 +1,24 @@
+require 'acceptance_helpers'
+
+resource 'Reviews' do
+  header 'Accept', 'application/json'
+  header 'Content-Type', 'application/json'
+
+  before { 12.times { create(:learning_object) } }
+
+  let(:learning_objects) { LearningObject.all }
+
+  get '/v1/:type/:id/reviews' do
+    parameter :type, 'type of object [\'learning_objects\', \'collections\']'
+
+    let(:type) { 'learning_objects' }
+    let(:id) { learning_objects.first.id }
+
+    example_request 'Get a list of reviews' do
+      expect(path).to eq("/v1/learning_objects/#{id}/reviews") # `:id` is replaced with the value of `id`
+      expect(response_body).to eq(Helper.serialize(Review.where(reviewable: learning_objects.first)))
+      expect(status).to eq(200)
+    end
+  end
+
+end
diff --git a/spec/factories/learning_objects.rb b/spec/factories/learning_objects.rb
index dd4364580..7bfec68af 100644
--- a/spec/factories/learning_objects.rb
+++ b/spec/factories/learning_objects.rb
@@ -1,5 +1,5 @@
 FactoryGirl.define do
-  factory :learning_object, aliases: [:complainable] do
+  factory :learning_object, aliases: [:complainable, :reviewable] do
     sequence(:name) { |i| "LearningObject #{i}" }
     sequence(:id_dspace) { |i| i }
     publisher
@@ -10,14 +10,17 @@ FactoryGirl.define do
     author { Faker::Name.name }
     state LearningObject.states[:published]
 
+    
     transient do
       tags_count 5
       subjects_count 2
       educational_stages_count 1
+      reviews_count 2
     end
 
     after(:create) do |learning_object, evaluator|
       create_list(:tagging, evaluator.tags_count, taggable: learning_object)
+      create_list(:review, evaluator.reviews_count, reviewable: learning_object)
       [Subject, EducationalStage].each do |model|
         table = model.to_s.tableize
         learning_object.try(table.to_sym) << model.all.sample(evaluator.try("#{table}_count".to_sym))
diff --git a/spec/factories/ratings.rb b/spec/factories/ratings.rb
new file mode 100644
index 000000000..299a31ddd
--- /dev/null
+++ b/spec/factories/ratings.rb
@@ -0,0 +1,6 @@
+FactoryGirl.define do
+  factory :rating do
+    name { Faker::Lorem.word }
+    description { Faker::Lorem.sentence }
+  end
+end
diff --git a/spec/factories/review_ratings.rb b/spec/factories/review_ratings.rb
new file mode 100644
index 000000000..4a3e9ba48
--- /dev/null
+++ b/spec/factories/review_ratings.rb
@@ -0,0 +1,6 @@
+FactoryGirl.define do
+  factory :review_rating do
+    rating
+    value { rand(1..5) } 
+  end
+end
diff --git a/spec/factories/reviews.rb b/spec/factories/reviews.rb
new file mode 100644
index 000000000..e0d3b49d4
--- /dev/null
+++ b/spec/factories/reviews.rb
@@ -0,0 +1,10 @@
+FactoryGirl.define do
+  factory :review do
+    user
+    reviewable
+    name { Faker::Lorem.word }
+    pros { Faker::Lorem.sentence }
+    cons { Faker::Lorem.sentence }
+    description { Faker::Lorem.paragraph }
+  end
+end
-- 
GitLab