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