OSDN Git Service

Rspec test repo replaced.\nMerge Requests improved
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Tue, 13 Mar 2012 21:54:49 +0000 (23:54 +0200)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Tue, 13 Mar 2012 21:54:49 +0000 (23:54 +0200)
18 files changed:
app/assets/stylesheets/common.scss
app/controllers/merge_requests_controller.rb
app/models/merge_request.rb
app/views/merge_requests/_form.html.haml
app/views/merge_requests/branch_from.js.haml [new file with mode: 0644]
app/views/merge_requests/branch_to.js.haml [new file with mode: 0644]
config/routes.rb
db/fixtures/test/001_repo.rb
spec/factories.rb
spec/models/note_spec.rb
spec/models/project_spec.rb
spec/requests/admin/admin_projects_spec.rb
spec/requests/merge_requests_spec.rb
spec/requests/projects_spec.rb
spec/requests/projects_tree_spec.rb
spec/requests/repositories_spec.rb
spec/seed_project.tar.gz
spec/support/valid_commit.rb

index a13458a..f6120e6 100644 (file)
@@ -531,7 +531,7 @@ table a code {
 
 /** FLASH message **/
 #flash_container {
-  height:45px;
+  height:50px;
   position:fixed;
   z-index:10001;
   top:0px;
@@ -540,7 +540,7 @@ table a code {
   overflow:hidden;
   background:white;
   cursor:pointer;
-  border-bottom:1px solid #777;
+  border-bottom:1px solid #ccc;
 
   h4 {
     color:#444;
@@ -901,3 +901,23 @@ p.time {
     margin:2px;
   }
 }
+
+.mr_source_commit , 
+.mr_target_commit { 
+  .commit { 
+    list-style:none;
+    margin-top:10px;
+    &:hover { 
+      background:none;
+    }
+  }
+}
+
+.prettyprint { 
+  background-color: #fefbf3;
+  padding: 9px;
+  border: 1px solid rgba(0,0,0,.2);
+  -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 1px 2px rgba(0,0,0,.1);
+  box-shadow: 0 1px 2px rgba(0,0,0,.1);
+}
index bb13fec..d1d19ef 100644 (file)
@@ -106,6 +106,14 @@ class MergeRequestsController < ApplicationController
     end
   end
 
+  def branch_from
+    @commit = project.commit(params[:ref])
+  end
+
+  def branch_to
+    @commit = project.commit(params[:ref])
+  end
+
   protected
 
   def merge_request
index 9787272..cd44a25 100644 (file)
@@ -12,6 +12,7 @@ class MergeRequest < ActiveRecord::Base
   validates_presence_of :author_id
   validates_presence_of :source_branch
   validates_presence_of :target_branch
+  validate :validate_branches
 
   delegate :name,
            :email,
@@ -31,6 +32,13 @@ class MergeRequest < ActiveRecord::Base
   scope :closed, where(:closed => true)
   scope :assigned, lambda { |u| where(:assignee_id => u.id)}
 
+
+  def validate_branches
+    if target_branch == source_branch 
+      errors.add :base, "You can not use same branch for source and target branches"
+    end
+  end
+
   def new?
     today? && created_at == updated_at
   end
index c0440e0..8ec3f63 100644 (file)
     .input= f.text_area :title, :class => "xxlarge", :maxlength => 255, :rows => 5
   .clearfix
     = f.label :source_branch, "From"
-    .input= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
+    .input
+      = f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
+      .mr_source_commit
   .clearfix
     = f.label :target_branch, "To"
-    .input= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
+    .input
+      = f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
+      .mr_target_commit
   .clearfix
     = f.label :assignee_id, "Assign to"
     .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px")
     $('select#merge_request_assignee_id').chosen();
     $('select#merge_request_source_branch').chosen();
     $('select#merge_request_target_branch').chosen();
+
+
+
+    $("#merge_request_source_branch").live("change", function() { 
+      $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: $(this).val() });
+    });
+
+    $("#merge_request_target_branch").live("change", function() { 
+      $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: $(this).val() });
+    });
   });
 
diff --git a/app/views/merge_requests/branch_from.js.haml b/app/views/merge_requests/branch_from.js.haml
new file mode 100644 (file)
index 0000000..3e27801
--- /dev/null
@@ -0,0 +1,2 @@
+:plain
+  $(".mr_source_commit").html("#{escape_javascript(render 'commits/commit', :commit => @commit)}");
diff --git a/app/views/merge_requests/branch_to.js.haml b/app/views/merge_requests/branch_to.js.haml
new file mode 100644 (file)
index 0000000..1ab1f6c
--- /dev/null
@@ -0,0 +1,3 @@
+:plain
+  $(".mr_target_commit").html("#{escape_javascript(render 'commits/commit', :commit => @commit)}");
+
index 77c2038..4cc3a4f 100644 (file)
@@ -101,6 +101,11 @@ Gitlab::Application.routes.draw do
       member do 
         get :diffs
       end
