Commit 48def9164bba6efbe79776d1026005c365534ae1

Authored by Heitor
1 parent 91a6547c

Started implementation of a form for Repository decoupled from Project

Signed-off-by: Daniel Miranda <danielkza2@gmail.com>
app/controllers/repositories_controller.rb
... ... @@ -30,8 +30,11 @@ class RepositoriesController &lt; ApplicationController
30 30 # POST /projects/1/repositories
31 31 # POST /projects/1/repositories.json
32 32 def create
33   - @repository = Repository.new(repository_params)
34   - @repository.project_id = params[:project_id]
  33 + r_params = repository_params
  34 + r_params.require(:project_id)
  35 + r_params[:project_id] = nil if r_params[:project_id].to_i == 0
  36 +
  37 + @repository = Repository.new(r_params)
35 38 respond_to do |format|
36 39 create_and_redir(format)
37 40 end
... ... @@ -104,6 +107,9 @@ private
104 107 @configurations = KalibroConfiguration.public_or_owned_by_user(current_user).map { |conf|
105 108 [conf.name, conf.id]
106 109 }
  110 + @projects = current_user.projects.map do |proj|
  111 + [proj.name, proj.id]
  112 + end if @project_id.nil?
107 113 end
108 114  
109 115 # Duplicated code on create and update actions extracted here
... ...
app/views/repositories/_form.html.erb
... ... @@ -102,6 +102,23 @@
102 102 </div>
103 103 </div>
104 104  
  105 + <div class="form-row">
  106 + <div class="field-container">
  107 + <%= f.label :project_id, Project.model_name.human, class: 'control-label' %>
  108 + <%= f.select( :project_id, @projects, class: 'tooltip-control' ) %>
  109 +
  110 + <div class="form-inline">
  111 + <%= f.check_box :project_id, {id: "no_project_checkbox", class: "checkbox"}, "0", nil %>
  112 + <%= f.label "no_project" %>
  113 + </div>
  114 + </div>
  115 + <div class="help-container">
  116 + <p>
  117 + <%= t('activemodel.hints.repository.project').html_safe %>
  118 + </p>
  119 + </div>
  120 + </div>
  121 +
105 122 </div>
106 123 </div>
107 124 <div class="row margin-left-none" style="margin-top: 20px">
... ... @@ -114,5 +131,14 @@
114 131  
115 132 $(document).on('page:load ready', function() {
116 133 _repository_branch.toggle();
  134 +
  135 + var checkbox = $("#no_project_checkbox");
  136 +
  137 + function toggle() {
  138 + $("#repository_project_id").prop('disabled', checkbox.prop('checked'));
  139 + };
  140 +
  141 + checkbox.on('click', toggle);
  142 + toggle();
117 143 });
118 144 </script>
... ...
features/repository/create.feature
... ... @@ -75,3 +75,19 @@ Scenario: Repository name with whitespaces
75 75 And I set the select field "Configuration" as "Java"
76 76 When I press the Save button
77 77 Then I should see "Name should be unique within project"
  78 +
  79 +@kalibro_configuration_restart @kalibro_processor_restart @javascript
  80 +Scenario: Create repository without project
  81 + Given I am a regular user
  82 + And I am signed in
  83 + And I have a sample configuration with native metrics
  84 + And I am at the New Repository page
  85 + And I fill the Name field with "Kalibro Client"
  86 + And I set the select field "License" as "ISC License (ISC)"
  87 + And I fill the Address field with "https://github.com/mezuro/kalibro_client.git"
  88 + And I set the select field "Type" as "GIT"
  89 + And I set the select field "Process Period" as "1 day"
  90 + And I set the select field "Configuration" as "Java"
  91 + And I set the select field "Project" as "No Project"
  92 + When I press the Save button
  93 + Then I should see the saved repository's content
... ...
features/step_definitions/repository_steps.rb
... ... @@ -66,7 +66,11 @@ Given(/^I wait up for a error processing$/) do
66 66 end
67 67  
68 68 Given(/^I am at the New Repository page$/) do
69   - visit new_project_repository_path(project_id: @project.id)
  69 + if @project
  70 + visit new_project_repository_path(project_id: @project.id)
  71 + else
  72 + visit new_repository_path
  73 + end
70 74 end
71 75  
72 76 Given(/^I am at repository edit page$/) do
... ...