Commit graph

87 commits

Author SHA1 Message Date
rhymes
3b4bda89df Upgrade Honeycomb gem, fix and improve RssReader tests (#2319)
* Switch from deprecated honeycomb-rails to honeycomb-beeline

* Improve error handling, tests and add refactoring

* Fix multiple fetching test and add one more

The test wasn't actually testing the correct behavior, because the class
by default force fetches. It worked because it wasn't reloading the user
from the database.

* Test that Honeycomb's client is doing its thing

* Use some defensive programming to avoid any possible problem during shutdown

* Fix typo

* Use the new API to add fields to the current measured event

* Use default instrumentation and add user info to event

* Replace user.email with user.username, less personal data around

* Use mocking instead of calling Honeycomb.init

* Freeze time before traveling

* Remove a flaky test dependent on rand
2019-04-07 15:27:53 -04:00
rhymes
a1787d0702 Fixed some Style/* rubocop violations (#2314)
* Fix Style/FormatString and Style/TrivialAccessors

* Fix Style/NegatedIf and Style/DoubleNegation

* Style/ClassAndModuleChildren is already enabled by default

* Fix Style/GlobalVars

* Group all style/ cops inside rubocop config file
2019-04-06 14:24:33 -04:00
rhymes
5e9867ec56 Simplify AnalyticsService code (#2308)
* Add basic tests for Analytics service

* User/Organization are always required

* Add some data to the test

* Use queries and date times

* Fix AnalyticsService interface in the controller

* s/HTTP_API_KEY/api-key

* Defend against nils and support datetime objects

* Update app/services/analytics_service.rb

Co-Authored-By: rhymes <rhymesete@gmail.com>

* Use SQL sum, not Rails sum

* Group average_read_time

* Use SQL, not Rails

* Use ISO date

* Fix specs
2019-04-04 16:07:57 -04:00
Andy Zhao
3e89796d9d Add API Analytics Endpoints (#2293)
* Add API endpoints for analytics

* Remove comment and spacing

* Use proper time formatting

* Refactor and clean up some logic

* Add pro and org member traits

* Use shared examples for analytics API spec

* Add analytics authorization specs

* Remove accidental include Pundit

* Raise not_authorized for invalid requests

* Make attributes and time methods private

* Add custom UnauthorizedError

* Raise and use rescue_from to handle 4xx requests

* Enforce date parameters to follow a specific format

* Use current user to allow same origin requests

* Use custom headers and not params for token auth

* Default to current user for same origin requests

* Use correct boolean for choosing user

* Update tests to use request headers and add stricter tests
2019-04-04 10:52:45 -04:00
Andy Zhao
7ade338002 Use nil instead of empty string w/ new db constraints (#2300) 2019-04-03 17:28:08 -04:00
rhymes
3a53d5797e Upgrade Rails to 5.2.3 (#1408) 2019-04-03 13:08:59 -04:00
Anna Buianova
509c11e86f New comment notifications to Active Jobs #1996 (#2287)
* Send new comment notification service + specs

* Call new comment notification service from the model

* Return to non-bang notifications create

* An ActiveJob for the new comment notifications

* Call comments notification ActiveJob from Notification
2019-04-03 11:38:30 -04:00
rhymes
54ccef4766 Fix error with articles API and unknown username (#2247)
Currently the articles API breaks the server when called with an unknown username. It should return nothing like when called with an unknown tag.
2019-03-31 10:47:48 -04:00
Jess Lee
9f74fd3794 Clear cache when merging users (#2229) 2019-03-28 12:26:14 -04:00
Anna Buianova
e1968e815b Extract new reaction notification to ActiveJob (#2122) 2019-03-25 13:54:21 -04:00
Abraham Williams
9cb40e546b Enables Rails cops (#2186)
* Enable Rails cops

* Fix Rails/DynamicFindBy

* Fix Rails/HttpStatus

* Fix Rails/Blank

* Fix Rails/RequestReferer

* Fix Rails/ActiveRecordAliases

* Fix Rails/FindBy

* Fix Rails/Presence

* Fix Rails/Delegate

* Fix Rails/Validation

* Fix Rails/PluralizationGrammar

* Fix Rails/Present

* Fix Rails/Output

* Fix Rails/Blank

* Fix Rails/FilePath

* Fix Rails/InverseOf

* Fix Rails/LexicallyScopedActionFilter

* Add Rails/OutputSafety to TODO

* Add Rails/HasManyOrHasOneDependent to TODO

* Add Rails/SkipsModelValidations to TODO
2019-03-25 09:25:55 -04:00
Jess Lee
1b0cb47916 Merge user and give pro users trusted role (#2176)
* remove pro privelges from other roles and add trusted role for pros

* add merge user routes and methods

* add specs

* add more specs

* update languauge on /internal for clarity

* fix code climate error
2019-03-22 16:20:31 -04:00
cyrillefr
a2fcbdc4a4 Enable performance rubocop cops (#2140) 2019-03-21 16:01:45 -04:00
Tim Lange
3494264404 Enabled rubocop/lint (#2130)
* WIP: Enabled rubocop/lint

* FIX: Fixed failing test

* FIX: Small change to return

* FIX: Changed indent
2019-03-21 10:53:44 -04:00
Anna Buianova
f0e9c0cfef Extract sending new follower notification to a separate job (#2030) 2019-03-20 12:51:09 -04:00
Jess Lee
9c1e10cd9f Improve Internal Dashboards features(#2043) 2019-03-18 16:29:11 -04:00
Keshav Biswa
8d57d45ecc Rubocop Style cops enabled (#2056)
* Rubocop enabled style/alias

* Enabled Style/ArrayJoin Cop

* Enabled Style/Attr

* Enabled Case Equality

* Enabled CharacterLiteral

*  Enabled ColonMethodCall Cop

* Enabled CommentAnnotation cop

* Enabled PreferredHashMethods Cop

*  Enabled DoubleNegation Cop

* Enabled EachWithObject Cop

* Enabled EmptyLiteral Cop

* Enabled EvenOdd Cop

* Enabled IfWithSemicolon Cop

* Enabled Lambda and LambdaCall Cop

* Enabled LineEndConcatenation Cop

* Enabled ModuleFunction Cop;

* Enable NegatedIf and NegatedWhile Cop

* Enabled NilComparison Cop

* Enabled Not Cop

* Enabled NumericLiterals Cop

* Enabled OneLineConditional Cop

* Enabled PercentLiteralDelimiters Cop

* Excluded internal/users_controller from negated_if cop

* Reverted the double negation change from github_issue_tag and github_issue.rb"

* Enabled PerlBackrefs Cop

* Changed Regexp.last_match(1) to Regexp.last_match(0)

* Enabled proc cop

* Enabled RaiseArgs Cop

* Reverted Regexp.last_match(0) to Regexp.last_match(1)

* Enabled SelfAssignment Cop

* Enabled SingleLineMethods Cop

* Enabled SpecialGlobalVars Cop

* Enabled VariableInterpolation Cop

* Enabled WhenThen Cop

* Enabled WhileUntilModifier Cop

* Enabled WordArray Cop

* Enabled IfUnlessModifier Cop

* Enabled GuardClause Cop
2019-03-15 18:33:54 -04:00
Andy Zhao
f93af16fbe Remove notifications when banishing and deleting a user (#2039)
* Make remove_notifications a public method

* Remove notifications when banishing or deleting
2019-03-13 17:54:47 -04:00
Andy Zhao
5ace9a5fc9 Organization Notifications (#1762)
* Add spec for org reaction notification

* Add organization_id to notifications

* Add validations for user and org IDs

* Move comment json_data out of loop

* Use actual column names instead

* Add organization filters

* Remove extra text-align

* Add organization filtering

* Refactor to reduce complexity

* Add receiver argument to handle orgs

* Add has_many notifications for orgs

* Add follow notifications for orgs

* Add comment notifications for orgs

* Rename some tests for specificity

* Add mark org notifications as read functionality

* Add radix to parseInt

* Define json_data outside of loop

* Notify org followers of a new post as well

* Move test to proper location

* Add test for aggregated method

* Make send org reaction notification more readable

* Test the rest of the notification model

* Refactor tag adjustment spec

* Fix extra html
2019-02-25 14:25:37 -08:00
Andy Zhao
84fbbed82a Add profile_updated_at to clear cache key (#1795) 2019-02-14 12:05:47 -05:00
Jess Lee
49e3878239 Add Stripe Cancellation Webhook (#1682) 2019-02-13 15:56:19 -05:00
Ben Halpern
2d97a5d837
Improve performance for additional content boxes and tags index (#1750)
* Improve performance for additional content boxes and tags index

* Modify followed_articles endpoint with new classic article api
2019-02-06 16:50:35 -04:00
Jess Lee
54426ea20b Enhance Internal Index Pages (#1747)
* add more info to internal users index

* create tag show page and add tag moderation form

* fix linting

* add tag index view and alias field

* add pagination to tag index

* fix spec
2019-02-06 10:25:19 -04:00
Ben Halpern
152f4a52ea
Remove unnecessary queries (#1717)
* filter unnecessary queries

* Adjust article query in a couple places

* Replace tagged_with in main tag query

* Cache_tagged_with additional queries

* Modify test

* Modify cached_tagged_with to account for single tags

* Add cached_tagged_with in a few more places
2019-02-02 21:40:34 -04:00
Jess Lee
af2915b086 Fix Banisher Updates (#1704)
* delete activity before updating username

* fix linting

* remove unnecssary return
2019-02-01 17:10:17 -04:00
Jess Lee
d36418a62a Clear profile cache on banish (#1702)
* save spam username as old username

* keep old username for reference
2019-01-31 15:38:01 -04:00
Jess Lee
d5b8454738 stop using active record method on a non-active record object (#1676) 2019-01-29 15:02:02 -05:00
Jess Lee
9d72091f42 add mailchimp unsub when deleting or banishing user (#1644) 2019-01-24 16:14:10 -05:00
Jess Lee
0eb5402926 Delete User Functionality (#1615)
* add full delete route and update banisher

* add user deletion spec

* enhance styling

* remove availability if banned from mentorship

* add specs

* do not show banned mentors

* delete addiional associations

* include more associations for deletion

* simplify activity deletion wtih delete_all
2019-01-23 16:57:32 -05:00
Ben Halpern
b1f18f5bbc
Improve feed and add more randomness (#1570)
* Improve feed and add more randomness

* Fix tests

* Fix test score calc

* Modify home page test criteria
2019-01-16 16:01:14 -05:00
rhymes
a0c9576bec Export comments (#1471)
* Use name attribute

* Export comments

* Update copy

* Fix time-dependent test

* Remove reactions_count from the export

* Only select needed attributes from the DB

* Add the path of the commentable to the export

Comments are attached to something but from the export that is not easily identifiable. We add the "commentable_path" to give some context.
2019-01-16 12:54:45 -05:00
Ben Halpern
9736d411d3
Fix get_all_articles in RssReader (#1566) 2019-01-15 22:25:30 -05:00
rhymes
dee7429883 Replace each with find_each for AR queries (#1557) 2019-01-15 16:38:03 -05:00
Ben Halpern
7f7a35048a
Find by title or feed source URL in rss fetch (#1560) 2019-01-15 15:34:13 -05:00
Ben Halpern
47e8fbc9ec
Add feed_fetched_at for users to not refetch unnecessarily (#1555)
* Fix RSS issues by not refetching users as often

* Make rss fetch not forced in rake task

* Remove unnecesary schema line
2019-01-15 13:29:11 -05:00
Mac Siri
f780e5fbc9 Refactor RssReader (#1537)
* Update RssReader::get_all_articles

* Move RssReader to services

* Create RssReader::Assembler

* Improve RssReader's spec
2019-01-14 14:25:49 -05:00
Ben Halpern
2fd314e40b
Fix chat css and banish logic (#1515) 2019-01-10 18:09:42 -05:00
Ben Halpern
b4384867ad
Remove access_token key for twitter dump (#1510) 2019-01-10 11:48:27 -05:00
Jess Lee
5e4508ebe1 Remove callbacks from banisher + specs! (#1501)
* wip remove callbacks from banisher

* remove pry
2019-01-09 15:12:38 -05:00
rhymes
dbf5fc63ad Fix Rubocop Security/Open (#1447)
* Re-run rubocop autogen config

* Fix Layout/* violations

* Fix Security/Open and use HEAD if GET is not needed
2019-01-02 16:35:19 -05:00
rhymes
6553f08d94 Rubocop cleanups (#1415)
* Update rubocop-todo.yml with new violations

* Fix Layout/EmptyLine* rules

* Fix Layout/Indentation* rules

* Fix remaining Layout/* rules

* Fix Lint/DuplicateMethods by removing unused accessor

* Fix Lint/IneffectiveAccessModifier

* Fix Lint/MissingCopEnableDirective

* Re-run rubocop auto gen config

* Fix Layout/RescueEnsureAlignment

* Fix Naming/* rules

* Fix some RSpec/* rules

* Fix typos

* Fix RSpec/LetBeforeExamples

* Series should only be an attr_writer, not an attr_accessor

* Fix RSpec/InstanceVariable

* Fix RSpec/InstanceVariable

* Fix RSpec/RepeatedDescription and RSpec/RepeatedExample

* Fix Style/ClassAndModuleChildren

* Fix Style/ConditionalAssignment

* Fix some Style/* rules

* Trigger Travis CI build because failing tests are not failing locally

* Revert "Fix Style/ClassAndModuleChildren"

This reverts commit 1686801d8a1516ba1894f79e24401a20dea65f99.
2019-01-02 11:20:02 -05:00
Arun Kumar
cfcc204a20 Minor refactor (#1443)
* Rescue `ActiveRecord::RecordNotFound` exception instead of `StandardError`

* Replace `!blank?` call with `present?`
2019-01-02 10:42:42 -05:00
rhymes
96d01b20a2 Use allow/allowed instead of whitelist (#1296)
* Use allow/allowed instead of whitelist

* Remove duplication in comment
2018-12-10 13:16:16 -05:00
Jess Lee
f96bc7c6f3 Revert banisher (#1274)
* remove stalebot from milestone issues

* simplify banisher
2018-12-06 13:44:53 -05:00
Ben Halpern
6b96201265
[WIP] Allow mods to remove tags and send user notification (#1252)
* Initial tag adjustments

* Finalize tag adjustments and tag adjustments controller

* Fix schema.rb

* Finalize tag removal logic

* Adjust edge cases/tests for tag adjustment moderation

* Adjust tag adjustments spec
2018-12-04 16:45:32 -05:00
Ben Halpern
1672098388
Removing clear notifications attempt (#1209)
* Removing clear notifications dealy

* Fix user_id issue
2018-11-27 18:29:50 -05:00
Ben Halpern
db6232adf3
Add initial ios push notifications to server (#1207)
* Add initial push notification logic for iOS

* Adjust notification form css

* Clean up schema.rb

* Add mark-all-as-read functionality for ios notifications

* Update app/models/notification.rb

Fix `find` to `find_by`

Co-Authored-By: benhalpern <bendhalpern@gmail.com>
2018-11-27 17:40:43 -05:00
Jess Lee
e36cf51a9e Refine Banish User (#1168)
* add banish user test

* refactor banish user wip

* banish user wip - bust comment cache synchronously

* add more spec scenarios

* Update Banish#strip_user_profile

* Refactor specs
2018-11-21 16:55:26 -05:00
rhymes
915e2d77b6 Export articles/posts (#576)
* Add EditorConfig file for all editors

* Add article export service

* Add setting to request an export of all articles

* On the outside they are called posts

* Add articles exported email to mailer and service

* Refactor to one public method and test flags

* Trigger the export if it was requested and send the email

* Recreated migration file with generic export fields

* Rename fields and switch to a whitelist

* Refactor ArticleExportService into a more generic structure

* Rename articles_exported_email to export_email

* Fix notify mailer spec

* Rename Exporter::Exporter to Exporter::Service

* Remove commented out line

* Removed body_html, coordinates and updated_at from export

* Invert DJ config

* Update spec
2018-11-21 11:13:36 -05:00
Andy Zhao
a1010201f2 Notifications part 2 (#1156)
* Remove stream and add new notification views

* Actually remove Stream

* Move followers query to async method

* Remove unused tests and fix query

* Try using without delay instead

* Add without delay and escape HTML

* Make all tests pending for now
2018-11-19 18:14:24 -05:00