+
+      collection do 
+        get :branch_from
+        get :branch_to
+      end
     end
     
     resources :snippets
index fa50f84..ebf005a 100644 (file)
@@ -10,6 +10,6 @@ Dir.mkdir(repo_dir) unless File.exists?(repo_dir)
 Dir.chdir(repo_dir)
 `tar -xf seed_project.tar.gz`
 3.times do |i|
-`cp -r legit/ legit_#{i}/`
-puts "Unpacked seed repo - tmp/tests/legit_#{i}"
+`cp -r gitlabhq/ gitlabhq_#{i}/`
+puts "Unpacked seed repo - tmp/tests/gitlabhq_#{i}"
 end
index 2ca8d76..ac1ea05 100644 (file)
@@ -2,14 +2,14 @@ require File.join(Rails.root, 'spec', 'factory')
 
 Factory.add(:project, Project) do |obj|
   obj.name = Faker::Internet.user_name
-  obj.path = 'legit'
+  obj.path = 'gitlabhq'
   obj.owner = Factory(:user)
   obj.code = 'LGT'
 end
 
 Factory.add(:public_project, Project) do |obj|
   obj.name = Faker::Internet.user_name
-  obj.path = 'legit'
+  obj.path = 'gitlabhq'
   obj.private_flag = false
   obj.owner = Factory(:user)
   obj.code = 'LGT'
@@ -41,7 +41,7 @@ Factory.add(:merge_request, MergeRequest) do |obj|
   obj.author = Factory :user
   obj.assignee = Factory :user
   obj.source_branch = "master"
-  obj.target_branch = "master"
+  obj.target_branch = "stable"
   obj.closed = false
 end
 
index 70eba5c..f36f12d 100644 (file)
@@ -54,7 +54,7 @@ describe Note do
   describe :authorization do
     before do
       @p1 = project
-      @p2 = Factory :project, :code => "alien", :path => "legit_1"
+      @p2 = Factory :project, :code => "alien", :path => "gitlabhq_1"
       @u1 = Factory :user
       @u2 = Factory :user
       @u3 = Factory :user
index bb76bbc..cb28a7e 100644 (file)
@@ -86,23 +86,22 @@ describe Project do
     let(:project) { Factory :project }
 
     it { project.fresh_commits(3).count.should == 3 }
-    it { project.fresh_commits.first.id.should == "2fb376f61875b58bceee0492e270e9c805294b1a" }
-    it { project.fresh_commits.last.id.should == "0dac878dbfe0b9c6104a87d65fe999149a8d862c" }
+    it { project.fresh_commits.first.id.should == "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a" }
+    it { project.fresh_commits.last.id.should == "f403da73f5e62794a0447aca879360494b08f678" }
   end
 
   describe "commits_between" do
     let(:project) { Factory :project }
 
     subject do
-      commits = project.commits_between("a6d1d4aca0c85816ddfd27d93773f43a31395033",
-                                        "2fb376f61875b58bceee0492e270e9c805294b1a")
+      commits = project.commits_between("3a4b4fb4cde7809f033822a171b9feae19d41fff",
+                                        "8470d70da67355c9c009e4401746b1d5410af2e3")
       commits.map { |c| c.id }
     end
 
-    it { should have(2).elements }
-    it { should include("2fb376f61875b58bceee0492e270e9c805294b1a") }
-    it { should include("4571e226fbcd7be1af16e9fa1e13b7ac003bebdf") }
-    it { should_not include("a6d1d4aca0c85816ddfd27d93773f43a31395033") }
+    it { should have(3).elements }
+    it { should include("f0f14c8eaba69ebddd766498a9d0b0e79becd633") }
+    it { should_not include("bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a") }
   end
 
   describe "Git methods" do
index ceaf724..9a33c69 100644 (file)
@@ -87,7 +87,7 @@ describe "Admin::Projects" do
       visit new_admin_project_path
       fill_in 'Name', :with => 'NewProject'
       fill_in 'Code', :with => 'NPR'
