Skip to content

[Rails5] Extraction of some helper methods to rails-controller-testing

Per the upgrade guide to Rails 5..

assigns and assert_template have been extracted to the rails-controller-testing gem. To continue using these methods in your controller tests, add gem 'rails-controller-testing' to your Gemfile.

We have many instances of using assigns within the specs.

Targets
    Occurrences of 'assigns' in Directory /Users/ddavison/workspace/gdk-ce/gitlab/spec
Found Occurrences  (301 usages found)
    Unclassified occurrence  (240 usages found)
        gitlab  (240 usages found)
            spec/controllers  (42 usages found)
                groups_controller_spec.rb  (12 usages found)
                    47 expect(assigns(:events)).not_to be_empty
                    58 expect(assigns(:badge_api_endpoint)).not_to be_nil
                    109 expect(assigns(:projects).limit_value).to be_nil
                    219 expect(assigns(:issues)).to eq [issue_2, issue_1]
                    224 expect(assigns(:issues)).to eq [issue_2, issue_1]
                    237 expect(assigns(:issues)).to eq([issue_1])
                    243 expect(assigns(:issues)).to eq([issue_1])
                    249 expect(assigns(:issues)).to eq([issue_1])
                    269 expect(assigns(:merge_requests)).to eq [merge_request_2, merge_request_1]
                    274 expect(assigns(:merge_requests)).to eq [merge_request_2, merge_request_1]
                    325 expect(assigns(:group).errors).not_to be_empty
                    326 expect(assigns(:group).path).not_to eq('new_path')
                help_controller_spec.rb  (4 usages found)
                    17 expect(assigns[:help_index]).to eq '[API](/api/README.md)'
                    27 expect(assigns[:help_index]).to eq '[API](/help/api/README.md)'
                    37 expect(assigns[:help_index]).to eq '[external](https://some.external.link)'
                    50 expect(assigns[:markdown]).not_to be_empty
                projects_controller_spec.rb  (8 usages found)
                    75 expect(assigns(:notification_setting)).to be_nil
                    83 expect(assigns(:notification_setting).level).to eq("global")
                    96 expect(assigns(:notification_setting).level).to eq("watch")
                    122 expect(assigns(:issuable_meta_data)).not_to be_nil
                    296 expect(assigns(:badge_api_endpoint)).not_to be_nil
                    321 assigns(:repository).path
                    679 expect(assigns(:project)).to eq(public_project)
                    688 expect(assigns(:project)).to eq(public_project)
                search_controller_spec.rb  (4 usages found)
                    16 expect(assigns[:search_objects].first).to eq note
                    57 expect(assigns[:search_objects].count).to eq(0)
                    67 expect(assigns[:search_objects].count).to eq(0)
                    76 expect(assigns[:search_objects].count).to eq(0)
                snippets_controller_spec.rb  (8 usages found)
                    80 expect(assigns(:snippet)).to eq(personal_snippet)
                    106 expect(assigns(:snippet)).to eq(personal_snippet)
                    131 expect(assigns(:snippet)).to eq(personal_snippet)
                    140 expect(assigns(:snippet)).to eq(personal_snippet)
                    445 expect(assigns(:snippet)).to eq(personal_snippet)
                    477 expect(assigns(:snippet)).to eq(personal_snippet)
                    502 expect(assigns(:snippet)).to eq(personal_snippet)
                    529 expect(assigns(:snippet)).to eq(personal_snippet)
                users_controller_spec.rb  (6 usages found)
                    92 expect(assigns(:events)).not_to be_empty
                    101 expect(assigns(:events)).to be_empty
                    109 expect(assigns(:events)).to be_empty
                    165 expect(assigns(:contributions_calendar).projects.count).to eq(2)
                    183 expect(assigns(:calendar_date)).to eq(Date.parse('2014-07-31'))
                    193 expect(assigns[:events]).not_to be_empty
            spec/controllers/admin  (8 usages found)
                applications_controller_spec.rb  (4 usages found)
                    16 expect(assigns[:scopes]).to be_kind_of(Doorkeeper::OAuth::Scopes)
                    25 expect(assigns[:scopes]).to be_kind_of(Doorkeeper::OAuth::Scopes)
                    49 expect(assigns[:scopes]).to be_kind_of(Doorkeeper::OAuth::Scopes)
                    67 expect(assigns[:scopes]).to be_kind_of(Doorkeeper::OAuth::Scopes)
                health_check_controller_spec.rb  (1 usage found)
                    14 expect(assigns[:errors]).not_to be_nil
                users_controller_spec.rb  (3 usages found)
                    135 expect(assigns[:user].errors).to contain_exactly("Email is invalid")
                    193 expect(assigns[:user].errors).to contain_exactly(a_string_matching(/too short/))
                    212 expect(assigns[:user].errors).to contain_exactly(a_string_matching(/doesn't match/))
            spec/controllers/concerns  (8 usages found)
                group_tree_spec.rb  (6 usages found)
                    28 expect(assigns(:groups)).to contain_exactly(other_group)
                    37 expect(assigns(:groups)).to contain_exactly(group)
                    45 expect(assigns(:groups)).to contain_exactly(subgroup)
                    53 expect(assigns(:groups)).to contain_exactly(group, subgroup)
                    64 expect(assigns(:groups)).to contain_exactly(parent, subgroup)
                    75 expect(assigns(:groups)).to contain_exactly(group, subgroup, search_result)
                lfs_request_spec.rb  (2 usages found)
                    39 expect(assigns(:storage_project)).to eq(project)
                    47 expect(assigns(:storage_project)).to eq(project)
            spec/controllers/dashboard  (3 usages found)
                groups_controller_spec.rb  (2 usages found)
                    21 expect(assigns(:groups)).to contain_exactly(member_of_group)
                    40 expect(assigns(:groups)).to contain_exactly(*all_groups)
                todos_controller_spec.rb  (1 usage found)
                    63 expect(assigns(:todos).current_page).to eq(last_page)
            spec/controllers/explore  (3 usages found)
                groups_controller_spec.rb  (1 usage found)
                    21 expect(assigns(:groups)).to contain_exactly(member_of_group, public_group)
                projects_controller_spec.rb  (2 usages found)
                    17 expect(assigns(:projects)).to eq [project2, project1]
                    23 expect(assigns(:projects)).to eq [project1, project2]
            spec/controllers/groups  (11 usages found)
                avatars_controller_spec.rb  (1 usage found)
                    14 @group = assigns(:group)
                children_controller_spec.rb  (10 usages found)
                    21 expect(assigns(:children)).to contain_exactly(public_project, private_project)
                    31 expect(assigns(:children)).to contain_exactly(public_project, private_project)
                    40 expect(assigns(:children)).to contain_exactly(public_project)
                    59 expect(assigns(:children)).to contain_exactly(public_subgroup, private_subgroup, public_project, private_project)
                    70 expect(assigns(:children)).to contain_exactly(public_subgroup, private_subgroup, public_project, private_project)
                    79 expect(assigns(:children)).to contain_exactly(public_subgroup, public_project)
                    281 expect(assigns(:children)).to contain_exactly(*first_page_projects)
                    287 expect(assigns(:children)).to contain_exactly(other_project)
                    299 expect(assigns(:children)).to contain_exactly(*first_page_subgroups)
                    305 expect(assigns(:children)).to contain_exactly(other_subgroup, *next_page_projects.take(per_page - 1))
            spec/controllers/import  (23 usages found)
                bitbucket_controller_spec.rb  (5 usages found)
                    60 expect(assigns(:already_added_projects)).to eq([@project])
                    61 expect(assigns(:repos)).to eq([@repo])
                    62 expect(assigns(:incompatible_repos)).to eq([])
                    71 expect(assigns(:already_added_projects)).to eq([@project])
                    72 expect(assigns(:repos)).to eq([])
                bitbucket_server_controller_spec.rb  (3 usages found)
                    133 expect(assigns(:already_added_projects)).to eq([created_project])
                    134 expect(assigns(:repos)).to eq([@repo])
                    135 expect(assigns(:incompatible_repos)).to eq([@invalid_repo])
                fogbugz_controller_spec.rb  (4 usages found)
                    24 expect(assigns(:already_added_projects)).to eq([@project])
                    25 expect(assigns(:repos)).to eq([@repo])
                    34 expect(assigns(:already_added_projects)).to eq([@project])
                    35 expect(assigns(:repos)).to eq([])
                gitlab_controller_spec.rb  (4 usages found)
                    44 expect(assigns(:already_added_projects)).to eq([@project])
                    45 expect(assigns(:repos)).to eq([@repo])
                    54 expect(assigns(:already_added_projects)).to eq([@project])
                    55 expect(assigns(:repos)).to eq([])
                google_code_controller_spec.rb  (7 usages found)
                    35 expect(assigns(:already_added_projects)).to eq([@project])
                    36 expect(assigns(:repos)).to eq([@repo])
                    37 expect(assigns(:incompatible_repos)).to eq([])
                    46 expect(assigns(:already_added_projects)).to eq([@project])
                    47 expect(assigns(:repos)).to eq([])
                    55 expect(assigns(:repos)).to be_empty
                    56 expect(assigns(:incompatible_repos)).to eq([@repo])
            spec/controllers/ldap  (1 usage found)
                omniauth_callbacks_controller_spec.rb  (1 usage found)
                    24 expect(assigns[:user].remember_me).to eq '1'
            spec/controllers/profiles  (11 usages found)
                avatars_controller_spec.rb  (1 usage found)
                    13 @user = assigns(:user)
                personal_access_tokens_controller_spec.rb  (4 usages found)
                    48 expect(assigns(:active_personal_access_tokens)).to include(active_personal_access_token)
                    52 expect(assigns(:inactive_personal_access_tokens)).to include(inactive_personal_access_token)
                    56 expect(assigns(:active_personal_access_tokens)).not_to include(impersonation_personal_access_token)
                    57 expect(assigns(:inactive_personal_access_tokens)).not_to include(impersonation_personal_access_token)
                preferences_controller_spec.rb  (1 usage found)
                    20 expect(assigns[:user]).to eq user
                two_factor_auths_controller_spec.rb  (5 usages found)
                    26 expect(assigns[:qr_code]).to eq code
                    55 expect(assigns[:codes]).to match_array %w(a b c)
                    71 expect(assigns[:error]).to eq 'Invalid pin code'
                    79 expect(assigns[:qr_code]).to eq code
                    96 expect(assigns[:codes]).to match_array %w(a b c)
            spec/controllers/projects  (101 usages found)
                boards_controller_spec.rb  (2 usages found)
                    20 expect(assigns(:boards_endpoint)).to eq project_boards_path(project)
                    96 expect(assigns(:boards_endpoint)).to eq project_boards_path(project)
                clusters_controller_spec.rb  (8 usages found)
                    27 expect(assigns(:clusters)).to match_array([enabled_cluster, disabled_cluster])
                    41 expect(assigns(:clusters).current_page).to eq(last_page)
                    54 expect(assigns(:clusters)).to eq([])
                    99 expect(assigns(:authorize_url)).to include(key)
                    112 expect(assigns(:authorize_url)).to be_nil
                    124 expect(assigns(:gcp_cluster)).to be_an_instance_of(Clusters::Cluster)
                    152 expect(assigns(:user_cluster)).to be_an_instance_of(Clusters::Cluster)
                    407 expect(assigns(:cluster)).to eq(cluster)
                commit_controller_spec.rb  (11 usages found)
                    120 expect(assigns(:new_diff_note_attrs)).to eq({
                    139 expect(assigns(:branches)).to include('master', 'feature_conflict')
                    140 expect(assigns(:branches_limit_exceeded)).to be_falsey
                    141 expect(assigns(:tags)).to include('v1.1.0')
                    142 expect(assigns(:tags_limit_exceeded)).to be_falsey
                    155 expect(assigns(:branches)).to eq([])
                    156 expect(assigns(:branches_limit_exceeded)).to be_truthy
                    157 expect(assigns(:tags)).to eq([])
                    158 expect(assigns(:tags_limit_exceeded)).to be_truthy
                    279 expect(assigns(:diff_notes_disabled)).to be_falsey
                    280 expect(assigns(:new_diff_note_attrs)).to eq(noteable_type: 'Commit',
                compare_controller_spec.rb  (9 usages found)
                    51 diff_file = assigns(:diffs).diff_files.first
                    53 expect(assigns(:commits).length).to be >= 1
                    69 expect(assigns(:diffs).diff_files.first).not_to be_nil
                    70 expect(assigns(:commits).length).to be >= 1
                    83 expect(assigns(:diffs).diff_files.to_a).to eq([])
                    84 expect(assigns(:commits)).to eq([])
                    96 expect(assigns(:diffs)).to eq([])
                    97 expect(assigns(:commits)).to eq([])
                    146 expect(assigns(:diff_notes_disabled)).to be_truthy
                cycle_analytics_controller_spec.rb  (2 usages found)
                    20 expect(assigns(:cycle_analytics_no_data)).to eq(true)
                    39 expect(assigns(:cycle_analytics_no_data)).to eq(false)
                forks_controller_spec.rb  (5 usages found)
                    28 expect(assigns[:forks]).to be_present
                    40 expect(assigns[:forks]).to be_blank
                    52 expect(assigns[:forks]).to be_blank
                    64 expect(assigns[:forks]).to be_present
                    76 expect(assigns[:forks]).to be_present
                issues_controller_spec.rb  (19 usages found)
                    91 expect(assigns(:issues).current_page).to eq(last_page)
                    115 expect(assigns(:issues).size).to eq(2)
                    137 expect(assigns(:issue)).to be_a_new(Issue)
                    147 expect(assigns(:issue).title).not_to be_empty
                    148 expect(assigns(:issue).description).not_to be_empty
                    156 expect(assigns(:issue).title).not_to be_empty
                    157 expect(assigns(:issue).description).not_to be_empty
                    379 expect(assigns(:issues)).to eq [issue]
                    386 expect(assigns(:issues)).to eq [issue]
                    395 expect(assigns(:issues)).to eq [issue]
                    402 expect(assigns(:issues)).to include unescaped_parameter_value
                    403 expect(assigns(:issues)).not_to include request_forgery_timing_attack
                    410 expect(assigns(:issues)).not_to include unescaped_parameter_value
                    411 expect(assigns(:issues)).to include request_forgery_timing_attack
                    420 expect(assigns(:issues)).to include unescaped_parameter_value
                    421 expect(assigns(:issues)).to include request_forgery_timing_attack
                    428 expect(assigns(:issues)).to include unescaped_parameter_value
                    429 expect(assigns(:issues)).to include request_forgery_timing_attack
                    729 expect(assigns(:issue).description).to eq('Manually entered description')
                jobs_controller_spec.rb  (7 usages found)
                    27 expect(assigns(:builds).first.status).to eq('pending')
                    40 expect(assigns(:builds).first.status).to eq('running')
                    53 expect(assigns(:builds).first.status).to eq('success')
                    69 expect(assigns(:builds).current_page).to eq(last_page)
                    116 expect(assigns(:build).id).to eq(job.id)
                    120 builds = assigns(:builds).map(&:id)
                    898 expect(assigns(:build).id).to eq(job.id)
                labels_controller_spec.rb  (5 usages found)
                    39 expect(assigns(:prioritized_labels)).not_to include(group_label_3, group_label_4, label_4, label_5)
                    43 expect(assigns(:prioritized_labels)).to eq [group_label_2, label_1, label_3, group_label_1, label_2]
                    51 expect(assigns(:labels)).to eq [group_label_3, group_label_4, label_4, label_5]
                    57 expect(assigns(:labels)).not_to include(group_label_2, label_1, label_3, group_label_1, label_2)
                    65 expect(assigns(:labels)).not_to include(group_label_3, group_label_4)
                merge_requests_controller_spec.rb  (5 usages found)
                    38 expect(assigns(:labels)).not_to be_nil
                    168 expect(assigns(:merge_requests).current_page).to eq(last_page)
                    192 expect(assigns(:merge_requests)).to include(merge_request)
                    205 expect(assigns(:merge_requests)).to include(merge_request)
                    887 expect(assigns(:noteable)).not_to be_nil
                milestones_controller_spec.rb  (6 usages found)
                    54 milestones = assigns(:milestones)
                    65 page_1_milestones = assigns(:milestones)
                    69 page_2_milestones = assigns(:milestones)
                    73 page_3_milestones = assigns(:milestones)
                    97 milestones = assigns(:milestones)
                    114 milestones = assigns(:milestones)
                pipeline_schedules_controller_spec.rb  (7 usages found)
                    41 expect(assigns(:schedules)).to include(pipeline_schedule)
                    42 expect(assigns(:schedules)).not_to include(inactive_pipeline_schedule)
                    63 expect(assigns(:schedule)).to be_a_new(Ci::PipelineSchedule)
                    114 expect(assigns(:schedule).errors['variables']).not_to be_empty
                    181 expect(assigns(:schedule).errors['variables']).not_to be_empty
                    222 expect(assigns(:schedule).errors['variables']).not_to be_empty
                    342 expect(assigns(:schedule)).to eq(pipeline_schedule)
                releases_controller_spec.rb  (2 usages found)
                    21 release = assigns(:release)
                    29 release = assigns(:release)
                repositories_controller_spec.rb  (4 usages found)
                    33 expect(assigns(:ref)).to eq("master")
                    47 expect(assigns(:ref)).to eq('feature')
                    55 expect(assigns(:ref)).to eq('feature')
                    63 expect(assigns(:ref)).to eq('feature')
                snippets_controller_spec.rb  (6 usages found)
                    31 expect(assigns(:snippets).current_page).to eq(last_page)
                    43 expect(assigns(:snippets)).not_to include(project_snippet)
                    56 expect(assigns(:snippets)).to include(project_snippet)
                    69 expect(assigns(:snippets)).to include(project_snippet)
                    331 expect(assigns(:snippet)).to eq(project_snippet)
                    344 expect(assigns(:snippet)).to eq(project_snippet)
                tags_controller_spec.rb  (3 usages found)
                    14 expect(assigns(:tags).map(&:name)).to eq(['v1.1.0', 'v1.0.0'])
                    18 expect(assigns(:releases)).to include(release)
                    19 expect(assigns(:releases)).not_to include(invalid_release)
            spec/controllers/projects/ci  (3 usages found)
                lints_controller_spec.rb  (3 usages found)
                    28 expect(assigns(:project)).to eq(project)
                    87 expect(assigns(:project)).to eq(project)
                    107 expect(assigns[:error]).to eq('jobs:rubocop config contains unknown keys: scriptt')
            spec/controllers/projects/merge_requests  (13 usages found)
                creations_controller_spec.rb  (11 usages found)
                    59 total = assigns(:total_commit_count)
                    60 expect(assigns(:commits)).to be_an Array
                    62 expect(assigns(:hidden_commit_count)).to be > 0
                    73 total = assigns(:total_commit_count)
                    74 expect(assigns(:commits)).to be_an Array
                    76 expect(assigns(:hidden_commit_count)).to eq(0)
                    91 expect(assigns[:diffs]).to be_nil
                    129 expect(assigns(:diff_notes_disabled)).to be_truthy
                    153 expect(assigns(:diff_notes_disabled)).to be_truthy
                    192 expect(assigns(:commit)).not_to be_nil
                    205 expect(assigns(:commit)).to be_nil
                diffs_controller_spec.rb  (2 usages found)
                    91 expect(assigns(:diff_notes_disabled)).to be_falsey
                    92 expect(assigns(:new_diff_note_attrs)).to eq(noteable_type: 'MergeRequest',
            spec/controllers/projects/settings  (1 usage found)
                ci_cd_controller_spec.rb  (1 usage found)
                    34 expect(assigns(:assignable_runners)).to contain_exactly(project_runner)
            spec/controllers/users  (1 usage found)
                terms_controller_spec.rb  (1 usage found)
                    94 expect(assigns(:current_user)).to be_nil
            spec/fixtures/trace  (2 usages found)
                sample_trace  (2 usages found)
                    1675       assigns whether or not a group has children
                    1677       assigns events for all the projects in the group
            spec/javascripts/sidebar  (1 usage found)
                sidebar_assignees_spec.js  (1 usage found)
                    46 vm.assignSelf();
            spec/support/controllers  (5 usages found)
                githubish_import_controller_shared_examples.rb  (5 usages found)
                    64 expect(assigns(:already_added_projects)).to eq([project])
                    65 expect(assigns(:repos)).to eq([repo, org_repo])
                    67 expect(assigns(key)).to eq(value)
                    77 expect(assigns(:already_added_projects)).to eq([project])
                    78 expect(assigns(:repos)).to eq([])
            spec/support/shared_examples  (3 usages found)
                issuables_list_metadata_shared_examples.rb  (1 usage found)
                    29 meta_data = assigns(:issuable_meta_data)
                mentionable_shared_examples.rb  (1 usage found)
                    5 # - let(:set_mentionable_text) { lambda { |txt| "block that assigns txt to the subject's mentionable_text" } }
                update_invalid_issuable.rb  (1 usage found)
                    32 expect(assigns[:conflict]).to be_truthy

To continue using these methods in your controller tests, add gem 'rails-controller-testing' to your Gemfile.

If you are using Rspec for testing, please see the extra configuration required in the gem's documentation.