62 lines
1.7 KiB
Ruby
62 lines
1.7 KiB
Ruby
![]() |
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe LearnGitlab do
|
||
|
let_it_be(:current_user) { create(:user) }
|
||
|
let_it_be(:learn_gitlab_project) { create(:project, name: LearnGitlab::PROJECT_NAME) }
|
||
|
let_it_be(:learn_gitlab_board) { create(:board, project: learn_gitlab_project, name: LearnGitlab::BOARD_NAME) }
|
||
|
let_it_be(:learn_gitlab_label) { create(:label, project: learn_gitlab_project, name: LearnGitlab::LABEL_NAME) }
|
||
|
|
||
|
before do
|
||
|
learn_gitlab_project.add_developer(current_user)
|
||
|
end
|
||
|
|
||
|
describe '.available?' do
|
||
|
using RSpec::Parameterized::TableSyntax
|
||
|
|
||
|
where(:project, :board, :label, :expected_result) do
|
||
|
nil | nil | nil | nil
|
||
|
nil | nil | true | nil
|
||
|
nil | true | nil | nil
|
||
|
nil | true | true | nil
|
||
|
true | nil | nil | nil
|
||
|
true | nil | true | nil
|
||
|
true | true | nil | nil
|
||
|
true | true | true | true
|
||
|
end
|
||
|
|
||
|
with_them do
|
||
|
before do
|
||
|
allow_next_instance_of(described_class) do |learn_gitlab|
|
||
|
allow(learn_gitlab).to receive(:project).and_return(project)
|
||
|
allow(learn_gitlab).to receive(:board).and_return(board)
|
||
|
allow(learn_gitlab).to receive(:label).and_return(label)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
subject { described_class.new(current_user).available? }
|
||
|
|
||
|
it { is_expected.to be expected_result }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '.project' do
|
||
|
subject { described_class.new(current_user).project }
|
||
|
|
||
|
it { is_expected.to eq learn_gitlab_project }
|
||
|
end
|
||
|
|
||
|
describe '.board' do
|
||
|
subject { described_class.new(current_user).board }
|
||
|
|
||
|
it { is_expected.to eq learn_gitlab_board }
|
||
|
end
|
||
|
|
||
|
describe '.label' do
|
||
|
subject { described_class.new(current_user).label }
|
||
|
|
||
|
it { is_expected.to eq learn_gitlab_label }
|
||
|
end
|
||
|
end
|