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