From b40af82b6643947551463809d82f20eda5520e2d Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Wed, 29 Jul 2020 04:31:01 -0500 Subject: [PATCH] Flaky Spec Fix:Remove let_it_be Test Prof Helper (#9556) * Flaky Spec Fix:Remove let_it_be Test Prof Helper * Spec cleanup and fixes --- spec/decorators/comment_decorator_spec.rb | 2 +- spec/decorators/listing_decorator_spec.rb | 2 +- .../decorators/notification_decorator_spec.rb | 4 +-- .../decorators/organization_decorator_spec.rb | 2 +- spec/decorators/sponsorship_decorator_spec.rb | 2 +- spec/helpers/listing_helper_spec.rb | 4 +-- spec/helpers/social_link_helper_spec.rb | 2 +- spec/labor/badge_rewarder_spec.rb | 4 +-- spec/models/article_spec.rb | 2 +- spec/models/badge_achievement_spec.rb | 3 +- spec/models/badge_spec.rb | 2 +- spec/models/buffer_update_spec.rb | 2 +- spec/models/chat_channel_spec.rb | 2 +- spec/models/collection_spec.rb | 8 ++--- spec/models/credit_spec.rb | 16 ++++++---- spec/models/display_ad_event_spec.rb | 6 ++-- spec/models/display_ad_spec.rb | 4 +-- spec/models/listing_spec.rb | 4 +-- spec/models/message_spec.rb | 2 +- spec/models/notification_subscription_spec.rb | 6 ++-- spec/models/podcast_episode_spec.rb | 4 +-- spec/models/poll_option_spec.rb | 6 ++-- spec/models/poll_skip_spec.rb | 6 ++-- spec/models/poll_spec.rb | 4 +-- spec/models/profile_pin_spec.rb | 11 ++++--- spec/models/rating_vote_spec.rb | 2 +- spec/models/reaction_spec.rb | 8 ++--- spec/models/user_spec.rb | 6 ++-- spec/models/webhook/event_spec.rb | 4 +-- spec/policies/reaction_policy_spec.rb | 4 +-- .../queries/internal/moderators_query_spec.rb | 12 +++---- spec/queries/internal/users_query_spec.rb | 12 +++---- spec/rails_helper.rb | 3 -- spec/requests/api/v0/articles_spec.rb | 13 +++++--- spec/requests/api/v0/comments_spec.rb | 10 +++--- spec/requests/api/v0/listings_spec.rb | 6 ++-- spec/requests/api/v0/users_spec.rb | 4 +-- .../articles/video_player_show_spec.rb | 4 +-- spec/requests/events_spec.rb | 3 +- spec/requests/internal/configs_spec.rb | 8 ++--- spec/requests/internal/listings_spec.rb | 4 +-- spec/requests/listings_spec.rb | 4 +-- spec/requests/notifications_spec.rb | 8 ++--- spec/requests/pages_spec.rb | 6 ++-- spec/requests/reactions_spec.rb | 6 ++-- spec/requests/stories_index_spec.rb | 2 +- spec/requests/stories_show_spec.rb | 6 ++-- spec/requests/user/user_show_spec.rb | 2 +- .../welcome_notification/generator_spec.rb | 18 +++++------ spec/services/notifications/update_spec.rb | 10 +++--- spec/services/users/delete_spec.rb | 2 +- spec/support/initializers/test_prof.rb | 19 ----------- .../moderator_moderates_an_article.rb | 6 ++-- .../articles/user_edits_an_article_spec.rb | 6 ++-- spec/tasks/broadcasts_spec.rb | 2 +- spec/uploaders/article_image_uploader_spec.rb | 10 +++--- spec/uploaders/badge_uploader_spec.rb | 10 +++--- spec/uploaders/cover_image_uploader_spec.rb | 10 +++--- spec/uploaders/profile_image_uploader_spec.rb | 12 +++---- .../articles/score_calc_worker_spec.rb | 8 +++-- ...e_main_image_background_hex_worker_spec.rb | 2 +- .../send_email_notification_worker_spec.rb | 2 +- .../comments/calculate_score_worker_spec.rb | 4 +-- .../create_first_reaction_worker_spec.rb | 4 +-- .../send_email_notification_worker_spec.rb | 2 +- spec/workers/data_update_worker_spec.rb | 6 ++-- .../create_chat_channel_worker_spec.rb | 6 ++-- .../send_email_notification_worker_spec.rb | 4 +-- .../metrics/record_daily_usage_worker_spec.rb | 32 +++++++++++++------ .../record_field_test_event_worker_spec.rb | 2 +- 70 files changed, 213 insertions(+), 211 deletions(-) delete mode 100644 spec/support/initializers/test_prof.rb diff --git a/spec/decorators/comment_decorator_spec.rb b/spec/decorators/comment_decorator_spec.rb index 808fb5869..4a0965dc6 100644 --- a/spec/decorators/comment_decorator_spec.rb +++ b/spec/decorators/comment_decorator_spec.rb @@ -2,7 +2,7 @@ require "rails_helper" RSpec.describe CommentDecorator, type: :decorator do context "with serialization" do - let_it_be_readonly(:comment) { create(:comment).decorate } + let!(:comment) { create(:comment).decorate } it "serializes both the decorated object IDs and decorated methods" do expected_result = { "id" => comment.id, "published_timestamp" => comment.published_timestamp } diff --git a/spec/decorators/listing_decorator_spec.rb b/spec/decorators/listing_decorator_spec.rb index 6c9e30dfc..d5bc19c05 100644 --- a/spec/decorators/listing_decorator_spec.rb +++ b/spec/decorators/listing_decorator_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe ListingDecorator, type: :decorator do - let_it_be_readonly(:category) { create(:listing_category) } + let(:category) { create(:listing_category) } let(:decorated_listing) do build(:listing, listing_category: category).decorate end diff --git a/spec/decorators/notification_decorator_spec.rb b/spec/decorators/notification_decorator_spec.rb index 71afb7746..7c85e2e0d 100644 --- a/spec/decorators/notification_decorator_spec.rb +++ b/spec/decorators/notification_decorator_spec.rb @@ -1,10 +1,10 @@ require "rails_helper" RSpec.describe NotificationDecorator, type: :decorator do - let(:notification) { build(:notification) } + let!(:notification) { build(:notification) } context "with serialization" do - let_it_be_readonly(:notification) { create(:notification).decorate } + let(:notification) { create(:notification).decorate } it "serializes both the decorated object IDs and decorated methods" do expected_result = { "id" => notification.id, "milestone_type" => notification.milestone_type } diff --git a/spec/decorators/organization_decorator_spec.rb b/spec/decorators/organization_decorator_spec.rb index 2c30bb7ed..ee124c26a 100644 --- a/spec/decorators/organization_decorator_spec.rb +++ b/spec/decorators/organization_decorator_spec.rb @@ -2,7 +2,7 @@ require "rails_helper" RSpec.describe OrganizationDecorator, type: :decorator do context "with serialization" do - let_it_be_readonly(:organization) { create(:organization).decorate } + let!(:organization) { create(:organization).decorate } it "serializes both the decorated object IDs and decorated methods" do expected_result = { "id" => organization.id, "fully_banished?" => organization.fully_banished? } diff --git a/spec/decorators/sponsorship_decorator_spec.rb b/spec/decorators/sponsorship_decorator_spec.rb index 40efbf3b2..0257a24ec 100644 --- a/spec/decorators/sponsorship_decorator_spec.rb +++ b/spec/decorators/sponsorship_decorator_spec.rb @@ -2,7 +2,7 @@ require "rails_helper" RSpec.describe SponsorshipDecorator, type: :decorator do context "with serialization" do - let_it_be_readonly(:sponsorship) { create(:sponsorship).decorate } + let!(:sponsorship) { create(:sponsorship).decorate } it "serializes both the decorated object IDs and decorated methods" do expected_result = { "id" => sponsorship.id, "level_background_color" => sponsorship.level_background_color } diff --git a/spec/helpers/listing_helper_spec.rb b/spec/helpers/listing_helper_spec.rb index 3758d96f9..5b3ddd7de 100644 --- a/spec/helpers/listing_helper_spec.rb +++ b/spec/helpers/listing_helper_spec.rb @@ -1,8 +1,8 @@ require "rails_helper" RSpec.describe ListingHelper, type: :helper do - let_it_be_readonly(:cat1) { create(:listing_category, cost: 1) } - let_it_be_readonly(:cat2) { create(:listing_category, :cfp, cost: 5) } + let!(:cat1) { create(:listing_category, cost: 1) } + let!(:cat2) { create(:listing_category, :cfp, cost: 5) } describe "select_options_for_categories" do it "returns the correct options array" do diff --git a/spec/helpers/social_link_helper_spec.rb b/spec/helpers/social_link_helper_spec.rb index 066f0a391..0b3952fc2 100644 --- a/spec/helpers/social_link_helper_spec.rb +++ b/spec/helpers/social_link_helper_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" describe SocialLinkHelper do - let_it_be_readonly(:user) { create(:user) } + let(:user) { create(:user) } describe ".user_twitter_link" do let(:value) { helper.user_twitter_link(user) } diff --git a/spec/labor/badge_rewarder_spec.rb b/spec/labor/badge_rewarder_spec.rb index d42507035..c069fdc44 100644 --- a/spec/labor/badge_rewarder_spec.rb +++ b/spec/labor/badge_rewarder_spec.rb @@ -106,10 +106,10 @@ RSpec.describe BadgeRewarder, type: :labor do describe "::award_contributor_badges_from_github", vcr: true do let(:user) { create(:user, :with_identity, identities: ["github"]) } - - let_it_be_readonly(:badge) { create(:badge, title: "DEV Contributor") } + let(:badge) { create(:badge, title: "DEV Contributor") } before do + badge omniauth_mock_github_payload stub_const("BadgeRewarder::REPOSITORIES", ["rust-lang/rust"]) diff --git a/spec/models/article_spec.rb b/spec/models/article_spec.rb index 1d67e4f34..b98b8527c 100644 --- a/spec/models/article_spec.rb +++ b/spec/models/article_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Article, type: :model do article end - let_it_be(:user) { create(:user) } + let(:user) { create(:user) } let!(:article) { create(:article, user: user) } include_examples "#sync_reactions_count", :article diff --git a/spec/models/badge_achievement_spec.rb b/spec/models/badge_achievement_spec.rb index 1b9733a4b..b34130c85 100644 --- a/spec/models/badge_achievement_spec.rb +++ b/spec/models/badge_achievement_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe BadgeAchievement, type: :model do - let_it_be(:achievement) { create(:badge_achievement) } + let(:achievement) { create(:badge_achievement) } describe "validations" do describe "builtin validations" do @@ -23,6 +23,7 @@ RSpec.describe BadgeAchievement, type: :model do end it "notifies recipients after commit" do + achievement allow(Notification).to receive(:send_new_badge_achievement_notification) achievement.run_callbacks(:commit) expect(Notification).to have_received(:send_new_badge_achievement_notification).with(achievement) diff --git a/spec/models/badge_spec.rb b/spec/models/badge_spec.rb index 60f706efb..424bd5767 100644 --- a/spec/models/badge_spec.rb +++ b/spec/models/badge_spec.rb @@ -19,7 +19,7 @@ RSpec.describe Badge, type: :model do end context "when callbacks are triggered after save" do - let_it_be_changeable(:badge) { create(:badge) } + let!(:badge) { create(:badge) } describe "cache busting" do before do diff --git a/spec/models/buffer_update_spec.rb b/spec/models/buffer_update_spec.rb index 3791cae66..d43856f19 100644 --- a/spec/models/buffer_update_spec.rb +++ b/spec/models/buffer_update_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe BufferUpdate, type: :model do - let_it_be(:article) { create(:article) } + let(:article) { create(:article) } it "creates update" do described_class.buff!(article.id, "twitter_buffer_text", "CODE", "twitter") diff --git a/spec/models/chat_channel_spec.rb b/spec/models/chat_channel_spec.rb index 970d41127..28e35319a 100644 --- a/spec/models/chat_channel_spec.rb +++ b/spec/models/chat_channel_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" RSpec.describe ChatChannel, type: :model do let(:chat_channel) { create(:chat_channel) } - let_it_be(:users) { create_list(:user, 2) } + let(:users) { create_list(:user, 2) } describe "validations" do describe "builtin validations" do diff --git a/spec/models/collection_spec.rb b/spec/models/collection_spec.rb index d2622a7dc..f39e9bd5d 100644 --- a/spec/models/collection_spec.rb +++ b/spec/models/collection_spec.rb @@ -1,8 +1,8 @@ require "rails_helper" RSpec.describe Collection, type: :model do - let_it_be(:user) { create(:user) } - let_it_be(:collection) { create(:collection, :with_articles, user: user) } + let(:user) { create(:user) } + let(:collection) { create(:collection, :with_articles, user: user) } describe "validations" do it { is_expected.to belong_to(:user) } @@ -15,8 +15,8 @@ RSpec.describe Collection, type: :model do end describe ".find_series" do - let_it_be(:other_user) { create(:user) } - let_it_be(:series) { collection } + let!(:other_user) { create(:user) } + let!(:series) { collection } it "returns an existing series" do expect do diff --git a/spec/models/credit_spec.rb b/spec/models/credit_spec.rb index a4fbb8839..080c36ead 100644 --- a/spec/models/credit_spec.rb +++ b/spec/models/credit_spec.rb @@ -1,16 +1,16 @@ require "rails_helper" RSpec.describe Credit, type: :model do - let_it_be(:user) { create(:user) } - let_it_be(:organization) { create(:organization) } + let(:user) { create(:user) } + let(:organization) { create(:organization) } it { is_expected.to belong_to(:user).optional } it { is_expected.to belong_to(:organization).optional } it { is_expected.to belong_to(:purchase).optional } context "when caching counters" do - let_it_be(:user_credits) { create_list(:credit, 2, user: user) } - let_it_be(:org_credits) { create_list(:credit, 1, organization: organization) } + let(:user_credits) { create_list(:credit, 2, user: user) } + let(:org_credits) { create_list(:credit, 1, organization: organization) } describe "#credits_count" do it "counts credits for user" do @@ -49,7 +49,7 @@ RSpec.describe Credit, type: :model do end describe "#purchase" do - let_it_be(:credit) { build(:credit) } + let(:credit) { build(:credit) } it "is valid with a purchase" do credit.purchase = build(:listing) @@ -77,8 +77,10 @@ RSpec.describe Credit, type: :model do end describe "#remove_from" do - let_it_be(:user_credits) { create_list(:credit, 2, user: user) } - let_it_be(:org_credits) { create_list(:credit, 1, organization: organization) } + let(:user_credits) { create_list(:credit, 2, user: user) } + let(:org_credits) { create_list(:credit, 1, organization: organization) } + + before { [user_credits, org_credits] } it "adds the credits to the user" do expect do diff --git a/spec/models/display_ad_event_spec.rb b/spec/models/display_ad_event_spec.rb index f67747ecd..63730573e 100644 --- a/spec/models/display_ad_event_spec.rb +++ b/spec/models/display_ad_event_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" RSpec.describe DisplayAdEvent, type: :model do - let_it_be(:user) { build(:user) } - let_it_be(:organization) { build(:organization) } - let_it_be(:display_ad) { build(:display_ad, organization: organization) } + let(:user) { build(:user) } + let(:organization) { build(:organization) } + let(:display_ad) { build(:display_ad, organization: organization) } describe "#category" do it "is valid with a click category" do diff --git a/spec/models/display_ad_spec.rb b/spec/models/display_ad_spec.rb index 99c22dfe0..5f418e3be 100644 --- a/spec/models/display_ad_spec.rb +++ b/spec/models/display_ad_spec.rb @@ -1,8 +1,8 @@ require "rails_helper" RSpec.describe DisplayAd, type: :model do - let_it_be(:organization) { create(:organization) } - let_it_be(:display_ad) { create(:display_ad, organization_id: organization.id) } + let(:organization) { create(:organization) } + let(:display_ad) { create(:display_ad, organization_id: organization.id) } it { is_expected.to validate_presence_of(:organization_id) } it { is_expected.to validate_presence_of(:placement_area) } diff --git a/spec/models/listing_spec.rb b/spec/models/listing_spec.rb index cf1a95630..98eeb193a 100644 --- a/spec/models/listing_spec.rb +++ b/spec/models/listing_spec.rb @@ -1,8 +1,8 @@ require "rails_helper" RSpec.describe Listing, type: :model do - let_it_be(:user) { create(:user) } - let_it_be(:organization) { create(:organization) } + let(:user) { create(:user) } + let(:organization) { create(:organization) } let(:listing) { create(:listing, user: user) } # TODO: Remove setting of default parser from a model's callback diff --git a/spec/models/message_spec.rb b/spec/models/message_spec.rb index a75f6a3a4..a4bf4a608 100644 --- a/spec/models/message_spec.rb +++ b/spec/models/message_spec.rb @@ -39,7 +39,7 @@ RSpec.describe Message, type: :model do end context "when callbacks are triggered before validation" do - let_it_be(:article) { create(:article) } + let(:article) { create(:article) } describe "#message_html" do it "creates rich link with proper link for article" do diff --git a/spec/models/notification_subscription_spec.rb b/spec/models/notification_subscription_spec.rb index 9efd31df9..3a695a0e8 100644 --- a/spec/models/notification_subscription_spec.rb +++ b/spec/models/notification_subscription_spec.rb @@ -1,10 +1,10 @@ require "rails_helper" RSpec.describe NotificationSubscription, type: :model do - let_it_be(:user) { create(:user) } - let_it_be(:article) { create(:article, user: user) } - subject { create(:notification_subscription, user: user, notifiable: article) } + let(:user) { create(:user) } + let(:article) { create(:article, user: user) } + it { is_expected.to validate_uniqueness_of(:user_id).scoped_to(%i[notifiable_type notifiable_id]) } end diff --git a/spec/models/podcast_episode_spec.rb b/spec/models/podcast_episode_spec.rb index 93a35b988..c4bca969e 100644 --- a/spec/models/podcast_episode_spec.rb +++ b/spec/models/podcast_episode_spec.rb @@ -62,7 +62,7 @@ RSpec.describe PodcastEpisode, type: :model do end describe ".available" do - let_it_be(:podcast) { create(:podcast) } + let(:podcast) { create(:podcast) } it "is available when reachable and published" do expect do @@ -85,7 +85,7 @@ RSpec.describe PodcastEpisode, type: :model do end context "when callbacks are triggered before validation" do - let_it_be(:podcast_episode) { build(:podcast_episode) } + let(:podcast_episode) { build(:podcast_episode) } describe "paragraphs cleanup" do it "removes empty paragraphs" do diff --git a/spec/models/poll_option_spec.rb b/spec/models/poll_option_spec.rb index 20ed5438f..84e7efc7c 100644 --- a/spec/models/poll_option_spec.rb +++ b/spec/models/poll_option_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" RSpec.describe PollOption, type: :model do - let_it_be(:article) { build(:article, featured: true) } - let_it_be(:poll) { build(:poll, article: article) } - let_it_be(:poll_option) { build(:poll_option, poll: poll) } + let(:article) { build(:article, featured: true) } + let(:poll) { build(:poll, article: article) } + let(:poll_option) { build(:poll_option, poll: poll) } describe "validations" do it "allows up to 128 markdown characters" do diff --git a/spec/models/poll_skip_spec.rb b/spec/models/poll_skip_spec.rb index 8f55ac095..394515d3a 100644 --- a/spec/models/poll_skip_spec.rb +++ b/spec/models/poll_skip_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" RSpec.describe PollSkip, type: :model do - let_it_be(:article) { create(:article, featured: true) } - let_it_be(:user) { create(:user) } - let_it_be(:poll) { create(:poll, article: article) } + let(:article) { create(:article, featured: true) } + let(:user) { create(:user) } + let(:poll) { create(:poll, article: article) } describe "validations" do context "when checking against poll" do diff --git a/spec/models/poll_spec.rb b/spec/models/poll_spec.rb index e951a3aa0..4c4a4bf4a 100644 --- a/spec/models/poll_spec.rb +++ b/spec/models/poll_spec.rb @@ -1,10 +1,10 @@ require "rails_helper" RSpec.describe Poll, type: :model do - let_it_be(:article) { create(:article, featured: true) } + let(:article) { create(:article, featured: true) } describe "validations" do - let_it_be(:poll) { build(:poll, article: article) } + let(:poll) { build(:poll, article: article) } describe "#prompt_markdown" do it "is valid up to 128 chars" do diff --git a/spec/models/profile_pin_spec.rb b/spec/models/profile_pin_spec.rb index 96fd8f672..b900310f1 100644 --- a/spec/models/profile_pin_spec.rb +++ b/spec/models/profile_pin_spec.rb @@ -1,18 +1,19 @@ require "rails_helper" RSpec.describe ProfilePin, type: :model do - let_it_be(:user) { create(:user) } + let(:user) { create(:user) } describe "validations" do describe "number of pins" do - let_it_be(:articles) { create_list(:article, 4, user: user) } - let_it_be(:pins) do + let(:articles) { create_list(:article, 4, user: user) } + let(:pins) do articles.each { |article| create(:profile_pin, pinnable: article, profile: user) } end - let(:fifth_article) { create(:article, user: user) } let(:sixth_article) { create(:article, user: user) } + before { pins } + it "allows up to five pins per user" do pin = build(:profile_pin, pinnable: fifth_article, profile: user) expect(pin).to be_valid @@ -28,7 +29,7 @@ RSpec.describe ProfilePin, type: :model do end describe "#profile" do - let_it_be(:article) { create(:article, user: user) } + let(:article) { create(:article, user: user) } it "ensures pinnable belongs to the same profile" do pin = build(:profile_pin, pinnable: article, profile: create(:user)) diff --git a/spec/models/rating_vote_spec.rb b/spec/models/rating_vote_spec.rb index cf863526e..dccbe1a4d 100644 --- a/spec/models/rating_vote_spec.rb +++ b/spec/models/rating_vote_spec.rb @@ -49,7 +49,7 @@ RSpec.describe RatingVote, type: :model do end describe "permissions" do - let_it_be(:untrusted_user) { create(:user) } + let(:untrusted_user) { create(:user) } it "allows untrusted user to leave readinglist_reaction context rating" do rating = build(:rating_vote, article_id: article.id, user_id: untrusted_user.id, context: "readinglist_reaction") diff --git a/spec/models/reaction_spec.rb b/spec/models/reaction_spec.rb index c9d710270..1724d96a5 100644 --- a/spec/models/reaction_spec.rb +++ b/spec/models/reaction_spec.rb @@ -144,8 +144,8 @@ RSpec.describe Reaction, type: :model do end describe "#skip_notification_for?" do - let_it_be(:receiver) { build(:user) } - let_it_be(:reaction) { build(:reaction, reactable: build(:article), user: nil) } + let(:receiver) { build(:user) } + let(:reaction) { build(:reaction, reactable: build(:article), user: nil) } context "when false" do it "is false when points are positive" do @@ -202,8 +202,8 @@ RSpec.describe Reaction, type: :model do context "when callbacks are called after create" do describe "slack messages" do - let_it_be_changeable(:user) { create(:user, :trusted) } - let_it_be_readonly(:article) { create(:article, user: user) } + let!(:user) { create(:user, :trusted) } + let!(:article) { create(:article, user: user) } before do # making sure there are no other enqueued jobs from other tests diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 4b8c20e14..585d2bd0e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -598,7 +598,7 @@ RSpec.describe User, type: :model do end context "when callbacks are triggered before and after create" do - let_it_be(:user) { create(:user, email: nil) } + let(:user) { create(:user, email: nil) } describe "#language_settings" do it "sets correct language_settings by default" do @@ -968,8 +968,8 @@ RSpec.describe User, type: :model do end describe "#followed_articles" do - let_it_be(:another_user) { create(:user) } - let_it_be(:articles) { create_list(:article, 2, user: another_user) } + let!(:another_user) { create(:user) } + let!(:articles) { create_list(:article, 2, user: another_user) } before do user.follow(another_user) diff --git a/spec/models/webhook/event_spec.rb b/spec/models/webhook/event_spec.rb index 08215f14c..5126681bc 100644 --- a/spec/models/webhook/event_spec.rb +++ b/spec/models/webhook/event_spec.rb @@ -1,8 +1,8 @@ require "rails_helper" RSpec.describe Webhook::Event, type: :model do - let_it_be(:article) { create(:article) } - let_it_be(:payload) { Webhook::PayloadAdapter.new(article).hash } + let(:article) { create(:article) } + let(:payload) { Webhook::PayloadAdapter.new(article).hash } describe "validations" do it "raises an exception with a unknown event type" do diff --git a/spec/policies/reaction_policy_spec.rb b/spec/policies/reaction_policy_spec.rb index 32ad92202..e96f58c24 100644 --- a/spec/policies/reaction_policy_spec.rb +++ b/spec/policies/reaction_policy_spec.rb @@ -3,8 +3,8 @@ require "rails_helper" RSpec.describe ReactionPolicy do subject { described_class.new(user, reaction) } - let_it_be(:comment) { create(:comment, commentable: create(:article)) } - let_it_be(:reaction) { create(:reaction, reactable: comment) } + let(:comment) { create(:comment, commentable: create(:article)) } + let(:reaction) { create(:reaction, reactable: comment) } let!(:user) { create(:user) } context "when user is not signed in" do diff --git a/spec/queries/internal/moderators_query_spec.rb b/spec/queries/internal/moderators_query_spec.rb index 4096a0555..c1ea8eb54 100644 --- a/spec/queries/internal/moderators_query_spec.rb +++ b/spec/queries/internal/moderators_query_spec.rb @@ -3,12 +3,12 @@ require "rails_helper" RSpec.describe Internal::ModeratorsQuery, type: :query do subject { described_class.call(options: options) } - let_it_be_readonly(:user) { create(:user, :trusted, name: "Greg") } - let_it_be_readonly(:user2) { create(:user, :trusted, name: "Gregory") } - let_it_be_readonly(:user3) { create(:user, :tag_moderator, name: "Paul", comments_count: 4) } - let_it_be_readonly(:user4) { create(:user, :admin, name: "Susi", comments_count: 10) } - let_it_be_readonly(:user5) { create(:user, :trusted, :admin, name: "Beth") } - let_it_be_readonly(:user6) { create(:user, :admin, name: "Jean", comments_count: 5) } + let!(:user) { create(:user, :trusted, name: "Greg") } + let(:user2) { create(:user, :trusted, name: "Gregory") } + let!(:user3) { create(:user, :tag_moderator, name: "Paul", comments_count: 4) } + let!(:user4) { create(:user, :admin, name: "Susi", comments_count: 10) } + let(:user5) { create(:user, :trusted, :admin, name: "Beth") } + let(:user6) { create(:user, :admin, name: "Jean", comments_count: 5) } describe ".call" do context "when no arguments are given" do diff --git a/spec/queries/internal/users_query_spec.rb b/spec/queries/internal/users_query_spec.rb index 931346a73..e04a0bb6b 100644 --- a/spec/queries/internal/users_query_spec.rb +++ b/spec/queries/internal/users_query_spec.rb @@ -3,12 +3,12 @@ require "rails_helper" RSpec.describe Internal::UsersQuery, type: :query do subject { described_class.call(options: options) } - let_it_be_readonly(:user) { create(:user, :trusted, name: "Greg") } - let_it_be_readonly(:user2) { create(:user, :trusted, name: "Gregory") } - let_it_be_readonly(:user3) { create(:user, :tag_moderator, name: "Paul") } - let_it_be_readonly(:user4) { create(:user, :admin, name: "Susi") } - let_it_be_readonly(:user5) { create(:user, :trusted, :admin, name: "Beth") } - let_it_be_readonly(:user6) { create(:user, :super_admin, name: "Jean") } + let!(:user) { create(:user, :trusted, name: "Greg") } + let!(:user2) { create(:user, :trusted, name: "Gregory") } + let!(:user3) { create(:user, :tag_moderator, name: "Paul") } + let!(:user4) { create(:user, :admin, name: "Susi") } + let!(:user5) { create(:user, :trusted, :admin, name: "Beth") } + let!(:user6) { create(:user, :super_admin, name: "Jean") } describe ".call" do context "when no arguments are given" do diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 5c66a612b..3d1de2a5b 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -13,9 +13,6 @@ abort("The Rails environment is running in production mode!") if Rails.env.produ require "pundit/matchers" require "pundit/rspec" require "webmock/rspec" -require "test_prof/recipes/rspec/before_all" -require "test_prof/recipes/rspec/let_it_be" -require "test_prof/recipes/rspec/sample" require "sidekiq/testing" require "validate_url/rspec_matcher" diff --git a/spec/requests/api/v0/articles_spec.rb b/spec/requests/api/v0/articles_spec.rb index 8b9e7b22d..02ae4733d 100644 --- a/spec/requests/api/v0/articles_spec.rb +++ b/spec/requests/api/v0/articles_spec.rb @@ -1,12 +1,15 @@ require "rails_helper" RSpec.describe "Api::V0::Articles", type: :request do - let_it_be_readonly(:organization) { create(:organization) } # not used by every spec but lower times overall - let_it_be_readonly(:tag) { create(:tag, name: "discuss") } - let_it_be_changeable(:article) { create(:article, featured: true, tags: "discuss") } + let(:organization) { create(:organization) } # not used by every spec but lower times overall + let(:tag) { create(:tag, name: "discuss") } + let(:article) { create(:article, featured: true, tags: "discuss") } + before { stub_const("FlareTag::FLARE_TAG_IDS_HASH", { "discuss" => tag.id }) } describe "GET /api/articles" do + before { article } + it "returns CORS headers" do origin = "http://example.com" get api_articles_path, headers: { "origin": origin } @@ -425,8 +428,8 @@ RSpec.describe "Api::V0::Articles", type: :request do end context "when request is authenticated" do - let_it_be(:user) { create(:user) } - let_it_be(:access_token) { create :doorkeeper_access_token, resource_owner: user, scopes: "public read_articles" } + let(:user) { create(:user) } + let(:access_token) { create :doorkeeper_access_token, resource_owner: user, scopes: "public read_articles" } it "works with bearer authorization" do headers = { "authorization" => "Bearer #{access_token.token}", "content-type" => "application/json" } diff --git a/spec/requests/api/v0/comments_spec.rb b/spec/requests/api/v0/comments_spec.rb index ee6c7df80..d07caf448 100644 --- a/spec/requests/api/v0/comments_spec.rb +++ b/spec/requests/api/v0/comments_spec.rb @@ -1,15 +1,15 @@ require "rails_helper" RSpec.describe "Api::V0::Comments", type: :request do - let_it_be(:article) { create(:article) } - let_it_be(:root_comment) { create(:comment, commentable: article) } - let_it_be_changeable(:child_comment) do + let(:article) { create(:article) } + let!(:root_comment) { create(:comment, commentable: article) } + let!(:child_comment) do create(:comment, commentable: article, parent: root_comment) end - let_it_be(:grandchild_comment) do + let!(:grandchild_comment) do create(:comment, commentable: article, parent: child_comment) end - let_it_be(:great_grandchild_comment) do + let!(:great_grandchild_comment) do create(:comment, commentable: article, parent: grandchild_comment) end diff --git a/spec/requests/api/v0/listings_spec.rb b/spec/requests/api/v0/listings_spec.rb index 14376a3f0..1cdfb956e 100644 --- a/spec/requests/api/v0/listings_spec.rb +++ b/spec/requests/api/v0/listings_spec.rb @@ -1,10 +1,10 @@ require "rails_helper" RSpec.describe "Api::V0::Listings", type: :request do - let_it_be_readonly(:cfp_category) do + let(:cfp_category) do create(:listing_category, :cfp) end - let_it_be_readonly(:edu_category) do + let(:edu_category) do create(:listing_category) end @@ -155,7 +155,7 @@ RSpec.describe "Api::V0::Listings", type: :request do end context "when unauthorized" do - let_it_be_readonly(:headers) { { "api-key" => "invalid api key" } } + let(:headers) { { "api-key" => "invalid api key" } } it "returns a published listing" do listing.update(published: true) diff --git a/spec/requests/api/v0/users_spec.rb b/spec/requests/api/v0/users_spec.rb index 7a94ba3b0..6d081bb8d 100644 --- a/spec/requests/api/v0/users_spec.rb +++ b/spec/requests/api/v0/users_spec.rb @@ -57,8 +57,8 @@ RSpec.describe "Api::V0::Users", type: :request do end context "when request is authenticated" do - let_it_be(:user) { create(:user) } - let_it_be(:access_token) { create(:doorkeeper_access_token, resource_owner: user, scopes: "public") } + let(:user) { create(:user) } + let(:access_token) { create(:doorkeeper_access_token, resource_owner: user, scopes: "public") } it "returns the correct json representation of the user", :aggregate_failures do get me_api_users_path, params: { access_token: access_token.token } diff --git a/spec/requests/articles/video_player_show_spec.rb b/spec/requests/articles/video_player_show_spec.rb index 8c2c1cf1c..c01bb777e 100644 --- a/spec/requests/articles/video_player_show_spec.rb +++ b/spec/requests/articles/video_player_show_spec.rb @@ -1,8 +1,8 @@ require "rails_helper" RSpec.describe "VideoPlayerShow", type: :request do - let_it_be(:user) { create(:user) } - let_it_be(:video_article) { create(:article, user: user) } + let(:user) { create(:user) } + let(:video_article) { create(:article, user: user) } describe "GET /:slug (video articles)" do before do diff --git a/spec/requests/events_spec.rb b/spec/requests/events_spec.rb index c1c7f6f87..a4342221f 100644 --- a/spec/requests/events_spec.rb +++ b/spec/requests/events_spec.rb @@ -1,10 +1,11 @@ require "rails_helper" RSpec.describe "Events", type: :request do - let_it_be(:event) { create(:event, published: true) } + let(:event) { create(:event, published: true) } describe "GET events" do it "returns index page" do + event get "/events" expect(response.body).to include("#{community_name} EVENTS") expect(response.body).to include(event.title) diff --git a/spec/requests/internal/configs_spec.rb b/spec/requests/internal/configs_spec.rb index 09d8e675e..e06459552 100644 --- a/spec/requests/internal/configs_spec.rb +++ b/spec/requests/internal/configs_spec.rb @@ -1,10 +1,10 @@ require "rails_helper" RSpec.describe "/internal/config", type: :request do - let_it_be(:user) { create(:user) } - let_it_be(:admin) { create(:user, :super_admin) } - let_it_be(:admin_plus_config) { create(:user, :super_plus_single_resource_admin, resource: Config) } - let_it_be(:confirmation_message) do + let(:user) { create(:user) } + let(:admin) { create(:user, :super_admin) } + let(:admin_plus_config) { create(:user, :super_plus_single_resource_admin, resource: Config) } + let(:confirmation_message) do "My username is @#{admin_plus_config.username} and this action is 100% safe and appropriate." end diff --git a/spec/requests/internal/listings_spec.rb b/spec/requests/internal/listings_spec.rb index a027762d6..779ff3078 100644 --- a/spec/requests/internal/listings_spec.rb +++ b/spec/requests/internal/listings_spec.rb @@ -1,8 +1,8 @@ require "rails_helper" RSpec.describe "/internal/listings", type: :request do - let_it_be(:admin) { create(:user, :super_admin) } - let_it_be(:listing) { create(:listing, user_id: admin.id) } + let(:admin) { create(:user, :super_admin) } + let!(:listing) { create(:listing, user_id: admin.id) } before do allow(CacheBuster).to receive(:bust_listings) diff --git a/spec/requests/listings_spec.rb b/spec/requests/listings_spec.rb index c2ecdf68d..14cd89d84 100644 --- a/spec/requests/listings_spec.rb +++ b/spec/requests/listings_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe "/listings", type: :request do - let_it_be_readonly(:edu_category) do + let(:edu_category) do create(:listing_category, cost: 1) end let(:user) { create(:user) } @@ -147,7 +147,7 @@ RSpec.describe "/listings", type: :request do create_list(:credit, 25, user: user) end - let_it_be_readonly(:cfp_category) { create(:listing_category, :cfp) } + let(:cfp_category) { create(:listing_category, :cfp) } context "when the listing is invalid" do let(:invalid_params) do diff --git a/spec/requests/notifications_spec.rb b/spec/requests/notifications_spec.rb index 2ec19455f..2df9545b6 100644 --- a/spec/requests/notifications_spec.rb +++ b/spec/requests/notifications_spec.rb @@ -3,10 +3,10 @@ require "rails_helper" RSpec.describe "NotificationsIndex", type: :request do include ActionView::Helpers::DateHelper - let_it_be_readonly(:dev_account) { create(:user) } - let_it_be_readonly(:mascot_account) { create(:user) } - let_it_be_changeable(:user) { create(:user) } - let_it_be_changeable(:organization) { create(:organization) } + let(:dev_account) { create(:user) } + let(:mascot_account) { create(:user) } + let(:user) { create(:user) } + let(:organization) { create(:organization) } before do allow(User).to receive(:dev_account).and_return(dev_account) diff --git a/spec/requests/pages_spec.rb b/spec/requests/pages_spec.rb index 90f8f6609..d324bdca3 100644 --- a/spec/requests/pages_spec.rb +++ b/spec/requests/pages_spec.rb @@ -18,8 +18,8 @@ RSpec.describe "Pages", type: :request do end context "when json template" do - let_it_be(:json_text) { "{\"foo\": \"bar\"}" } - let_it_be(:page) do + let(:json_text) { "{\"foo\": \"bar\"}" } + let(:page) do create(:page, title: "sample_data", template: "json", body_json: json_text, body_html: nil, body_markdown: nil) end @@ -143,7 +143,7 @@ RSpec.describe "Pages", type: :request do end describe "GET /checkin" do - let_it_be(:user) { create(:user, username: "codenewbiestaff") } + let(:user) { create(:user, username: "codenewbiestaff") } it "redirects to the latest CodeNewbie staff thread" do earlier_staff_thread = create(:article, user: user, tags: "staff") diff --git a/spec/requests/reactions_spec.rb b/spec/requests/reactions_spec.rb index f0afcd4c0..e380486d6 100644 --- a/spec/requests/reactions_spec.rb +++ b/spec/requests/reactions_spec.rb @@ -5,8 +5,8 @@ RSpec.describe "Reactions", type: :request do let(:article) { create(:article, user: user) } let(:comment) { create(:comment, commentable: article) } - let_it_be(:max_age) { 1.day.to_i } - let_it_be(:stale_if_error) { 26_400 } + let(:max_age) { 1.day.to_i } + let(:stale_if_error) { 26_400 } describe "GET /reactions?article_id=:article_id" do before do @@ -269,7 +269,7 @@ RSpec.describe "Reactions", type: :request do end context "when signed in as admin" do - let_it_be(:admin) { create(:user, :admin) } + let(:admin) { create(:user, :admin) } before do sign_in admin diff --git a/spec/requests/stories_index_spec.rb b/spec/requests/stories_index_spec.rb index 442fe6a5c..2cf092c9c 100644 --- a/spec/requests/stories_index_spec.rb +++ b/spec/requests/stories_index_spec.rb @@ -129,7 +129,7 @@ RSpec.describe "StoriesIndex", type: :request do end context "with campaign hero" do - let_it_be_readonly(:hero_html) do + let!(:hero_html) do create( :html_variant, group: "campaign", diff --git a/spec/requests/stories_show_spec.rb b/spec/requests/stories_show_spec.rb index 5dcbb0836..566454385 100644 --- a/spec/requests/stories_show_spec.rb +++ b/spec/requests/stories_show_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" RSpec.describe "StoriesShow", type: :request do - let_it_be(:user) { create(:user) } - let_it_be(:org, reload: true) { create(:organization) } - let_it_be(:article, reload: true) { create(:article, user: user) } + let(:user) { create(:user) } + let(:org) { create(:organization) } + let(:article) { create(:article, user: user) } describe "GET /:username/:slug (articles)" do it "renders proper title" do diff --git a/spec/requests/user/user_show_spec.rb b/spec/requests/user/user_show_spec.rb index 578249fe0..f9b83e004 100644 --- a/spec/requests/user/user_show_spec.rb +++ b/spec/requests/user/user_show_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe "UserShow", type: :request do - let_it_be(:user) { create(:user, :with_all_info, email_public: true) } + let(:user) { create(:user, :with_all_info, email_public: true) } describe "GET /:slug (user)" do it "returns a 200 status when navigating to the user's page" do diff --git a/spec/services/broadcasts/welcome_notification/generator_spec.rb b/spec/services/broadcasts/welcome_notification/generator_spec.rb index 284e2c6e9..ba053b6c1 100644 --- a/spec/services/broadcasts/welcome_notification/generator_spec.rb +++ b/spec/services/broadcasts/welcome_notification/generator_spec.rb @@ -5,13 +5,13 @@ RSpec.describe Broadcasts::WelcomeNotification::Generator, type: :service do let!(:welcome_thread) { create(:article, user: mascot_account, published: true, tags: "welcome") } # welcome_broadcast is explicitly not readonly so that we can test against an inactive broadcast - let_it_be(:welcome_broadcast) { create(:welcome_broadcast) } - let_it_be_readonly(:twitter_connect_broadcast) { create(:twitter_connect_broadcast) } - let_it_be_readonly(:github_connect_broadcast) { create(:github_connect_broadcast) } - let_it_be_readonly(:customize_feed_broadcast) { create(:customize_feed_broadcast) } - let_it_be_readonly(:discuss_and_ask_broadcast) { create(:discuss_and_ask_broadcast) } - let_it_be_readonly(:customize_ux_broadcast) { create(:customize_ux_broadcast) } - let_it_be_readonly(:download_app_broadcast) { create(:download_app_broadcast) } + let!(:welcome_broadcast) { create(:welcome_broadcast) } + let!(:twitter_connect_broadcast) { create(:twitter_connect_broadcast) } + let!(:github_connect_broadcast) { create(:github_connect_broadcast) } + let!(:customize_feed_broadcast) { create(:customize_feed_broadcast) } + let!(:discuss_and_ask_broadcast) { create(:discuss_and_ask_broadcast) } + let!(:customize_ux_broadcast) { create(:customize_ux_broadcast) } + let!(:download_app_broadcast) { create(:download_app_broadcast) } before do omniauth_mock_providers_payload @@ -225,8 +225,8 @@ RSpec.describe Broadcasts::WelcomeNotification::Generator, type: :service do describe "#send_discuss_and_ask_notification" do let!(:user) { create(:user, :with_identity, identities: %w[twitter github], created_at: 6.days.ago) } - let_it_be_readonly(:ask_question_broadcast) { create(:ask_question_broadcast) } - let_it_be_readonly(:start_discussion_broadcast) { create(:start_discussion_broadcast) } + let!(:ask_question_broadcast) { create(:ask_question_broadcast) } + let!(:start_discussion_broadcast) { create(:start_discussion_broadcast) } context "with a user who has asked a question" do it "generates the correct broadcast type and sends the notification to the user" do diff --git a/spec/services/notifications/update_spec.rb b/spec/services/notifications/update_spec.rb index 7b52c6920..81033a230 100644 --- a/spec/services/notifications/update_spec.rb +++ b/spec/services/notifications/update_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe Notifications::Update, type: :service do - let_it_be(:article) { create(:article) } + let(:article) { create(:article) } context "when updating notifications of an article" do it "updates all notifications with the same action", :aggregate_failures do @@ -37,8 +37,8 @@ RSpec.describe Notifications::Update, type: :service do end context "when updating notifications of an organization article" do - let_it_be(:organization) { create(:organization) } - let_it_be(:article) { create(:article, organization: organization) } + let(:organization) { create(:organization) } + let(:article) { create(:article, organization: organization) } it "updates all notifications with the same action", :aggregate_failures do notifications = create_list(:notification, 2, notifiable: article, action: "Published") @@ -73,7 +73,7 @@ RSpec.describe Notifications::Update, type: :service do end context "when updating notifications on a comment" do - let_it_be(:comment) { create(:comment, commentable: article) } + let(:comment) { create(:comment, commentable: article) } it "updates all notifications", :aggregate_failures do notifications = create_list(:notification, 2, notifiable: comment) @@ -94,7 +94,7 @@ RSpec.describe Notifications::Update, type: :service do end context "when updating notifications on a reaction" do - let_it_be(:reaction) { create(:reaction, reactable: article) } + let(:reaction) { create(:reaction, reactable: article) } it "does not update notifications", :aggregate_failures do notifications = create_list(:notification, 2, notifiable: reaction) diff --git a/spec/services/users/delete_spec.rb b/spec/services/users/delete_spec.rb index 4863d2981..6921cd3be 100644 --- a/spec/services/users/delete_spec.rb +++ b/spec/services/users/delete_spec.rb @@ -164,7 +164,7 @@ RSpec.describe Users::Delete, type: :service do end context "when cleaning up chat channels" do - let_it_be(:other_user) { create(:user) } + let(:other_user) { create(:user) } it "deletes the user's private chat channels" do chat_channel = ChatChannel.create_with_users(users: [user, other_user]) diff --git a/spec/support/initializers/test_prof.rb b/spec/support/initializers/test_prof.rb deleted file mode 100644 index dcd41e0b3..000000000 --- a/spec/support/initializers/test_prof.rb +++ /dev/null @@ -1,19 +0,0 @@ -# see -TestProf::LetItBe.configure do |config| - config.register_modifier :readonly do |record, val| - next record unless record.is_a?(::ActiveRecord::Base) - - next record unless val - - record.tap(&:readonly!) - end - - # marks the record as readonly - config.alias_to :let_it_be_readonly, readonly: true - - # reloads the record from the DB, with `record.reload` - config.alias_to :let_it_be_changeable, reload: true - - # creates a new instance of the same record in memory - config.alias_to :let_it_be_refindable, refind: true -end diff --git a/spec/system/articles/moderator_moderates_an_article.rb b/spec/system/articles/moderator_moderates_an_article.rb index fffc6cd61..23f6a5c23 100644 --- a/spec/system/articles/moderator_moderates_an_article.rb +++ b/spec/system/articles/moderator_moderates_an_article.rb @@ -1,9 +1,9 @@ require "rails_helper" RSpec.describe "Views an article", type: :system do - let_it_be(:user) { create(:user) } - let_it_be(:moderator) { create(:user, :trusted) } - let_it_be(:article, reload: true) { create(:article, :with_notification_subscription, user: user) } + let(:user) { create(:user) } + let(:moderator) { create(:user, :trusted) } + let(:article) { create(:article, :with_notification_subscription, user: user) } let(:timestamp) { "2019-03-04T10:00:00Z" } before do diff --git a/spec/system/articles/user_edits_an_article_spec.rb b/spec/system/articles/user_edits_an_article_spec.rb index 944922505..271b4fd7f 100644 --- a/spec/system/articles/user_edits_an_article_spec.rb +++ b/spec/system/articles/user_edits_an_article_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" RSpec.describe "Editing with an editor", type: :system, js: true do - let_it_be(:template) { file_fixture("article_published.txt").read } - let_it_be(:user) { create(:user) } - let_it_be(:article, reload: true) { create(:article, user: user, body_markdown: template) } + let(:template) { file_fixture("article_published.txt").read } + let(:user) { create(:user) } + let(:article) { create(:article, user: user, body_markdown: template) } before do sign_in user diff --git a/spec/tasks/broadcasts_spec.rb b/spec/tasks/broadcasts_spec.rb index cb2dc6528..3a4c0f413 100644 --- a/spec/tasks/broadcasts_spec.rb +++ b/spec/tasks/broadcasts_spec.rb @@ -4,7 +4,7 @@ RSpec.describe "Broadcasts tasks", type: :task do let(:service) { Broadcasts::WelcomeNotification::Generator } let(:one_week_from_today) { 1.week.since } - let_it_be_readonly(:default_config_date) { SiteConfig.welcome_notifications_live_at } + let(:default_config_date) { SiteConfig.welcome_notifications_live_at } before do # Set date to a week from today diff --git a/spec/uploaders/article_image_uploader_spec.rb b/spec/uploaders/article_image_uploader_spec.rb index e44f7848f..054bba0df 100644 --- a/spec/uploaders/article_image_uploader_spec.rb +++ b/spec/uploaders/article_image_uploader_spec.rb @@ -5,11 +5,11 @@ require "exifr/jpeg" describe ArticleImageUploader, type: :uploader do include CarrierWave::Test::Matchers - let_it_be(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } - let_it_be(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } - let_it_be(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } - let_it_be(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } - let_it_be(:high_frame_count) { fixture_file_upload("files/high_frame_count.gif", "image/gif") } + let(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } + let(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } + let(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } + let(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } + let(:high_frame_count) { fixture_file_upload("files/high_frame_count.gif", "image/gif") } # we need a new uploader before each test, and since the uploader is not a model # we can recreate it quickly in memory with `let!` diff --git a/spec/uploaders/badge_uploader_spec.rb b/spec/uploaders/badge_uploader_spec.rb index c8097b88b..fb7885e81 100644 --- a/spec/uploaders/badge_uploader_spec.rb +++ b/spec/uploaders/badge_uploader_spec.rb @@ -5,12 +5,12 @@ require "exifr/jpeg" describe BadgeUploader, type: :uploader do include CarrierWave::Test::Matchers - let_it_be(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } - let_it_be(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } - let_it_be(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } - let_it_be(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } + let(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } + let(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } + let(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } + let(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } - let_it_be_changeable(:badge) { create(:badge) } + let(:badge) { create(:badge) } # we need a new uploader before each test, and since the uploader is not a model # we can recreate it quickly in memory with `let!` diff --git a/spec/uploaders/cover_image_uploader_spec.rb b/spec/uploaders/cover_image_uploader_spec.rb index 7cef6b745..3cc417742 100644 --- a/spec/uploaders/cover_image_uploader_spec.rb +++ b/spec/uploaders/cover_image_uploader_spec.rb @@ -5,12 +5,12 @@ require "exifr/jpeg" describe CoverImageUploader, type: :uploader do include CarrierWave::Test::Matchers - let_it_be(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } - let_it_be(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } - let_it_be(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } - let_it_be(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } + let(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } + let(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } + let(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } + let(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } - let_it_be_changeable(:event) { create(:event) } + let(:event) { create(:event) } # we need a new uploader before each test, and since the uploader is not a model # we can recreate it quickly in memory with `let!` diff --git a/spec/uploaders/profile_image_uploader_spec.rb b/spec/uploaders/profile_image_uploader_spec.rb index 93274221f..302b36a2d 100644 --- a/spec/uploaders/profile_image_uploader_spec.rb +++ b/spec/uploaders/profile_image_uploader_spec.rb @@ -5,13 +5,13 @@ require "exifr/jpeg" describe ProfileImageUploader, type: :uploader do include CarrierWave::Test::Matchers - let_it_be(:mounted_as) { :profile_image } - let_it_be(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } - let_it_be(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } - let_it_be(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } - let_it_be(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } + let(:mounted_as) { :profile_image } + let(:image_jpg) { fixture_file_upload("files/800x600.jpg", "image/jpeg") } + let(:image_png) { fixture_file_upload("files/800x600.png", "image/png") } + let(:image_webp) { fixture_file_upload("files/800x600.webp", "image/webp") } + let(:image_with_gps) { fixture_file_upload("files/image_gps_data.jpg", "image/jpeg") } - let_it_be_changeable(:user) { create(:user) } + let(:user) { create(:user) } # we need a new uploader before each test, and since the uploader is not a model # we can recreate it quickly in memory with `let!` diff --git a/spec/workers/articles/score_calc_worker_spec.rb b/spec/workers/articles/score_calc_worker_spec.rb index daba5dcbd..e26edae93 100644 --- a/spec/workers/articles/score_calc_worker_spec.rb +++ b/spec/workers/articles/score_calc_worker_spec.rb @@ -13,9 +13,11 @@ RSpec.describe Articles::ScoreCalcWorker, type: :worker do end context "with article" do - let_it_be(:article) { create(:article) } - let_it_be(:comment) { create(:comment, commentable: article, score: 5) } - let_it_be(:second_comment) { create(:comment, commentable: article, score: 7) } + let(:article) { create(:article) } + let(:comment) { create(:comment, commentable: article, score: 5) } + let(:second_comment) { create(:comment, commentable: article, score: 7) } + + before { [comment, second_comment] } it "updates article scores", :aggregate_failures do allow(Article).to receive(:find_by).and_return(article) diff --git a/spec/workers/articles/update_main_image_background_hex_worker_spec.rb b/spec/workers/articles/update_main_image_background_hex_worker_spec.rb index f04ef105c..ef4da4088 100644 --- a/spec/workers/articles/update_main_image_background_hex_worker_spec.rb +++ b/spec/workers/articles/update_main_image_background_hex_worker_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Articles::UpdateMainImageBackgroundHexWorker, type: :job do describe "#perform" do context "with article" do - let_it_be(:article) { create(:article) } + let(:article) { create(:article) } it "updates articles main image background hex" do color_from_image = double diff --git a/spec/workers/badge_achievements/send_email_notification_worker_spec.rb b/spec/workers/badge_achievements/send_email_notification_worker_spec.rb index 95f4be0ad..10ed7e431 100644 --- a/spec/workers/badge_achievements/send_email_notification_worker_spec.rb +++ b/spec/workers/badge_achievements/send_email_notification_worker_spec.rb @@ -17,7 +17,7 @@ RSpec.describe BadgeAchievements::SendEmailNotificationWorker, type: :worker do end context "with badge achievement" do - let_it_be(:badge_achievement) { double } + let(:badge_achievement) { double } before do allow(BadgeAchievement).to receive(:find_by).with(id: 1).and_return(badge_achievement) diff --git a/spec/workers/comments/calculate_score_worker_spec.rb b/spec/workers/comments/calculate_score_worker_spec.rb index 89fbfd52d..9b51dbc09 100644 --- a/spec/workers/comments/calculate_score_worker_spec.rb +++ b/spec/workers/comments/calculate_score_worker_spec.rb @@ -7,8 +7,8 @@ RSpec.describe Comments::CalculateScoreWorker, type: :worker do let(:worker) { subject } context "with comment" do - let_it_be(:article) { create(:article) } - let_it_be(:comment) { create(:comment, commentable: article) } + let(:article) { create(:article) } + let(:comment) { create(:comment, commentable: article) } before do allow(BlackBox).to receive(:comment_quality_score).and_return(7) diff --git a/spec/workers/comments/create_first_reaction_worker_spec.rb b/spec/workers/comments/create_first_reaction_worker_spec.rb index 382a46a22..3f62e7c26 100644 --- a/spec/workers/comments/create_first_reaction_worker_spec.rb +++ b/spec/workers/comments/create_first_reaction_worker_spec.rb @@ -7,8 +7,8 @@ RSpec.describe Comments::CreateFirstReactionWorker, type: :worker do let(:worker) { subject } context "with comment" do - let_it_be(:article) { create(:article) } - let_it_be(:comment) { create(:comment, commentable: article) } + let(:article) { create(:article) } + let(:comment) { create(:comment, commentable: article) } it "creates a first reaction" do expect do diff --git a/spec/workers/comments/send_email_notification_worker_spec.rb b/spec/workers/comments/send_email_notification_worker_spec.rb index 08158b727..07916e2ce 100644 --- a/spec/workers/comments/send_email_notification_worker_spec.rb +++ b/spec/workers/comments/send_email_notification_worker_spec.rb @@ -16,7 +16,7 @@ RSpec.describe Comments::SendEmailNotificationWorker, type: :worker do end context "with comment" do - let_it_be(:comment) { double } + let(:comment) { double } before do allow(Comment).to receive(:find_by).with(id: 1).and_return(comment) diff --git a/spec/workers/data_update_worker_spec.rb b/spec/workers/data_update_worker_spec.rb index 92ffcb877..7e9f11462 100644 --- a/spec/workers/data_update_worker_spec.rb +++ b/spec/workers/data_update_worker_spec.rb @@ -2,9 +2,9 @@ require "rails_helper" require Rails.root.join("app/models/data_update_script.rb") RSpec.describe DataUpdateWorker, type: :worker do - let_it_be(:test_directory) { Rails.root.join("spec/support/fixtures/data_update_scripts") } - let_it_be(:worker) { described_class.new } - let_it_be(:statuses) { %w[working succeeded] } + let(:test_directory) { Rails.root.join("spec/support/fixtures/data_update_scripts") } + let(:worker) { described_class.new } + let(:statuses) { %w[working succeeded] } before do stub_const "DataUpdateScript::DIRECTORY", test_directory diff --git a/spec/workers/follows/create_chat_channel_worker_spec.rb b/spec/workers/follows/create_chat_channel_worker_spec.rb index cce8bb2ec..b5e376b21 100644 --- a/spec/workers/follows/create_chat_channel_worker_spec.rb +++ b/spec/workers/follows/create_chat_channel_worker_spec.rb @@ -7,9 +7,9 @@ RSpec.describe Follows::CreateChatChannelWorker, type: :worker do let(:worker) { subject } context "with follow" do - let_it_be(:user) { create(:user) } - let_it_be(:user2) { create(:user) } - let_it_be(:follow) { create(:follow, follower: user, followable: user2) } + let(:user) { create(:user) } + let(:user2) { create(:user) } + let!(:follow) { create(:follow, follower: user, followable: user2) } it "creates a chat channel when mutual followers" do follow2 = create(:follow, follower: user2, followable: user) diff --git a/spec/workers/follows/send_email_notification_worker_spec.rb b/spec/workers/follows/send_email_notification_worker_spec.rb index ff121c1c5..b1e672181 100644 --- a/spec/workers/follows/send_email_notification_worker_spec.rb +++ b/spec/workers/follows/send_email_notification_worker_spec.rb @@ -6,8 +6,8 @@ RSpec.describe Follows::SendEmailNotificationWorker, type: :worker do let(:mailer) { double } let(:message_delivery) { double } - let_it_be(:user) { create(:user) } - let_it_be(:user2) { create(:user) } + let(:user) { create(:user) } + let(:user2) { create(:user) } describe "#perform" do before do diff --git a/spec/workers/metrics/record_daily_usage_worker_spec.rb b/spec/workers/metrics/record_daily_usage_worker_spec.rb index cac06cd77..0fde00aca 100644 --- a/spec/workers/metrics/record_daily_usage_worker_spec.rb +++ b/spec/workers/metrics/record_daily_usage_worker_spec.rb @@ -1,16 +1,30 @@ require "rails_helper" RSpec.describe Metrics::RecordDailyUsageWorker, type: :worker do + let(:feedback_message) { create(:feedback_message, :abuse_report) } + let(:reaction) { create(:reaction, category: "vomit", user: user, reactable: first_article) } + let(:user) { create(:user, :trusted) } + let(:third_article) { create(:article, score: 38, nth_published_by_author: 3, comment_score: 2) } + let(:second_article) { create(:article, score: 5, nth_published_by_author: 2, comment_score: 0) } + let(:first_article) { create(:article, score: 15, nth_published_by_author: 1, comment_score: 25) } + let(:third_user) { create(:user, comments_count: 0) } + let(:second_user) { create(:user, comments_count: 2) } + let(:first_user) { create(:user, comments_count: 1) } + + before do + feedback_message + reaction + user + third_article + second_article + first_article + third_user + second_user + first_user + end + include_examples "#enqueues_on_correct_queue", "low_priority", 1 - let_it_be(:first_user) { create(:user, comments_count: 1) } - let_it_be(:second_user) { create(:user, comments_count: 2) } - let_it_be(:third_user) { create(:user, comments_count: 0) } - let_it_be(:first_article) { create(:article, score: 15, nth_published_by_author: 1, comment_score: 25) } - let_it_be(:second_article) { create(:article, score: 5, nth_published_by_author: 2, comment_score: 0) } - let_it_be(:third_article) { create(:article, score: 38, nth_published_by_author: 3, comment_score: 2) } - let_it_be(:user) { create(:user, :trusted) } - let_it_be(:reaction) { create(:reaction, category: "vomit", user: user, reactable: first_article) } - let_it_be(:feedback_message) { create(:feedback_message, :abuse_report) } + describe "#perform" do before do allow(DatadogStatsClient).to receive(:count) diff --git a/spec/workers/users/record_field_test_event_worker_spec.rb b/spec/workers/users/record_field_test_event_worker_spec.rb index a662cd486..ad5316b6f 100644 --- a/spec/workers/users/record_field_test_event_worker_spec.rb +++ b/spec/workers/users/record_field_test_event_worker_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Users::RecordFieldTestEventWorker, type: :worker do describe "#perform" do let(:worker) { subject } - let_it_be(:user) { create(:user) } + let(:user) { create(:user) } context "with user who is part of field test" do before do