docbrown/spec
Jeremy Friesen 61554af5e6
Ensuring the VideoPolicy adhears to article creation (#16762)
Videos are a conceptual subset of Articles (see
[VideosController#create][1] for supporting "evidence").  As such, we
want to ensure they conform to the expectations of the ArticlePolicy (as
described in forem/forem#16483).

This feature enhancement does a few things:

1. Renames swaps the `VideoPolicy#new?` and `VideoPolicy#create?`
   declarations (reversing the alias direction)
2. Moves methods out of the concrete ArticlesPolicy into the
   ApplicationPolicy.
3. Exposes these user oriented methods for external
   consumers (e.g. making future refactoring work easier).  The happy
   benefit is that this already removes a bit of duplicated logic.
4. Highlights that while yes the Policy is correct, we also may be
   flirting with the concept of some sort of User "properties as it relates
   to authorization" logic (good standing users, established users,
   etc.)
5. Reworked the timing of a guard clause and setting of instance variables.

[1]:
33e9bac0f7/app/controllers/videos_controller.rb (L18-L22))

Relates to #16483
Closes forem/forem#16728

To test this, I'm relying on the existing test suite.  I envision that
shifting from returning false for suspended users to raising an
exception might cause some false positive errors.  Note, in the
[AppliciationController][2] we handle the responses.  Paired with
[config/appliciation.rb][3], we handle the policy exceptions.

[2]:33e9bac0f7/app/controllers/application_controller.rb (L32)
[3]:33e9bac0f7/config/application.rb (L71-L81)
2022-03-07 15:27:18 -05:00
..
controllers/concerns 15 minute fix: Add default argument to JsonApiSortParam (#13369) 2021-04-14 10:32:07 +07:00
decorators Refactoring cached_followed_tags (#16175) 2022-01-24 19:53:48 -05:00
factories Require profile fields to belong to a group (#16390) 2022-02-15 09:27:18 -06:00
fixtures Remove duplicated work display from header / profile work (#14210) 2021-07-30 12:28:40 +02:00
forms Clear changes to settings after checking form saves them (#15746) 2021-12-14 08:39:14 -06:00
generator Add service generator (#11265) 2020-11-10 09:09:35 +07:00
helpers extra tweaks for i18n (#16192) 2022-02-23 06:48:52 -07:00
initializers A suspended user returns 403 instead of 500 (#16408) 2022-02-04 09:42:23 -05:00
lib Renaming method for clarity (#16791) 2022-03-07 12:55:56 -05:00
liquid_tags Implement Loom Embed (not merging now) (#16633) 2022-02-22 09:05:55 -05:00
mailers "Reply to" and "From" Email addresses for SMTP Configurations (#16499) 2022-02-16 16:14:54 +02:00
models Adding indirection for Tag#name to ease future work (#16703) 2022-02-28 16:32:04 -05:00
policies Ensuring the VideoPolicy adhears to article creation (#16762) 2022-03-07 15:27:18 -05:00
queries Fixes a name conflict in Rpush models (#15978) 2022-01-07 09:38:16 -06:00
refinements Update data exporter to handle admin send (#10274) 2020-10-26 18:00:56 -04:00
requests Redirect appended /moderate and /admin to the same page (admin member view) (#16779) 2022-03-03 19:40:03 -05:00
routing Scoping the :listing routes to feature (#16406) 2022-02-04 10:13:56 -05:00
sanitizers Don't sanitize anchor elements with no href (#16667) 2022-02-22 11:27:38 -06:00
serializers Refactoring to add helper method (#16064) 2022-01-12 11:21:44 -05:00
services Only fetch RSS of users who can create articles (#16766) 2022-03-04 14:06:38 -05:00
support Fix error in feed follow buttons where user name has apostrophe (#16758) 2022-03-02 15:53:48 -05:00
system Fix broken email settings documentation link (#16792) 2022-03-07 10:45:35 -06:00
tasks Make home link an admin-customisable navigation link (#16268) 2022-02-01 09:27:09 +00:00
uploaders Remove Remaining logo_svg Code (#16291) 2022-02-22 12:05:16 -07:00
validators Don't raise error when empty community emoji setting submitted (#15723) 2021-12-17 09:29:55 -06:00
view_objects Patching ERB rendering of the data-info JSON (#16067) 2022-01-14 08:30:49 -05:00
views quote localized strings in credits/purchase embedded script (#15623) 2021-12-01 10:07:55 -06:00
workers Favoring User scope as parameter for feed fetching (#16763) 2022-03-02 16:45:06 -05:00
i18n_spec.rb Show missing translation keys when test fails (#16637) 2022-02-17 16:21:29 -06:00
rails_helper.rb Let's be friends again, Rubocop (#16294) 2022-01-25 11:58:00 -05:00
spec_helper.rb Theme data update script, remove theme choices from UI (#15225) 2021-11-08 08:38:43 -05:00