BigW Consortium Gitlab

tree_controller_spec.rb 3.29 KB
Newer Older
1 2
require 'spec_helper'

3
describe Projects::TreeController do
4
  let(:project) { create(:project) }
5 6 7 8 9
  let(:user)    { create(:user) }

  before do
    sign_in(user)

Dmitriy Zaporozhets committed
10
    project.team << [user, :master]
11 12 13 14 15 16 17
    controller.instance_variable_set(:@project, project)
  end

  describe "GET show" do
    # Make sure any errors accessing the tree in our views bubble up to this spec
    render_views

Vinnie Okada committed
18
    before do
19 20 21 22
      get(:show,
          namespace_id: project.namespace.to_param,
          project_id: project.to_param,
          id: id)
Vinnie Okada committed
23
    end
24 25 26

    context "valid branch, no path" do
      let(:id) { 'master' }
27
      it { is_expected.to respond_with(:success) }
28 29 30
    end

    context "valid branch, valid path" do
Dmitriy Zaporozhets committed
31
      let(:id) { 'master/encoding/' }
32
      it { is_expected.to respond_with(:success) }
33 34 35
    end

    context "valid branch, invalid path" do
36
      let(:id) { 'master/invalid-path/' }
37
      it { is_expected.to respond_with(:not_found) }
38 39 40
    end

    context "invalid branch, valid path" do
Dmitriy Zaporozhets committed
41
      let(:id) { 'invalid-branch/encoding/' }
42
      it { is_expected.to respond_with(:not_found) }
43
    end
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

    context "valid empty branch, invalid path" do
      let(:id) { 'empty-branch/invalid-path/' }
      it { is_expected.to respond_with(:not_found) }
    end

    context "valid empty branch" do
      let(:id) { 'empty-branch' }
      it { is_expected.to respond_with(:success) }
    end

    context "invalid SHA commit ID" do
      let(:id) { 'ff39438/.gitignore' }
      it { is_expected.to respond_with(:not_found) }
    end

    context "valid SHA commit ID" do
      let(:id) { '6d39438' }
      it { is_expected.to respond_with(:success) }
    end

    context "valid SHA commit ID with path" do
      let(:id) { '6d39438/.gitignore' }
      it { expect(response.status).to eq(302) }
    end

70
  end
71 72 73 74 75

  describe 'GET show with blob path' do
    render_views

    before do
76 77 78 79
      get(:show,
          namespace_id: project.namespace.to_param,
          project_id: project.to_param,
          id: id)
80 81 82 83
    end

    context 'redirect to blob' do
      let(:id) { 'master/README.md' }
84 85 86 87 88
      it 'redirects' do
        redirect_url = "/#{project.path_with_namespace}/blob/master/README.md"
        expect(subject).
          to redirect_to(redirect_url)
      end
89 90
    end
  end
Stan Hu committed
91 92 93 94 95 96 97 98 99 100

  describe '#create_dir' do
    render_views

    before do
      post(:create_dir,
           namespace_id: project.namespace.to_param,
           project_id: project.to_param,
           id: 'master',
           dir_name: path,
101
           target_branch: target_branch,
Stan Hu committed
102 103 104 105 106 107 108 109 110
           commit_message: 'Test commit message')
    end

    context 'successful creation' do
      let(:path) { 'files/new_dir'}
      let(:target_branch) { 'master-test'}

      it 'redirects to the new directory' do
        expect(subject).
Douwe Maan committed
111
            to redirect_to("/#{project.path_with_namespace}/tree/#{target_branch}/#{path}")
112
        expect(flash[:notice]).to eq('The directory has been successfully created.')
Stan Hu committed
113 114 115 116 117 118 119 120 121
      end
    end

    context 'unsuccessful creation' do
      let(:path) { 'README.md' }
      let(:target_branch) { 'master'}

      it 'does not allow overwriting of existing files' do
        expect(subject).
Douwe Maan committed
122
            to redirect_to("/#{project.path_with_namespace}/tree/master")
Stan Hu committed
123 124 125 126
        expect(flash[:alert]).to eq('Directory already exists as a file')
      end
    end
  end
127
end