From b30fb88ffa9353ce3380b6a37f51c34b7495c167 Mon Sep 17 00:00:00 2001 From: Marcela Ribeiro de Oliveira <mro15@inf.ufpr.br> Date: Wed, 15 Feb 2017 17:43:49 -0200 Subject: [PATCH] index and show institutions tests --- spec/acceptance/institutions_spec.rb | 36 ++++++++++++++++++++++++++++ spec/factories/institutions.rb | 9 +++++++ 2 files changed, 45 insertions(+) create mode 100644 spec/acceptance/institutions_spec.rb create mode 100644 spec/factories/institutions.rb diff --git a/spec/acceptance/institutions_spec.rb b/spec/acceptance/institutions_spec.rb new file mode 100644 index 00000000..5382007d --- /dev/null +++ b/spec/acceptance/institutions_spec.rb @@ -0,0 +1,36 @@ +require 'acceptance_helpers' + +resource 'Institutions' do + header 'Accept', 'application/json' + header 'Content-Type', 'application/json' + + before { 12.times { create(:institution) } } + + let(:institutions) { Institution.all } + + get '/v1/institutions' do + parameter :limit, 'Limit of institutions' + parameter :offset, 'Offset of institutions' + + let(:limit) { 12 } + let(:offset) { 0 } + + example_request 'Get a list of institutions' do + # active model serializer may render model associations in different order for collections (array of items), so we're verifing only returned ids + expect(JSON.parse(response_body).map { |o| o['id'] }.sort).to eq(Institution.limit(limit).offset(offset).pluck(:id).sort) + expect(status).to eq(200) + end + end + + get '/v1/institutions/:id' do + let(:id) { institutions.first.id } + + example 'Get a institution' do + do_request + expect(path).to eq("/v1/institutions/#{id}") # `:id` is replaced with the value of `id` + expect(response_body).to eq(Helper.serialize(Institution.find(id))) + expect(status).to eq(200) + end + end + +end diff --git a/spec/factories/institutions.rb b/spec/factories/institutions.rb new file mode 100644 index 00000000..ce3c0c4d --- /dev/null +++ b/spec/factories/institutions.rb @@ -0,0 +1,9 @@ +FactoryGirl.define do + factory :institution do |m| + name { Faker::Name.name } + description { Faker::Lorem.paragraph } + address { Faker::Address.street_address } + city { Faker::Address.city } + country { Faker::Address.country } + end +end -- GitLab