Commit 03e38214c7f8230df6654069376f3c9ab1f49cc2

Authored by Daniel
Committed by Diego Araújo
1 parent f893cf3d
Exists in colab and in 2 other branches master, stable

Update tests to properly handle latest content caching

Unit tests cannot expects that models will always be fetched.

But to make sure things are still well tested, verify the existence of a
configuration, project and repository in the homepage feature.
features/homepage.feature
@@ -3,9 +3,11 @@ Feature: Homepage @@ -3,9 +3,11 @@ Feature: Homepage
3 As a regular user 3 As a regular user
4 I want to have in one page useful links to manage my account and session 4 I want to have in one page useful links to manage my account and session
5 5
6 - @kalibro_processor_restart 6 + @kalibro_configurations_restart @kalibro_processor_restart
7 Scenario: Before signing in 7 Scenario: Before signing in
8 Given I have a project named "GCC" 8 Given I have a project named "GCC"
  9 + And there is a public configuration created named "Test Configuration"
  10 + And I have a sample repository named "Test Repository"
9 Then I am at the homepage 11 Then I am at the homepage
10 And I should see "Home" 12 And I should see "Home"
11 And I should see "Projects" 13 And I should see "Projects"
@@ -19,6 +21,8 @@ Feature: Homepage @@ -19,6 +21,8 @@ Feature: Homepage
19 And I should see "Latest repositories" 21 And I should see "Latest repositories"
20 And I should see "Latest configurations" 22 And I should see "Latest configurations"
21 Then I should see "GCC" only "1" times 23 Then I should see "GCC" only "1" times
  24 + Then I should see "Test Configuration" only "1" times
  25 + Then I should see "Test Repository" only "1" times
22 26
23 Scenario: Signed in 27 Scenario: Signed in
24 Given I am a regular user 28 Given I am a regular user
features/step_definitions/kalibro_configuration_steps.rb
@@ -87,6 +87,12 @@ Given(/^there is a public configuration created$/) do @@ -87,6 +87,12 @@ Given(/^there is a public configuration created$/) do
87 FactoryGirl.create(:kalibro_configuration_attributes, kalibro_configuration_id: @public_kc.id) 87 FactoryGirl.create(:kalibro_configuration_attributes, kalibro_configuration_id: @public_kc.id)
88 end 88 end
89 89
  90 +Given(/^there is a public configuration created named "(.*?)"$/) do |name|
  91 + @kalibro_configuration = FactoryGirl.create(:public_kalibro_configuration, name: name)
  92 + FactoryGirl.create(:kalibro_configuration_attributes, kalibro_configuration_id: @kalibro_configuration.id)
  93 +end
  94 +
  95 +
90 Given(/^there is a private configuration created$/) do 96 Given(/^there is a private configuration created$/) do
91 @private_kc = FactoryGirl.create(:another_kalibro_configuration) 97 @private_kc = FactoryGirl.create(:another_kalibro_configuration)
92 FactoryGirl.create(:kalibro_configuration_attributes, :private, kalibro_configuration_id: @private_kc.id, user: FactoryGirl.create(:another_user, id: nil, email: "private@email.com")) 98 FactoryGirl.create(:kalibro_configuration_attributes, :private, kalibro_configuration_id: @private_kc.id, user: FactoryGirl.create(:another_user, id: nil, email: "private@email.com"))
spec/controllers/home_controller_spec.rb
1 require 'rails_helper' 1 require 'rails_helper'
2 2
3 describe HomeController, :type => :controller do 3 describe HomeController, :type => :controller do
4 - context 'Method' do  
5 - context '#index' do  
6 - before :each do  
7 - Project.expects(:latest).with(5).returns([])  
8 - Repository.expects(:latest).with(5).returns([])  
9 - KalibroConfiguration.expects(:latest).with(5).returns([])  
10 - end  
11 - 4 + context 'actions' do
  5 + context 'index' do
12 describe 'Rendering' do 6 describe 'Rendering' do
13 before :each do 7 before :each do
14 get :index 8 get :index
@@ -41,4 +35,33 @@ describe HomeController, :type => :controller do @@ -41,4 +35,33 @@ describe HomeController, :type => :controller do
41 end 35 end
42 end 36 end
43 end 37 end
  38 +
  39 + context 'helpers' do
  40 + describe 'latest_repositories' do
  41 + let(:repositories) { mock }
  42 +
  43 + it 'should fetch the latest content' do
  44 + Repository.expects(:latest).with(5).returns(repositories)
  45 + expect(subject.latest_repositories(5)).to be(repositories)
  46 + end
  47 + end
  48 +
  49 + describe 'latest_projects' do
  50 + let(:projects) { mock }
  51 +
  52 + it 'should fetch the latest content' do
  53 + Project.expects(:latest).with(5).returns(projects)
  54 + expect(subject.latest_projects(5)).to be(projects)
  55 + end
  56 + end
  57 +
  58 + describe 'latest_configurations' do
  59 + let(:configurations) { mock }
  60 +
  61 + it 'should fetch the latest content' do
  62 + KalibroConfiguration.expects(:latest).with(5).returns(configurations)
  63 + expect(subject.latest_configurations(5)).to be(configurations)
  64 + end
  65 + end
  66 + end
44 end 67 end