Create specs for users/edit.html.erb (#6739)

* No longer create identity in User factory

* Create view specs for users/edit.html.erb

* Update broken specs

* Make identities transient an explicit array
This commit is contained in:
Mac Siri 2020-03-20 11:29:20 -04:00 committed by GitHub
parent 325389467e
commit 0195d1be5b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 43 additions and 11 deletions

View file

@ -22,12 +22,14 @@ FactoryBot.define do
signup_cta_variant { "navbar_basic" }
email_digest_periodic { false }
after(:create) do |user|
create(:identity, user_id: user.id)
end
trait :with_identity do
transient { identities { %i[github twitter] } }
trait :two_identities do
after(:create) { |user| create(:identity, user_id: user.id, provider: "twitter") }
after(:create) do |user, options|
options.identities.each do |provider|
create(:identity, user: user, provider: provider)
end
end
end
trait :super_admin do

View file

@ -106,7 +106,7 @@ RSpec.describe BadgeRewarder, type: :labor do
describe "::award_contributor_badges_from_github" do
let(:my_ocktokit_client) { instance_double(Octokit::Client) }
let(:user) { create(:user) }
let(:user) { create(:user, :with_identity, identities: ["github"]) }
let(:stubbed_github_commit) do
[OpenStruct.new(author: OpenStruct.new(id: user.identities.first.uid))]

View file

@ -1,7 +1,7 @@
require "rails_helper"
RSpec.describe GithubRepo, type: :model do
let(:user) { create(:user) }
let(:user) { create(:user, :with_identity, identities: ["github"]) }
let(:repo) { build(:github_repo, user_id: user.id) }
it { is_expected.to validate_presence_of(:name) }

View file

@ -1,7 +1,7 @@
require "rails_helper"
RSpec.describe "GithubRepos", type: :request do
let(:user) { create(:user) }
let(:user) { create(:user, :with_identity, identities: ["github"]) }
let(:repo) { build(:github_repo, user_id: user.id) }
let(:my_octokit_client) { instance_double(Octokit::Client) }
let(:stubbed_github_repos) do

View file

@ -1,7 +1,7 @@
require "rails_helper"
RSpec.describe "internal/users", type: :request do
let!(:user) { create(:user) }
let!(:user) { create(:user, :with_identity, identities: ["github"]) }
let(:admin) { create(:user, :super_admin) }
before do

View file

@ -221,7 +221,7 @@ RSpec.describe "UserSettings", type: :request do
describe "DELETE /users/remove_association" do
context "when user has two identities" do
let(:user) { create(:user, :two_identities) }
let(:user) { create(:user, :with_identity, identities: %w[github twitter]) }
before { sign_in user }

View file

@ -1,7 +1,7 @@
require "rails_helper"
RSpec.describe Users::Delete, type: :service do
let(:user) { create(:user) }
let(:user) { create(:user, :with_identity, identities: ["github"]) }
it "deletes user" do
described_class.call(user)

View file

@ -0,0 +1,30 @@
require "rails_helper"
RSpec.describe "users/edit", type: :view do
let(:user) { create(:user) }
context "when on profile edit" do
before do
assign(:tab, "profile")
assign(:user, user)
assign(:tab_list, user.settings_tab_list)
allow(view).to receive(:current_user).and_return(user)
end
it "asks user to connect with github when it's missing" do
create(:identity, user: user, provider: "twitter")
render
expect(rendered).to match(/CONNECT GITHUB ACCOUNT/)
expect(rendered).not_to match(/CONNECT TWITTER ACCOUNT/)
end
it "asks user to connect with twitter if it's missing" do
create(:identity, user: user, provider: "github")
render
expect(rendered).to match(/CONNECT TWITTER ACCOUNT/)
expect(rendered).not_to match(/CONNECT GITHUB ACCOUNT/)
end
end
end