From 7d2fbe6bd880b001857a373500e4fae31d43060a Mon Sep 17 00:00:00 2001
From: Andrew8xx8 <avk@8xx8.ru>
Date: Sun, 24 Mar 2013 19:12:28 +0400
Subject: [PATCH] Project Snippets now part of project

---
 .../projects/application_controller.rb        |   3 +-
 .../projects/snippets_controller.rb           |   2 +
 app/helpers/tab_helper.rb                     |   2 +-
 spec/features/projects/snippets_spec.rb       | 101 ++++++++++++++++++
 4 files changed, 106 insertions(+), 2 deletions(-)
 create mode 100644 spec/features/projects/snippets_spec.rb

diff --git a/app/controllers/projects/application_controller.rb b/app/controllers/projects/application_controller.rb
index 49e514a228e..86e4a7cbd6b 100644
--- a/app/controllers/projects/application_controller.rb
+++ b/app/controllers/projects/application_controller.rb
@@ -1,3 +1,4 @@
 class Projects::ApplicationController < ApplicationController
-
+  before_filter :project
+  before_filter :repository
 end
diff --git a/app/controllers/projects/snippets_controller.rb b/app/controllers/projects/snippets_controller.rb
index 7c3281084f7..4602fbb989a 100644
--- a/app/controllers/projects/snippets_controller.rb
+++ b/app/controllers/projects/snippets_controller.rb
@@ -14,6 +14,8 @@ class Projects::SnippetsController < Projects::ApplicationController
   # Allow destroy snippet
   before_filter :authorize_admin_snippet!, only: [:destroy]
 
+  layout 'project_resource'
+
   respond_to :html
 
   def index
diff --git a/app/helpers/tab_helper.rb b/app/helpers/tab_helper.rb
index d2be4b1a7e6..19aba0f5f6d 100644
--- a/app/helpers/tab_helper.rb
+++ b/app/helpers/tab_helper.rb
@@ -73,7 +73,7 @@ module TabHelper
   end
 
   def project_tab_class
-    return "active" if current_page?(controller: "projects", action: :edit, id: @project)
+    return "active" if current_page?(controller: "/projects", action: :edit, id: @project)
 
     if ['services', 'hooks', 'deploy_keys', 'team_members'].include? controller.controller_name
      "active"
diff --git a/spec/features/projects/snippets_spec.rb b/spec/features/projects/snippets_spec.rb
new file mode 100644
index 00000000000..3c85359ee06
--- /dev/null
+++ b/spec/features/projects/snippets_spec.rb
@@ -0,0 +1,101 @@
+require 'spec_helper'
+
+describe "Project::Snippets" do
+  let(:project) { create(:project) }
+
+  before do
+    login_as :user
+    project.team << [@user, :developer]
+  end
+
+  describe "GET /:project/snippets" do
+    before do
+      @snippet = create(:snippet,
+                        author: @user,
+                        project: project)
+
+      visit project_snippets_path(project)
+      p project_snippets_path(project)
+
+    end
+
+    subject { page }
+
+    it { should have_content(@snippet.title[0..10]) }
+    it { should have_content(@snippet.project.name) }
+
+    describe "Destroy" do
+      before do
+        # admin access to remove snippet
+        @user.users_projects.destroy_all
+        project.team << [@user, :master]
+        visit edit_project_snippet_path(project, @snippet)
+      end
+
+      it "should remove entry" do
+        expect {
+          click_link "destroy_snippet_#{@snippet.id}"
+        }.to change { Snippet.count }.by(-1)
+      end
+    end
+  end
+
+  describe "New project snippet" do
+    before do
+      visit project_snippets_path(project)
+      click_link "New Snippet"
+    end
+
+    it "should open new snippet popup" do
+      page.current_path.should == new_project_snippet_path(project)
+    end
+
+    describe "fill in", js: true do
+      before do
+        fill_in "snippet_title", with: "login function"
+        fill_in "snippet_file_name", with: "test.rb"
+        page.execute_script("editor.insert('def login; end');")
+      end
+
+      it { expect { click_button "Save" }.to change {Snippet.count}.by(1) }
+
+      it "should add new snippet to table" do
+        click_button "Save"
+        page.current_path.should == project_snippet_path(project, Snippet.last)
+        page.should have_content "login function"
+        page.should have_content "test.rb"
+      end
+    end
+  end
+
+  describe "Edit project snippet" do
+    before do
+      @snippet = create(:snippet,
+                        author: @user,
+                        project: project)
+      visit project_snippet_path(project, @snippet)
+      click_link "Edit Snippet"
+    end
+
+    it "should open edit page" do
+      page.current_path.should == edit_project_snippet_path(project, @snippet)
+    end
+
+    describe "fill in" do
+      before do
+        fill_in "snippet_title", with: "login function"
+        fill_in "snippet_file_name", with: "test.rb"
+      end
+
+      it { expect { click_button "Save" }.to_not change {Snippet.count} }
+
+      it "should update snippet fields" do
+        click_button "Save"
+
+        page.current_path.should == project_snippet_path(project, @snippet)
+        page.should have_content "login function"
+        page.should have_content "test.rb"
+      end
+    end
+  end
+end
-- 
GitLab