docbrown/spec/models
Jeremy Friesen fe2e53cc50
Moving Experiments into AbExperiment namespace (#17532)
* Moving Experiments into AbExperiment namespace

This commit entails two major concepts:

1. Extracting logic out of a worker.
2. Cleaning the conditions in which we convert experiments.

In addition, I revisited some spec names to tidy them up for
clarification and structure.

**Extracting Logic...**

For workers, my preference is that they be a simple router to another
object.  A non-worker object, with it's initialize method, can both
better manage instance variables.  Further, workers are somewhat "flat"
in hierarchy,

In this case, having the AbExperiment be knowledgeable both in setting
the experiment and handling conversions makes (to me) organizational
sense.  For example, the AbExperiment is constructed as a wrapper to the
FieldTest gem.  But the RecordFieldTestEventWorker had knowledge of
FieldTest.

With this refactor, it does not have that knowledge.  This also provided
an opportunity to replace magic strings with constants.

**Cleaning the conditions...**

This relates directly to and closes forem/forem#17530.  I was looking at
the experiments after 2 days, and realized that there shouldn't be
results for
`user_views_pages_on_at_least_nine_different_days_within_two_weeks`;
after all the experiment started 2 days ago, how can we have results
that look at 2 weeks.

By adding the "max" function calls, we ensure a clear boundary of
"before the experiment began" versus "while the experiment is running".

Closes forem/forem#17530

* Update spec/models/ab_experiment_spec.rb

Co-authored-by: Mac Siri <krairit.siri@gmail.com>

* Apply suggestions from code review

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

Co-authored-by: Mac Siri <krairit.siri@gmail.com>
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
2022-05-03 21:34:12 -04:00
..
ab_experiment Moving Experiments into AbExperiment namespace (#17532) 2022-05-03 21:34:12 -04:00
ahoy [deploy] Rubocop: fix Rails/HasManyOrHasOneDependent for Ahoy::Visit and Badge (#9565) 2020-07-31 11:43:50 -04:00
articles Removing WeightedQueryStrategy; use VariantQuery now (#17420) 2022-04-27 09:19:09 -04:00
concerns Remove Elasticsearch ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ (#13606) 2021-05-03 11:09:45 -04:00
settings Don't modify environment global in tests (#16943) 2022-05-02 11:11:43 -05:00
shared_examples Spelling (#15702) 2021-12-07 06:59:10 -07:00
users Patching ERB rendering of the data-info JSON (#16067) 2022-01-14 08:30:49 -05:00
ab_experiment_spec.rb Moving Experiments into AbExperiment namespace (#17532) 2022-05-03 21:34:12 -04:00
admin_menu_spec.rb Removing conditional for AdminMenu's spaces (#17162) 2022-04-28 08:49:59 -04:00
api_secret_spec.rb Limit the Number of API Keys a User Can Have (#7870) 2020-05-15 11:33:02 +02:00
application_record_spec.rb Patching ERB rendering of the data-info JSON (#16067) 2022-01-14 08:30:49 -05:00
article_destroy_spec.rb [deploy] Rubocop: fix violations of Layout/LineLength (#9197) 2020-07-08 08:36:36 -05:00
article_spec.rb Replace links to the repo with newer URLs (#17319) 2022-04-18 22:11:31 -04:00
async_info_spec.rb Conditional rendering of "Create Post" link (#17076) 2022-04-05 12:47:12 -04:00
audit_log_spec.rb Add missing presence validators to models (#10495) 2020-10-01 16:15:32 +02:00
badge_achievement_spec.rb Configure badge credits by admins (#13145) 2021-03-30 10:58:48 +03:00
badge_spec.rb Refactor cache purging (#12811) 2021-03-02 10:09:05 -05:00
banished_user_spec.rb
broadcast_spec.rb Fix Rails/HasManyOrHasOneDependent for Broadcast and Collection (#9662) 2020-08-07 14:27:24 -04:00
collection_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
comment_spec.rb Revert "Added a way to sort comments on an article (#16686)" (#17093) 2022-04-04 08:36:34 -04:00
consumer_app_spec.rb ForemMobile namespaced functions (#15212) 2021-11-23 15:25:29 -06:00
context_notification_spec.rb Context Notifications (#17243) 2022-04-18 10:30:30 +03:00
credit_spec.rb Flaky Spec Fix:Remove let_it_be Test Prof Helper (#9556) 2020-07-29 11:31:01 +02:00
data_update_script_spec.rb Save Data Update Script errors to database and show them on http://localhost:3000/admin/data_update_scripts (#12348) 2021-01-21 14:48:34 +01:00
device_spec.rb Add mutable flag to APNS notifcation payload (#14777) 2021-09-21 15:37:43 -05:00
discussion_lock_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
display_ad_event_spec.rb Extracting constants and tidying tests (#15946) 2022-01-05 09:19:39 -05:00
display_ad_spec.rb Remove organization dependency and improve display ad UX (#14913) 2021-10-05 08:29:08 -04:00
email_authorization_spec.rb Routine Rubocop fixes (#16838) 2022-03-09 09:32:50 -05:00
email_message_spec.rb Delete old retained emails after certain period (#14949) 2021-10-12 16:27:13 -04:00
feedback_message_spec.rb app/models i18n (#16124) 2022-02-03 13:41:42 -05:00
follow_spec.rb Routine Rubocop fixes (#16838) 2022-03-09 09:32:50 -05:00
forem_instance_spec.rb Don't modify environment global in tests (#16943) 2022-05-02 11:11:43 -05:00
github_issue_spec.rb Implement Unified Embeds for Github Repo, Issue, Pull-Request and Comment URLs (#16422) 2022-02-07 16:38:43 -05:00
github_repo_spec.rb POC: use Sidekiq.perform_bulk for Github repos (#16293) 2022-01-26 09:11:07 +07:00
hair_trigger_spec.rb Bump to Rails 7.0.2.2 MVP (#15908) 2022-03-30 15:00:33 -04:00
html_variant_spec.rb Routine Rubocop fixes (#16838) 2022-03-09 09:32:50 -05:00
html_variant_success_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
html_variant_trial_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
identity_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
listing_category_spec.rb Rubocop: Fix ListingCategory has_many relation to Listing (#9853) 2020-08-19 19:23:49 +02:00
listing_spec.rb Routine Rubocop fixes (#16838) 2022-03-09 09:32:50 -05:00
mention_spec.rb Routine Rubocop fixes (#16838) 2022-03-09 09:32:50 -05:00
navigation_link_spec.rb Create/update by NavigationLink identity (#16312) 2022-01-27 13:51:41 -05:00
note_spec.rb [deploy] Add missing dependent clauses to User and cleanup relations (#10011) 2020-08-28 20:19:24 +02:00
notification_spec.rb Routine Rubocop fixes (#16838) 2022-03-09 09:32:50 -05:00
notification_subscription_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
organization_membership_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
organization_spec.rb Ensuring article's cache updates on org image update (#17052) 2022-04-01 10:54:55 -04:00
page_spec.rb Let override of ToS and CoC show in onboarding (#16217) 2022-01-20 19:45:39 -05:00
page_view_spec.rb Remove UserHistory Feature and PageViews from Algolia (#6127) [deploy] 2020-02-18 10:06:30 -05:00
pinned_article_spec.rb Pin posts to feed (#13807) 2021-06-04 10:54:53 +02:00
podcast_episode_appearance_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
podcast_episode_spec.rb [15 min fix] Fallback to the image URL if Cloudinary/Imgproxy are not configured (#13767) 2021-05-19 15:03:20 +02:00
podcast_ownership_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
podcast_spec.rb Replace git.io URL (#17501) 2022-04-28 07:34:33 -06:00
poll_option_spec.rb Add missing presence validators to models (#10495) 2020-10-01 16:15:32 +02:00
poll_skip_spec.rb Refactoring poll/vote/skip logic (#15441) 2021-11-29 10:52:32 -05:00
poll_spec.rb Refactoring poll/vote/skip logic (#15441) 2021-11-29 10:52:32 -05:00
poll_vote_spec.rb Refactoring poll/vote/skip logic (#15441) 2021-11-29 10:52:32 -05:00
profile_field_group_spec.rb Remove guard clauses and update expectations (#17138) 2022-04-08 15:20:19 -05:00
profile_field_spec.rb Profile attribute names should be unique and non-empty (#16396) 2022-04-04 12:14:02 -05:00
profile_pin_spec.rb Flaky Spec Fix:Remove let_it_be Test Prof Helper (#9556) 2020-07-29 11:31:01 +02:00
profile_spec.rb Profile attribute names should be unique and non-empty (#16396) 2022-04-04 12:14:02 -05:00
rating_vote_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
reaction_spec.rb Don't send notification for invalid reactions (#16721) 2022-02-28 12:36:44 -06:00
response_template_spec.rb Routine Rubocop fixes (#16838) 2022-03-09 09:32:50 -05:00
role_spec.rb ✂✂✂ Remove Connect (#14734) 2021-11-18 08:21:00 -06:00
space_spec.rb Busting tag cache when space changes (#17384) 2022-04-20 16:37:34 -04:00
sponsorship_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
tag_adjustment_spec.rb Appeasing Rubocop as it sneaks some changes in (#16085) 2022-01-13 07:48:01 -05:00
tag_spec.rb Adding indirection for Tag#name to ease future work (#16703) 2022-02-28 16:32:04 -05:00
timeframe_spec.rb Remove timeframer from app/labor (#11782) 2020-12-08 12:52:33 +07:00
tweet_spec.rb Better error upon Tweet embed when Twitter keys missing (#16916) 2022-03-21 16:21:37 -04:00
user_block_spec.rb Fix and refactor hide user content (#12307) 2021-01-18 11:08:23 -05:00
user_role_spec.rb [Search 2.0] Users (#13453) 2021-04-24 19:06:06 +02:00
user_spec.rb Add Data (User Details, Status, etc.) to the Member Index View Columns (#17033) 2022-04-06 11:48:25 -06:00
user_subscription_spec.rb Bump to Rails 7.0.2.2 MVP (#15908) 2022-03-30 15:00:33 -04:00