* Add one reaction to each article when seeding the database
* Add reaction to article when created
and sync reactions count.
There's still a gap where the redis-cached reaction count could be
present but not cleared during seeder runs (redis is disconnected for
caching and rails cache is set to the null store). Since we are able
to enqueue sidekiq jobs redis is live - but it's a bad idea to use
sidekiq's connection to flush keys in redis.
* Make the reaction count update script a no-op
* Remove unused data update script and limit user id queries
Pull all user ids into an array before you start creating articles,
and sample from the array rather than repeatedly asking for the first
user from a random ordered db result.
* fail if we can't create reaction
thanks @jgaskins
Co-authored-by: Jamie Gaskins <jamie@forem.com>
* Revert "fail if we can't create reaction"
This reverts commit c35f6d47d2e8956a240133b9e6ad0d144f1b4722.
There is a uniqueness constraint on (user, reactable, category) that
could be triggered when seeding due to random selection. It's better
to skip creation when a validation error occurs than to break the seed
completely.
There are expected to be 0-9 reactions per article, we don't require a
set number on each article, and likely won't notice any specific
problem if the random number is one lower than it would have been
because some reactions were skipped due to uniqueness violations.
Co-authored-by: Jamie Gaskins <jamie@forem.com>
* Fix and clean up podcast pages
* Adjust tests
* Fix a test
* Fix missing i18n
* Fix tests
* Fix tests
* Fiddle with test
* Sure up css and tests
* Add featured as allowed param
* Fix a couple tests
* xit out test
* Update app/views/podcast_episodes/index.html.erb
* Update app/views/podcast_episodes/index.html.erb
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
* When calling Faker::Markdown, avoid "sandwich" method
Since random can also be selected by random (without the exclude
list), avoid calling sandwich occassionally from random's call to
random.
This avoids generating body_markdown exceeding 12 newlines (which is
validated in Listing and prevents save, breaking the seeds process).
* just take 10 lines, don't be clever
Co-authored-by: Jamie Gaskins <jamie@forem.com>
Co-authored-by: Jamie Gaskins <jamie@forem.com>
* schema file undelete description
* feat: v1 of the script
* Flesh out remaining enums under their categories
* complete UsersSettings data update script
* complete DUS for relevant attributes in users and profiles tables
* complete DUS for users_notification_settings
* alphabetize user_settings sql file
* safeguard against null values for "null: false" settings
* Set up actual UsersSettings DUS and specs files
* fix broken DUS script
* complete specs for UsersSetting DUS
* Address QA of specs
* complete specs for users_notification_settings DUS
* fix the typos (thanks Julianna!)
* begin implementation
* still building
* add missing attribute "email_membership_newsletter"
* complete sync code (except race condition for user profile)
* complete implementation, remains tests
* Address PR review and fix Travis fails
* remove superfluous Profile.new
* fix travis fails
* feat: update the users_notification_setting attributes from the user model
* feat: use the config fonts enums to display the fonts
* feat: loop through the keys
* fix profile = nil blowing up; add specs for notification_setting model
* remove unneeded spec
* remove feed validation until after sync code removed; fixes feed_import spec failures
* remove spec associated with feed_url validation in user_setting model
* fix failing spec 😅
* add TODO
* feat: set the user settings in the user controller and use it in the customization form
* feat: move some update logic to the users settings controller thats being used from customization
* feat: show the updated values form the users_settingd and not the user instance
* Generalize redirect back to current tab
* still trying to reflect changed theme upon refresh
* customizations take effect on refresh
* remove 'with_feed' scope from user model
Co-authored-by: Jamie Gaskins <jamie@forem.com>
* start with takeover for fields previously in profiles table
* Takeover code for `publishing_from_rss` section in Settings (#13914)
* implement takeover code part 1
* implement takeover code
* fix feed fetch
* need rhymes help
* complete implementation; specs pending
* fix STUPID omission that caused so many headaches 😫
* implement profile fields pointing to users_settings 🎉
* run migrations
* implement inbox type & guidelines takeover code; specs pending (#13911)
* Point changes in notification settings to `users_notification_settings` table (#13910)
* implement takeover code; remains specs
* address PR feedback; remove related sync code
* address PR review feedback
* need help with routing and specs
* address pr review
* addressing pr review
* Treat implementation edge cases and omissions 😅
* fix uncommented comment
* fixing implementation cases
* address more PR review feedback
* fixing notifications use-cases
* refactor settings controller
* more pr review changes
* solving bugs
* fix broken onboarding
* handle eperience_level calls
* more fixes
* remove unneeded mappings
* add To-dos for quety updates
* remove done TODO
* purge done TODOs
* update notification_settings-related queries
* start fixing specs
* fixing specs
* fix notification and lrg_forem specs
* fixing broken specs
* still fixing
* fix line dif and remove reloads from user.rb
* run specs
* silence bullet and other fixes
* remove setting migration scripts and specs, fix more settings for specs
* handle missing user for article builder and fix notification specs
* fix some final controller specs and re-add incorrectly removed specs
* remove deprecated data update scripts and related workers, put travis back
* refactor admin tags mods controller, write/move specs for users notifications settings controller
* schema cleanup and other small refactors for consistency
* set field we can invalidate in spec via active record instead of at the db level
* remove I think an uneccessary hook call from subscribe_to_mailchimp_newsletter
* use bnefore_create to setup settings, please dont blow up the test suite
* mailchimp bot fix
* remove decorator in favor of single model method
Co-authored-by: Arit Amana <msarit@gmail.com>
Co-authored-by: Ridhwana <ridhwana.khan16@gmail.com>
Co-authored-by: Arit Amana <32520970+msarit@users.noreply.github.com>
Co-authored-by: Jamie Gaskins <jamie@forem.com>
* Rename SiteConfig
* More renaming
* Update spec
* Update mandatory settings mapping
* More renaming
* e2e test fixes
* You have a rename, and you have a rename
* Spec fix
* More changes
* Temporarily disable specs
* After-merge update
* Undo rename for migration
* undo rename of DUS
* Fix DUS
* Fix merge problem
* Remove redundant DUS
* Fix specs
* Remove unused code
* Change wrong class name
* More cleanup
* Re-add missing values to constant
* Fix constant
* Fix spec
* Remove obsolete fields
* Add accidentally removed field
* Update spec
* Move methods from Settings::General to ForemInstance
* Remove unneeded model
* Change mentions of 'site config'
* Added custom seed task
* Added a test for the initial login for the intial admin of a forem instance.
* Renamed admin login seed data file.
* Pulled functions out of main Cypress plugin file and import them now.
* Added some comments.
* Added a comment about Cypress tasks requiring a return value to be considered successful.
* Moved admin_login_setup seed file to spec folder.
* Made change requests in regards to rake task.
* Fixed reference to SiteConfig
* Created the seeder class to be shared for all seed files.
* Added a missing param to function comment.
* Fixed seeder require in e2e test seed file.
* Fixed seeder require in seeds.rb. Why is Rails.root required?
* Added an environment guard for not being production in the e2e seed task.
* Made seeder require relative.
* Trying something for the Elastic Search issue in CI.
* Revert "Trying something for the Elastic Search issue in CI."
This reverts commit 7cb2a963c8ac1f9242c612a1b9fe8ff814605df6.
* Search indices are now removed via bundle exec rake search:destroy
* Now rake search:destroy is used in the Cypress task for resetting data as well.
* Moved Seeder class to app/lib
* Added cypress-rails
* Got two flows working with db rollbacks.
* Trimmed down the e2e dataset for now.
* Added a custom Cypress command to encompass test setup.
* removed unused e2e rake task
* added some user login/password e2e tests.
* Added a note about Cypress not cleaning cookies, so we do for the moment.
* Removed code no longer required.
* Removed comment in test that is no longer pertinent to the test suite.
* Removed data cleaning plugins as cypress rails gem handles it now.
* Added @citizen428's recommendation got raising an error if trying to seed production.
* Temporarily have paralleziation of e2e tests disabled to figure out cypres-rails/knapsack pro integration.
* Doh! Forgot a semi-colon in the Travis config.
* Added a comment about not integrating cypress-rails/knapsack pro right now.
* Removed knapsack pro npm package for now as we aren't using it.
* Reworded comment about cypress-rails/kanpsackpro.
* Removed seeding for tags to follow for onboarding in e2e seed data.
* Made pree2e script e2e:setup so it only runs explicitly when needed.
* Renamed bin/e2e to bin/e2e-ci.
* Created a new script for local e2e testing.
* Removed RAILS_ENV as it's in the e2e-ci script already.
* Fixed an auto corrected command.
* Fixed wording in e2e script prompt.
* Removed bundle exec rake data_updates:run that I had added. Doesn't appear to be necessary.
* Added missing new lines.
* Renamed e2e seed file and only use that one now. THere are no others.
* Some script cleanup.
* Added a check for the E2E environment so as to not pollute system tests.
* Now e2e test server cleanup occurs when the server shuts down.
* Put puts as this is really just for testing.
* Put environment variable in the proper place for runnning bundle exec.
* Added a check to only run for E2E tests.
* Some bash script formatting.
* Removed copy paste irrelevant comments.
* Updated e2e server shutdown message.
* Now a data-testid attribute is used for finding the user account errors panel.
* Made test selectors ignore casing of text.
* Removed prod paranoia check in e2e seed file.
* Refactored spec to use new cy.loginUser(user) command.
* Update app/lib/seeder.rb
Co-authored-by: Michael Kohl <citizen428@dev.to>
* Fixed flakiness that @aitchiss was experiencing.
* Rubocop fix.
* Due to a Cypress issue, fixing cookie clearing with another tweak.
* Bumped the wait time to 500ms if cookies don't clear.
* Added a 'bundle check' to the bin/e2e script as suggested by @katiedavis.
* Removed some white space
Co-authored-by: Michael Kohl <citizen428@dev.to>
* Render left sidebar attributes on profile
* Display header profile fields
* Make changes to protect DEV data
* Don't render DEV header fields twice
* Wrap profile UI changes in a FeatureFlag
* Add spec to test mulitple display areas
* Use select over reject
Co-authored-by: Michael Kohl <me@citizen428.net>
* Move comment for documentation generators
* Update dev profile fields csv data
Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
* Prepare to drop profile columns from user
* Update code and factory
* Also remove unused constant
* Move validation from user to profile
* Remove Profiles::ExtractData service object
* Add more comments
* Simplify sameAs attribute generation
* Obey me machine, I am your master
* Fix condition order in guard clause
* Temporarily disable callback
* Fix specs
* Reduce usage of Profile#refresh_attributes!
* Remove leftover comment
* Handle social media links differently
* More spec fixes
* Fix specs for admin profile fields controller
* Fix specs after merge
* Fix remaining specs
* Update user show request spec
* Add comment for follow_hiring_tag
* Only save profile when user is valid
* Fix seeds.rb for profile fields
* Switch from before_save to after_save
* Undo unrelated formattin change
* Update spec/fixtures/files/profile_fields.csv
Co-authored-by: Molly Struve <mollylbs@gmail.com>
* Remove data update script and spec
* Fix spec
* Fix typo in comment
* Fix typo in comment
* Move article resave logic to service object
* Move profile field creation to before(:suite)
* Refactor error handling in Profiles::Update
* Fix Profiles::Update specs and refactor
* Temporarily disable spec
* Add ProfileValidator
* Clean up
* Move DB ready check into app/lib
* Refresh attributes after importing from CSV
* Fix specs
* Remove unused file
* A girl has no name. A profile neither.
* Fix specs
* Add responds_to? check
* Spec fix
* Add name to user fields in profile settings page
Co-authored-by: Molly Struve <mollylbs@gmail.com>
* Fix NoMethodError for tag moderators channel
In development, it is possible to hit a NoMethodError when adding a tag
moderator because the "tag-moderator" slug is hard-coded.
This change helps mitigate that by adding a safe navigation operator. We
can always remove it if we decide to get rid of the hard-coded value.
Secondarily, it adds this channel to the seeds file, since we pretty
much expect it to exist.
* Move nested conditional
* feat: configure the frontend for sidebar nav links
* chore: add a comment
* changes to the admin interface
* feat: move the temporary task to be in the rake tasks and use it in the dev seeds
* feat: use the task in the rake seeds
* refactor: reuse the form across two modals
* refactor: use the form partial
* feat: change the modal to be large
* fix: naming
* Update db/seeds.rb
Co-authored-by: Michael Kohl <me@citizen428.net>
* chore: make the file readable
* chore: removed the if else as the rake task was run on all forems + i sent out a message to new communities
* oops
* refactor: add a scope
* chore: oops removed this
* feat: add navigation links specs
* spec: fix two failing ones
Co-authored-by: Michael Kohl <me@citizen428.net>
* Showing date in listing tile
* Displaying date in listing tile
1. Sending created_at in listing search API
2. Global util functions for short and long date formatting
3. New date util functions extend timestampToLocalDateTime
4. Converting div to time tag
5. Adding title attribute for date
* originally_published_at column
* Displaying originally_published_at date
* Fixing test in modal
* Fixing all listing test
* Fixing casing of dateTime
* Adding tests for originally_published_at
* Reverting to bumped_at
* Backfilling only published listing
* Removing ReIndexListingWithOriginallyPublishedAt
* Allow initial user to sign up and configure app
* Fix added value unneeded
* Make siteconfig public in tests
* Remove deprecated method and adjust seed default
* Add new controllers not to redirect for public
* Modify tests
* Edit test defaults
* Fix linting
* Add starter mode to seed file
* create listing endorsement model and write test to validate it
* create the classified_listing_endorsements table
* create model associations with seed data and test validations
* modify test and create more seed date for endorsement
* modify the model naming, changed seed data to become radomized and updated the test file
* remove unnecessary function
* Fix schema.rb
* Add service objects for base and link fields
* Add link fields to seeds
* Make placeholder a keyword argument
* Add work fields
* Add explanation column to profile fields
* Add coding fields
* Switch from inheritance to mixin
* Add email checkbox to base fields
* Add branding fields
* Add spec for ProfileFields::FieldDefinition
* Move migration back into correct location
* Rename column from explanation to description
* Rename attribute in mixin
* chore: rename from explanation to description
* Add ProfileFields::ImportFromCsv
* Simplify ProfileFields::ImportFromCsv
* Add comment about disabled cop to spec
* Add TODO comment to Rake task
* Document mixin
* Add groups to profile fields
Co-authored-by: Ridhwana <ridhwana.khan16@gmail.com>
* Enable new Rails/* cops and use autocorrect on them
* Fixed Rails/PluckInWhere leftovers
* Fix Rails/DefaultScope
* Enable and fix Rails/PluckId
* Fix manual mistake with forcing autocorrection on Rails/PluckId
* Apply PR feedback to remove Rails/PluckId inline disables
* Apply PR feedback to get rid of Rails/PluckInWhere inline
* We don't want to do devel seeding in production mode when using db:prepare. This
PR fixes that. We can also use seeds.rb to do production seeding for new Forems
in the future.
* Just return if in production instead of wrapping the entire file in an if statement.
* Use pick instead of pluck first
* Use touch_all instead of update_all
* Use destroy_by instead of where.destroy_all
* Use scopes
* Fix db:seed:replant
* Remove ActiveSupport::Cache::RedisCacheStore expires_in cache