Commit 0b3288001e43c8e16ab82700f2f9e539646cbbe4
Exists in
colab
and in
2 other branches
Merge pull request #337 from mezuro/update_home_again
Update home and remove menu
Showing
19 changed files
with
210 additions
and
113 deletions
Show diff stats
CHANGELOG.rdoc
@@ -5,6 +5,10 @@ Prezento is the web interface for Mezuro. | @@ -5,6 +5,10 @@ Prezento is the web interface for Mezuro. | ||
5 | == Unreleased | 5 | == Unreleased |
6 | 6 | ||
7 | * Remove Show button for hotspot metric configurations | 7 | * Remove Show button for hotspot metric configurations |
8 | +* Remove side menu | ||
9 | +* Refactor footer as a grid | ||
10 | +* Add latest repositories list to the homepage | ||
11 | +* Add latest configurations list to the homepage | ||
8 | 12 | ||
9 | == v0.11.3 - 01/04/2016 | 13 | == v0.11.3 - 01/04/2016 |
10 | 14 |
app/assets/stylesheets/bootstrap_and_overrides.css.less
@@ -40,19 +40,6 @@ | @@ -40,19 +40,6 @@ | ||
40 | 40 | ||
41 | //@import "datepicker/datepicker"; | 41 | //@import "datepicker/datepicker"; |
42 | 42 | ||
43 | -footer div { | ||
44 | - width: 50%; | ||
45 | -} | ||
46 | - | ||
47 | -.footer-right { | ||
48 | - float: right; | ||
49 | - text-align: right; | ||
50 | -} | ||
51 | - | ||
52 | -.footer-left { | ||
53 | - float: left; | ||
54 | -} | ||
55 | - | ||
56 | #error_explanation { | 43 | #error_explanation { |
57 | background-color: #F2DEDE; | 44 | background-color: #F2DEDE; |
58 | border-color: #EED3D7; | 45 | border-color: #EED3D7; |
app/controllers/home_controller.rb
1 | class HomeController < ApplicationController | 1 | class HomeController < ApplicationController |
2 | def index | 2 | def index |
3 | @latest_projects = Project.latest(5) | 3 | @latest_projects = Project.latest(5) |
4 | + @latest_repositories = Repository.latest(5) | ||
5 | + @latest_configurations = KalibroConfiguration.latest(5) | ||
4 | end | 6 | end |
5 | end | 7 | end |
app/models/kalibro_configuration.rb
@@ -28,4 +28,8 @@ class KalibroConfiguration < KalibroClient::Entities::Configurations::KalibroCon | @@ -28,4 +28,8 @@ class KalibroConfiguration < KalibroClient::Entities::Configurations::KalibroCon | ||
28 | @attributes = nil | 28 | @attributes = nil |
29 | super | 29 | super |
30 | end | 30 | end |
31 | + | ||
32 | + def self.latest(count=1) | ||
33 | + all.sort { |one, another| another.id <=> one.id }.select { |kalibro_configuration| kalibro_configuration.attributes.public }.first(count) | ||
34 | + end | ||
31 | end | 35 | end |
app/models/repository.rb
1 | class Repository < KalibroClient::Entities::Processor::Repository | 1 | class Repository < KalibroClient::Entities::Processor::Repository |
2 | include KalibroRecord | 2 | include KalibroRecord |
3 | + | ||
4 | + def self.latest(count=1) | ||
5 | + all.sort { |one, another| another.id <=> one.id }.first(count) | ||
6 | + end | ||
3 | end | 7 | end |
app/views/home/index.html.erb
@@ -6,12 +6,40 @@ | @@ -6,12 +6,40 @@ | ||
6 | </p> | 6 | </p> |
7 | </div> | 7 | </div> |
8 | 8 | ||
9 | -<h2><%= t('latest_projects') %></h2> | 9 | +<div class="container-fluid"> |
10 | + <div class="row"> | ||
11 | + <div class="col-md-4"> | ||
12 | + <h2><%= t('latest_projects') %></h2> | ||
10 | 13 | ||
11 | -<ul> | ||
12 | - <% cache do %> | ||
13 | - <% @latest_projects.each do |project| %> | ||
14 | - <li><%= link_to(project.name, project_path(project.id)) %></li> | ||
15 | - <% end %> | ||
16 | - <% end %> | ||
17 | -</ul> | 14 | + <ul> |
15 | + <% cache action_suffix: 'latest_projects' do %> | ||
16 | + <% @latest_projects.each do |project| %> | ||
17 | + <li><%= link_to(project.name, project_path(project.id)) %></li> | ||
18 | + <% end %> | ||
19 | + <% end %> | ||
20 | + </ul> | ||
21 | + </div> | ||
22 | + <div class="col-md-4"> | ||
23 | + <h2><%= t('latest_repositories') %></h2> | ||
24 | + | ||
25 | + <ul> | ||
26 | + <% cache action_suffix: 'latest_repositories' do %> | ||
27 | + <% @latest_repositories.each do |repository| %> | ||
28 | + <li><%= link_to(repository.name, repository_path(repository.id)) %></li> | ||
29 | + <% end %> | ||
30 | + <% end %> | ||
31 | + </ul> | ||
32 | + </div> | ||
33 | + <div class="col-md-4"> | ||
34 | + <h2><%= t('latest_configurations') %></h2> | ||
35 | + | ||
36 | + <ul> | ||
37 | + <% cache action_suffix: 'latest_configurations' do %> | ||
38 | + <% @latest_configurations.each do |configuration| %> | ||
39 | + <li><%= link_to(configuration.name, kalibro_configuration_path(configuration.id)) %></li> | ||
40 | + <% end %> | ||
41 | + <% end %> | ||
42 | + </ul> | ||
43 | + </div> | ||
44 | + </div> | ||
45 | +</div> |
app/views/layouts/application.html.erb
@@ -45,95 +45,29 @@ | @@ -45,95 +45,29 @@ | ||
45 | </head> | 45 | </head> |
46 | <body> | 46 | <body> |
47 | 47 | ||
48 | - <div class="navbar navbar-default"> | ||
49 | - <div class="navbar-inner"> | ||
50 | - <div class="container-fluid"> | ||
51 | - <div class="navbar-header"> | ||
52 | - <button type="button" class="navbar-toggle collapsed" data-target="#nav-collapse" data-toggle="collapse"> | ||
53 | - <span class="icon-bar"></span> | ||
54 | - <span class="icon-bar"></span> | ||
55 | - <span class="icon-bar"></span> | ||
56 | - </button> | ||
57 | - <a><%= link_to image_tag('logo.png'), root_path, class: 'navbar-brand' %></a> | ||
58 | - </div> | ||
59 | - <div class="collapse navbar-collapse" id="nav-collapse"> | ||
60 | - <ul class="nav navbar-nav"> | ||
61 | - <li><%= link_to t('home'), root_path %></li> | ||
62 | - <li><%= link_to Project.model_name.human, projects_path %></li> | ||
63 | - <li><%= link_to Repository.model_name.human, repositories_path %></li> | ||
64 | - <li><%= link_to KalibroConfiguration.model_name.human, kalibro_configurations_path %></li> | ||
65 | - <li><%= link_to ReadingGroup.model_name.human, reading_groups_path %></li> | ||
66 | - </ul> | ||
67 | - <ul class="nav navbar-nav navbar-right"> | ||
68 | - <% if user_signed_in? %> | ||
69 | - <li><%= link_to t('edit_account'), edit_user_registration_path %></li> | ||
70 | - <li><%= link_to t('sign_out'), destroy_user_session_path, :method => :delete %></li> | ||
71 | - <% else %> | ||
72 | - <li><%= link_to t('sign_in'), new_user_session_path %></li> | ||
73 | - <li><%= link_to t('sign_up'), new_user_registration_path %></li> | ||
74 | - <% end %> | ||
75 | - <li class="dropdown"> | ||
76 | - <a class="dropdown-toggle" aria-expanded="true" role="button" data-toggle="dropdown" href="#"> | ||
77 | - <%= t('language') %> | ||
78 | - <span class="caret"></span> | ||
79 | - </a> | ||
80 | - <ul class="dropdown-menu" role="menu"> | ||
81 | - <% I18n.available_locales.each do |locale| %> | ||
82 | - <li><%= link_to(locale.to_s, url_for(locale: locale), data: { no_turbolink: true }) %></li> | ||
83 | - <% end %> | ||
84 | - </ul> | ||
85 | - </li> | ||
86 | - </ul> | ||
87 | - </div><!--/.nav-collapse --> | ||
88 | - </div> | ||
89 | - </div> | ||
90 | - </div> | 48 | + <%= render partial: 'shared/navbar' %> |
91 | 49 | ||
92 | <div class="container-fluid"> | 50 | <div class="container-fluid"> |
93 | <div class="row"> | 51 | <div class="row"> |
94 | - <div class="col-sm-3 col-md-3"> | ||
95 | - <div class="well sidebar-nav"> | ||
96 | - <ul class="list-group"> | ||
97 | - <% if user_signed_in? %> | ||
98 | - <li class="nav-header"><%= t('hello_html', user: current_user.name) %></li> | ||
99 | - <li class="list-group-item"><%= link_to t('your_projects'), user_projects_path(current_user.id) %></li> | ||
100 | - <% end %> | ||
101 | - <li class="nav-header"><%= t('tutorials') %></li> | ||
102 | - <li class="list-group-item"><%= link_to t('analysis'), tutorials_path('analyzing') %></li> | ||
103 | - <li class="list-group-item"><%= link_to t('configuring'), tutorials_path('configuring') %></li> | ||
104 | - <li class="list-group-item" ><%= link_to t('keywords'), tutorials_path('keywords') %></li> | ||
105 | - <% if content_for?(:sidebar) %> | ||
106 | - <%= yield :sidebar %> | ||
107 | - <% else %> | ||
108 | - <%= render 'shared/short_about' %> | ||
109 | - <% end %> | ||
110 | - </ul> | ||
111 | - </div><!--/.well --> | ||
112 | - </div><!--/col-sm-3 col-md-3--> | ||
113 | - <div class="col-sm-9 col-md-9"> | ||
114 | - <div class="alert alert-info" id="loader"><i class="fa fa-spinner fa-spin fa-lg"></i> <%= t('instant_loading_page') %></div> | 52 | + <div class="col-sm-12 col-md-12"> |
53 | + <div class="alert alert-info" id="loader"><i class="fa fa-spinner fa-spin fa-lg"></i> <%= t('instant_loading_page') %></div> | ||
115 | 54 | ||
116 | <%= bootstrap_flash %> | 55 | <%= bootstrap_flash %> |
117 | <%= yield %> | 56 | <%= yield %> |
118 | </div> | 57 | </div> |
119 | </div><!--/row--> | 58 | </div><!--/row--> |
120 | - | ||
121 | - <footer> | ||
122 | - <div class="footer-left">© <%= link_to(t('mezuro_team'), '/humans.txt') %> 2013-2015</div> | ||
123 | - <div class="footer-right"><%= link_to(image_tag('agplv3-88x31.png'), 'http://www.gnu.org/licenses/agpl-3.0-standalone.html') %> <%= link_to image_tag('fork-me.png'), 'https://github.com/mezuro/prezento' %> <%= image_tag 'usp-cloud-nuvem-logo.png' %> <%= link_to image_tag('banner-ccsl.png', height: '40', width: '190'), 'http://ccsl.ime.usp.br/' %></div> | ||
124 | - </footer> | ||
125 | - | ||
126 | - <script type="text/javascript"> | ||
127 | - $(function() { | ||
128 | - $( "#languages-accordion > div" ).accordion({ | ||
129 | - heightStyle: "content", | ||
130 | - collapsible: true, | ||
131 | - active: false | ||
132 | - }); | ||
133 | - }); | ||
134 | - </script> | ||
135 | - | ||
136 | </div> <!-- /container --> | 59 | </div> <!-- /container --> |
137 | 60 | ||
61 | + <%= render partial: 'shared/footer' %> | ||
62 | + | ||
63 | + <script type="text/javascript"> | ||
64 | + $(function() { | ||
65 | + $( "#languages-accordion > div" ).accordion({ | ||
66 | + heightStyle: "content", | ||
67 | + collapsible: true, | ||
68 | + active: false | ||
69 | + }); | ||
70 | + }); | ||
71 | + </script> | ||
138 | </body> | 72 | </body> |
139 | </html> | 73 | </html> |
@@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
1 | +<footer> | ||
2 | + <div class="container-fluid"> | ||
3 | + <div class="row"> | ||
4 | + <div class="col-md-7">© <%= link_to(t('mezuro_team'), '/humans.txt') %> 2013-2016</div> | ||
5 | + <div class="col-md-5"> | ||
6 | + <div class="container-fluid"> | ||
7 | + <div class="row"> | ||
8 | + <div class="col-md-2"><%= link_to(image_tag('agplv3-88x31.png'), 'http://www.gnu.org/licenses/agpl-3.0-standalone.html') %></div> | ||
9 | + <div class="col-md-2"><%= link_to image_tag('fork-me.png'), 'https://github.com/mezuro/prezento' %></div> | ||
10 | + <div class="col-md-2"><%= image_tag 'usp-cloud-nuvem-logo.png' %></div> | ||
11 | + <div class="col-md-6"><%= link_to image_tag('banner-ccsl.png', height: '40', width: '190'), 'http://ccsl.ime.usp.br/' %></div> | ||
12 | + </div> | ||
13 | + </div> | ||
14 | + </div> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | +</footer> |
@@ -0,0 +1,52 @@ | @@ -0,0 +1,52 @@ | ||
1 | +<div class="navbar navbar-default"> | ||
2 | + <div class="navbar-inner"> | ||
3 | + <div class="container-fluid"> | ||
4 | + <div class="navbar-header"> | ||
5 | + <button type="button" class="navbar-toggle collapsed" data-target="#nav-collapse" data-toggle="collapse"> | ||
6 | + <span class="icon-bar"></span> | ||
7 | + <span class="icon-bar"></span> | ||
8 | + <span class="icon-bar"></span> | ||
9 | + </button> | ||
10 | + <a><%= link_to image_tag('logo.png'), root_path, class: 'navbar-brand' %></a> | ||
11 | + </div> | ||
12 | + <div class="collapse navbar-collapse" id="nav-collapse"> | ||
13 | + <ul class="nav navbar-nav"> | ||
14 | + <li><%= link_to t('home'), root_path %></li> | ||
15 | + <li><%= link_to Project.model_name.human, projects_path %></li> | ||
16 | + <li><%= link_to Repository.model_name.human, repositories_path %></li> | ||
17 | + <li><%= link_to KalibroConfiguration.model_name.human, kalibro_configurations_path %></li> | ||
18 | + <li><%= link_to ReadingGroup.model_name.human, reading_groups_path %></li> | ||
19 | + </ul> | ||
20 | + <ul class="nav navbar-nav navbar-right"> | ||
21 | + <% if user_signed_in? %> | ||
22 | + <li class="dropdown"> | ||
23 | + <a class="dropdown-toggle" aria-expanded="true" role="button" data-toggle="dropdown" href="#"> | ||
24 | + <%= current_user.name %> | ||
25 | + <span class="caret"></span> | ||
26 | + </a> | ||
27 | + <ul class="dropdown-menu" role="menu"> | ||
28 | + <li><%= link_to t('your_projects'), user_projects_path(current_user.id) %></li> | ||
29 | + <li><%= link_to t('edit_account'), edit_user_registration_path %></li> | ||
30 | + <li><%= link_to t('sign_out'), destroy_user_session_path, :method => :delete %></li> | ||
31 | + </ul> | ||
32 | + </li> | ||
33 | + <% else %> | ||
34 | + <li><%= link_to t('sign_in'), new_user_session_path %></li> | ||
35 | + <li><%= link_to t('sign_up'), new_user_registration_path %></li> | ||
36 | + <% end %> | ||
37 | + <li class="dropdown"> | ||
38 | + <a class="dropdown-toggle" aria-expanded="true" role="button" data-toggle="dropdown" href="#"> | ||
39 | + <%= t('language') %> | ||
40 | + <span class="caret"></span> | ||
41 | + </a> | ||
42 | + <ul class="dropdown-menu" role="menu"> | ||
43 | + <% I18n.available_locales.each do |locale| %> | ||
44 | + <li><%= link_to(locale.to_s, url_for(locale: locale), data: { no_turbolink: true }) %></li> | ||
45 | + <% end %> | ||
46 | + </ul> | ||
47 | + </li> | ||
48 | + </ul> | ||
49 | + </div><!--/.nav-collapse --> | ||
50 | + </div> | ||
51 | + </div> | ||
52 | +</div> | ||
0 | \ No newline at end of file | 53 | \ No newline at end of file |
config/locales/views/home/en.yml
1 | en: | 1 | en: |
2 | title_home_index: "Understanding Code Metrics" | 2 | title_home_index: "Understanding Code Metrics" |
3 | - body_home_index_html: "<p>This is Mezuro! A <strong>free/libre</strong> web platform for <strong>collaborative</strong> source code <strong>evaluation</strong>.</p> <p>Here you can evaluate your source code with the most popular SCMs (like Git and SVN), just by providing its URL. For now, you can evaluate <strong>C</strong>, <strong>C++</strong>, <strong>Java</strong>, <strong>Ruby</strong> and <strong>Python</strong> source codes, but we are looking forward to supporting more languages in the future (PHP is coming soon).</p>" | 3 | + body_home_index_html: "<p>This is Mezuro! A <strong>free/libre</strong> web platform for <strong>collaborative</strong> source code <strong>evaluation</strong>.</p> <p>Here you can evaluate your source code with the most popular SCMs (like Git and SVN), just by providing its URL. For now, you can evaluate <strong>C</strong>, <strong>C++</strong>, <strong>Java</strong>, <strong>Ruby</strong>, <strong>Python</strong> and <strong>PHP</strong> source codes, but we are looking forward to supporting more languages in the future.</p>" |
4 | body_feedback_home_index_html: "Mezuro is continuously under development. Try it and give us your %{href}." | 4 | body_feedback_home_index_html: "Mezuro is continuously under development. Try it and give us your %{href}." |
5 | latest_projects: "Latest projects" | 5 | latest_projects: "Latest projects" |
6 | + latest_repositories: "Latest repositories" | ||
7 | + latest_configurations: "Latest configurations" |
config/locales/views/home/pt.yml
1 | pt: | 1 | pt: |
2 | title_home_index: "Entendendo Métricas de Código" | 2 | title_home_index: "Entendendo Métricas de Código" |
3 | - body_home_index_html: "<p>Este é o Mezuro! Uma plataforma web <strong>livre</strong> para <strong>avaliação colaborativa</strong> de código fonte.</p> <p>Aqui você pode avaliar seu código fonte com os SCMs mais populares (como Git e SVN), apenas fornecendo sua URL. Por enquanto, você pode avaliar códigos em <strong>C</strong>, <strong>C++</strong>, <strong>Java</strong>, <strong>Ruby</strong> e <strong>Python<strong> mas nós pretendemos dar suporte a mais linguagens no futuro (PHP está muito próximo).</p>" | 3 | + body_home_index_html: "<p>Este é o Mezuro! Uma plataforma web <strong>livre</strong> para <strong>avaliação colaborativa</strong> de código fonte.</p> <p>Aqui você pode avaliar seu código fonte com os SCMs mais populares (como Git e SVN), apenas fornecendo sua URL. Por enquanto, você pode avaliar códigos em <strong>C</strong>, <strong>C++</strong>, <strong>Java</strong>, <strong>Ruby</strong>, <strong>Python</strong> e <strong>PHP</strong> mas nós pretendemos dar suporte a mais linguagens no futuro.</p>" |
4 | body_feedback_home_index_html: "Mezuro está sob constante desenvolvimento. Experimente e nos dê o seu %{href}." | 4 | body_feedback_home_index_html: "Mezuro está sob constante desenvolvimento. Experimente e nos dê o seu %{href}." |
5 | latest_projects: "Últimos projetos" | 5 | latest_projects: "Últimos projetos" |
6 | + latest_repositories: "Últimos repositórios" | ||
7 | + latest_configurations: "Últimas configurações" |
config/locales/views/layouts/en.yml
1 | en: | 1 | en: |
2 | - hello_html: "Hello, %{user}" | ||
3 | instant_loading_page: "Wait an instant while we are loading the page that you have requested." | 2 | instant_loading_page: "Wait an instant while we are loading the page that you have requested." |
4 | home: "Home" | 3 | home: "Home" |
5 | edit_account: "Edit Account" | 4 | edit_account: "Edit Account" |
config/locales/views/layouts/pt.yml
1 | pt: | 1 | pt: |
2 | - hello_html: "Olá, %{user}" | ||
3 | instant_loading_page: "Espere um instante enquanto estamos carregando a página que você solicitou." | 2 | instant_loading_page: "Espere um instante enquanto estamos carregando a página que você solicitou." |
4 | home: "Início" | 3 | home: "Início" |
5 | edit_account: "Editar Conta" | 4 | edit_account: "Editar Conta" |
features/homepage.feature
@@ -3,21 +3,29 @@ Feature: Homepage | @@ -3,21 +3,29 @@ 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 | Scenario: Before signing in | 7 | Scenario: Before signing in |
7 | - Given I am at the homepage | ||
8 | - Then I should see "Sign In" | 8 | + Given I have a project named "GCC" |
9 | + Then I am at the homepage | ||
10 | + And I should see "Home" | ||
11 | + And I should see "Project" | ||
12 | + And I should see "Repository" | ||
13 | + And I should see "Configuration" | ||
14 | + And I should see "Reading Group" | ||
15 | + And I should see "Sign In" | ||
9 | And I should see "Sign Up" | 16 | And I should see "Sign Up" |
17 | + And I should see "Language" | ||
10 | And I should see "Latest projects" | 18 | And I should see "Latest projects" |
11 | - And I should see "Project" | 19 | + And I should see "Latest repositories" |
20 | + And I should see "Latest configurations" | ||
21 | + Then I should see "GCC" only "1" times | ||
12 | 22 | ||
13 | Scenario: Signed in | 23 | Scenario: Signed in |
14 | Given I am a regular user | 24 | Given I am a regular user |
15 | And I am signed in | 25 | And I am signed in |
16 | And I am at the homepage | 26 | And I am at the homepage |
17 | - Then I should see "Edit" | 27 | + Then I should see "Edit Account" |
18 | And I should see "Sign Out" | 28 | And I should see "Sign Out" |
19 | - And I should see "Latest projects" | ||
20 | - And I should see "Project" | ||
21 | And I should see "Your projects" | 29 | And I should see "Your projects" |
22 | 30 | ||
23 | Scenario: Language selection | 31 | Scenario: Language selection |
features/step_definitions/homepage_steps.rb
@@ -12,4 +12,8 @@ end | @@ -12,4 +12,8 @@ end | ||
12 | 12 | ||
13 | Then(/^I should see "(.+)"$/) do |text| | 13 | Then(/^I should see "(.+)"$/) do |text| |
14 | expect(page).to have_content(text) | 14 | expect(page).to have_content(text) |
15 | -end | ||
16 | \ No newline at end of file | 15 | \ No newline at end of file |
16 | +end | ||
17 | + | ||
18 | +Then(/^I should see "(.*?)" only "(.*?)" times$/) do |text, times| | ||
19 | + expect(page).to have_content(text, count: times.to_i) | ||
20 | +end |
features/users/user_update.feature
@@ -8,7 +8,9 @@ Feature: User update | @@ -8,7 +8,9 @@ Feature: User update | ||
8 | Given I am a regular user | 8 | Given I am a regular user |
9 | And I am signed in | 9 | And I am signed in |
10 | And I am at the homepage | 10 | And I am at the homepage |
11 | - When I click the Edit link | 11 | + And I take a picture of the page |
12 | + When I click the Diego Martinez link | ||
13 | + And I click the Edit Account link | ||
12 | And I fill the Name field with "Rafael Manzo" | 14 | And I fill the Name field with "Rafael Manzo" |
13 | And I fill the Current password field with "password" | 15 | And I fill the Current password field with "password" |
14 | And I press the Update button | 16 | And I press the Update button |
spec/controllers/home_controller_spec.rb
@@ -5,6 +5,8 @@ describe HomeController, :type => :controller do | @@ -5,6 +5,8 @@ describe HomeController, :type => :controller do | ||
5 | context '#index' do | 5 | context '#index' do |
6 | before :each do | 6 | before :each do |
7 | Project.expects(:latest).with(5).returns([]) | 7 | Project.expects(:latest).with(5).returns([]) |
8 | + Repository.expects(:latest).with(5).returns([]) | ||
9 | + KalibroConfiguration.expects(:latest).with(5).returns([]) | ||
8 | end | 10 | end |
9 | 11 | ||
10 | describe 'Rendering' do | 12 | describe 'Rendering' do |
spec/models/kalibro_configuration_spec.rb
@@ -70,6 +70,29 @@ describe KalibroConfiguration, :type => :model do | @@ -70,6 +70,29 @@ describe KalibroConfiguration, :type => :model do | ||
70 | end | 70 | end |
71 | end | 71 | end |
72 | end | 72 | end |
73 | + | ||
74 | + describe 'latest' do | ||
75 | + let!(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, id: 1) } | ||
76 | + let!(:another_kalibro_configuration) { FactoryGirl.build(:another_kalibro_configuration, id: 2) } | ||
77 | + let!(:kalibro_configuration_attributes) { FactoryGirl.build(:kalibro_configuration_attributes) } | ||
78 | + | ||
79 | + before :each do | ||
80 | + kalibro_configuration.expects(:attributes).returns(kalibro_configuration_attributes) | ||
81 | + another_kalibro_configuration.expects(:attributes).returns(kalibro_configuration_attributes) | ||
82 | + | ||
83 | + KalibroConfiguration.expects(:all).returns([kalibro_configuration, another_kalibro_configuration]) | ||
84 | + end | ||
85 | + | ||
86 | + it 'should return the two kalibro_configurations ordered' do | ||
87 | + expect(KalibroConfiguration.latest(2)).to eq([another_kalibro_configuration, kalibro_configuration]) | ||
88 | + end | ||
89 | + | ||
90 | + context 'when no parameter is passed' do | ||
91 | + it 'should return just the most recent kalibro_configuration' do | ||
92 | + expect(KalibroConfiguration.latest).to eq([another_kalibro_configuration]) | ||
93 | + end | ||
94 | + end | ||
95 | + end | ||
73 | end | 96 | end |
74 | 97 | ||
75 | describe 'destroy' do | 98 | describe 'destroy' do |
@@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
1 | +require 'rails_helper' | ||
2 | + | ||
3 | +describe Repository do | ||
4 | + describe 'class method' do | ||
5 | + describe 'latest' do | ||
6 | + let!(:repository) { FactoryGirl.build(:repository, id: 1) } | ||
7 | + let!(:another_repository) { FactoryGirl.build(:another_repository, id: 2) } | ||
8 | + | ||
9 | + before do | ||
10 | + Repository.expects(:all).returns([repository, another_repository]) | ||
11 | + end | ||
12 | + | ||
13 | + it 'should return the two repositorys ordered' do | ||
14 | + expect(Repository.latest(2)).to eq([another_repository, repository]) | ||
15 | + end | ||
16 | + | ||
17 | + context 'when no parameter is passed' do | ||
18 | + it 'should return just the most recent repository' do | ||
19 | + expect(Repository.latest).to eq([another_repository]) | ||
20 | + end | ||
21 | + end | ||
22 | + end | ||
23 | + end | ||
24 | +end | ||
0 | \ No newline at end of file | 25 | \ No newline at end of file |