BigW Consortium Gitlab

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

3
describe Projects::TreeController do
4
  let(:project) { create(:project, :repository) }
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
      get(:show,
          namespace_id: project.namespace.to_param,
21
          project_id: project,
22
          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

    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' }
67
      it { expect(response).to have_http_status(302) }
68
    end
69
  end
70 71 72 73 74

  describe 'GET show with blob path' do
    render_views

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

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

  describe '#create_dir' do
    render_views

    before do
      post(:create_dir,
           namespace_id: project.namespace.to_param,
97
           project_id: project,
Stan Hu committed
98 99
           id: 'master',
           dir_name: path,
100
           target_branch: target_branch,
Stan Hu committed
101 102 103 104 105 106 107 108 109
           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
110
            to redirect_to("/#{project.path_with_namespace}/tree/#{target_branch}/#{path}")
111
        expect(flash[:notice]).to eq('The directory has been successfully created.')
Stan Hu committed
112 113 114 115 116 117 118 119 120
      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
121
            to redirect_to("/#{project.path_with_namespace}/tree/master")
Stan Hu committed
122 123 124 125
        expect(flash[:alert]).to eq('Directory already exists as a file')
      end
    end
  end
126
end