* Introduce Github::OAuthClient and refactor shortcut Github::Client
* Better stubbing and fix specs
* Fix Badge rewarder
* Add dummy values for Travis
* Fix spec?
* Simplify
* Fix spec take 2?
* Is this the right one?
* Hopefully this is the last time, for realz
* Fix spec for the nth time?
* Which deity do I have to offer a sacrifice to?
* This is it
* Fix Honeycomb name
* Use Devise registry to list available providers
* Cleanups following Devise+Omniauth docs
* More cleanups
* Use helpers
* More cleanups
* Oops, forgot to remove these specs
* Add Authentication providers
* Making strides on refactoring
* New usr from Twitter
* Existing Twitter user
* Existing user Github
* Test skip_confirmation!
* Refactor a bit and add simplecov groups
* Test user already logged in
* Rename to Authentication::Authenticator
* Refactor to a common class
* Add existing user test for twitter login
* Refactor global handler
* Fix spec and comment Twitter provider
* Update comments and strategy TODO
* Move providers loading code to Authentication::Providers
* add SubclassResponsibility error
* Use delegation
* Add Slack::Announcer and SlackClient
* Add Slack::Messengers::Feedback class
* Use Slack::Messengers::Feedback and refactor test
* Should not raise an error if params are nil, let the job fail
* Add Slack::Messengers::Sponsorship
* Rename spec
* Use Slack::Messengers::Sponsorship
* Add Slack::Messengers::PotentialSpammer
* Use Slack::Messengers::PotentialSpammer
* Add Slack::Messengers::RateLimit and use it
* Refactor a bit and improve tests
* Add Slack::Messengers::Note and use it
* Use Slack::Announcer and fix spec
* Fix specs
* Update app/services/slack/announcer.rb
Co-Authored-By: Vaidehi Joshi <vaidehi.sj@gmail.com>
* Implement review suggestions
* Empty commit to trigger Travis
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
* No longer create identity in User factory
* Create view specs for users/edit.html.erb
* Update broken specs
* Make identities transient an explicit array
* Re-subscribe user to newsletter by setting MC status to pending
* Add guard clause and new spec
* Make trait name more explicit
* Fix guard clause and spec
It only runs when markdown has underscored usernames.
Skip escaping underscore when content is in code or codeblock. It works by
going through all lines of a markdown content. Find underscored username.
Escape if we are not in the codeblock.
The (?<!) is negative lookbehind which rules out the case
when a underscored username is present in code, e.g., `@_dev_` will not be escaped.
* Prepare factories and associations for Users::DeleteActivity specs
* Altered user associations, delete the needed associations in Users::DeleteActivity
* Moved and refined user deletion spec
* Removed useless commented user associations
* Refactored BackupData factory
* Refactored ProfilePin factory
* Refactored Reaction factory
* Fixed specs: Keep default _type in factories or specify it in tests
* Ok, notes shouldn't be deleted on user deletion
* Fixed creating reactable for specs
* Specify commentable/commentable_type explicitly when creating data for tests
* Fixed typo in the comments spec
* Removed unnneeded space
* Added aggregate_failures for testing user associations deletion
* Keep feedback_messages while deleting user activities
* Improved BadgeRewarder
* Replaced find_by with find_by! in BadgeRewarder to be aware of missing badges
* Fixed and organized BadgeRewarder specs
* Use let instead of let! in BadgeRewarder tests where needed
* Do not load messages in memory, just to count them
* Add Model.estimated_count
* Use Model.estimated_count in task record_db_table_counts
* Use size and estimated_count
* Use table_name so that .estimated_count works with all models
* Add comment to explain the .load.size + .each pattern
* Move from env variables to SiteConfig
Related to #5384
This PR only deals with the first remaining part outlined in the issue, starting to use existing SiteConfig keys instead of the env variables.
* Restore Envfile to original version for now
* Turn CacheBuster into a module
This class used no internal state, so repeatedly creating short-lived objects seems wasteful.
* Consistently use string interpolation and parenthesis
* Destructure arrays into meaningful names, formatting
* Fix request spec for internal classified listings controller
Interestingly this works when asserting directly on the module, but not on a double.
Asserting directly in the module seems sufficient for this test so the indirection
was removed.
* Turn CacheBuster into a module
This class used no internal state, so repeatedly creating short-lived objects seems wasteful.
* Fix specs after rebasing
* Rate limit daily user follows to 500 per day
Return an error in `POST /follows` JSON response when a user tries to follow more than 500 accounts in a single day.
Other Changes:
- Add a spec for follows#create.
* Turn daily account follow limit into an env var
* Avoid executing today follow count query when possible
user.following_users_count is a counter cache on how many users the person is already following, so if it's less than the limit we don't need to run the query and can just return it instead.
* Simplify today follow count query
Stop needlessly checking into the future, only check from the beginning of the day until now.
* Raise account follow limit error if followable_id count is over limit
Other changes:
- Always return JSON, the `respond_to` block from before was unnecessary since this endpoint always returns JSON.
- Rescue `DailyFollowAccountLimitReached` on the method and remove begin block, since the error can be raised from two places in the same method.
* Index created_at on users table
* Make adding created_at index on users table happen concurrently
* Rename DAILY_ACCOUNT_FOLLOW_LIMIT to RATE_LIMIT_FOLLOW_COUNT_DAILY
* Add RATE_LIMIT_FOLLOW_COUNT_DAILY to Envfile
* Move RATE_LIMIT_FOLLOW_COUNT_DAILY from env var to ApplicationConfig
* Run Inspecting 1050 files
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.....................................................................................................................................................................................................................................................................................................
Offenses:
spec/models/article_spec.rb:195:7: C: RSpec/NestedGroups: Maximum example group nesting exceeded [4/3]. (http://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NestedGroups)
context "when description is empty" do
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1050 files inspected, 1 offense detected to fix autofixable errors
* Refactor to correct test
it was braking the rule RSpec/NestedGroups: Maximum example group nesting exceeded [4/3]. (http://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NestedGroups)
* Run `rubocop --auto-gen-config` to regenrate `.rubocop_todo.yml`
* Regenerate rubocop todo
* Fix outstanding problems
* Fix Style/FormatStringToken
* Final update to rubocop todo file
* Set RSpec/ExampleLength to max 10 and regenerate todo file