-      fill_in 'Path', :with => 'legit_1'
+      fill_in 'Path', :with => 'gitlabhq_1'
       expect { click_button "Save" }.to change { Project.count }.by(1)
       @project = Project.last
     end
index f7b7e91..f4e25ca 100644 (file)
@@ -52,7 +52,7 @@ describe "MergeRequests" do
       visit new_project_merge_request_path(project)
       fill_in "merge_request_title", :with => "Merge Request Title" 
       select "master", :from => "merge_request_source_branch"
-      select "master", :from => "merge_request_target_branch"
+      select "stable", :from => "merge_request_target_branch"
       select @user.name, :from => "merge_request_assignee_id"
       click_button "Save"
     end
index e6b6f19..f3be807 100644 (file)
@@ -134,7 +134,7 @@ describe "Projects" do
       visit edit_project_path(@project)
 
       fill_in 'Name', :with => 'Awesome'
-      fill_in 'Path', :with => 'legit'
+      fill_in 'Path', :with => 'gitlabhq'
       fill_in 'Description', :with => 'Awesome project'
       click_button "Save"
       @project = @project.reload
index fe4f81b..acc4f0b 100644 (file)
@@ -57,7 +57,7 @@ describe "Projects" do
         @project = Factory :project
         @project.add_access(@user, :read)
 
-        visit tree_project_ref_path(@project, @project.root_ref, :path => ".rvmrc")
+        visit tree_project_ref_path(@project, @project.root_ref, :path => "Gemfile")
       end
 
       it "should be correct path" do
@@ -65,7 +65,7 @@ describe "Projects" do
       end
 
       it "should contain file view" do
-        page.should have_content("rvm use 1.9.2@legit")
+        page.should have_content("rubygems.org")
       end
     end
   end
index 3fb5371..1bf4c8d 100644 (file)
@@ -42,7 +42,7 @@ describe "Repository" do
 
     it "should have link to repo activities" do
       page.should have_content("Tags")
-      page.should have_content("No tags")
+      page.should have_content("v1.2.1")
     end
   end
 end
index 6474c32..3ffafed 100644 (file)
Binary files a/spec/seed_project.tar.gz and b/spec/seed_project.tar.gz differ
index a4d3496..8094b67 100644 (file)
@@ -1,25 +1,15 @@
 module ValidCommit
-  ID = "eaffbe556ec3a8dc84ef15892a9f12d84dde7e1d"
-  MESSAGE = "style"
+  ID = "8470d70da67355c9c009e4401746b1d5410af2e3"
+  MESSAGE = "notes controller refactored"
   AUTHOR_FULL_NAME = "Dmitriy Zaporozhets"
 
-  FILES = [".gitignore", ".rspec", ".rvmrc", "Gemfile", "Gemfile.lock", "LICENSE", "README.rdoc", "Rakefile", "app", "config.ru", "config", "db", "doc", "lib", "log", "public", "script", "spec", "vendor"]
-  FILES_COUNT = 19
+  FILES = [".foreman", ".gitignore", ".rails_footnotes", ".rspec", ".travis.yml", "CHANGELOG", "Gemfile", "Gemfile.lock", "LICENSE", "Procfile", "Procfile.production", "README.md", "Rakefile", "VERSION", "app", "config.ru", "config", "db", "doc", "lib", "log", "public", "resque.sh", "script", "spec", "vendor"]
+  FILES_COUNT = 26
 
   C_FILE_PATH = "app/models"
-  C_FILES = [".gitkeep", "project.rb", "user.rb"]
+  C_FILES = [".gitkeep", "ability.rb", "commit.rb", "issue.rb", "key.rb", "mailer_observer.rb", "merge_request.rb", "note.rb", "project.rb", "protected_branch.rb", "repository.rb", "snippet.rb", "tree.rb", "user.rb", "users_project.rb", "web_hook.rb", "wiki.rb"]
 
-  BLOB_FILE = <<-blob
-<div class="span-14 colborder">
-  <h2>Tree / <%= link_to "Commits", project_commits_path(@project) %></h2>
-  <%= render :partial => "tree", :locals => {:repo => @repo, :commit => @commit, :tree => @commit.tree} %>
-</div>
-
-<div class="span-8 right">
-  <%= render "side_panel" %>
-</div>
-blob
-
-  BLOB_FILE_PATH = "app/views/projects/show.html.erb"
+  BLOB_FILE = %{%h3= @key.title\n%hr\n%pre= @key.key\n.actions\n  = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => \"btn danger delete-key\"\n\n\n}
+  BLOB_FILE_PATH = "app/views/keys/show.html.haml"
 end