docbrown/app
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
..
assets Hide 'Save' button on posts that belong to the current user (#17293) 2022-04-28 12:33:01 -04:00
controllers Remove GDPR from the "users" namespace (#17536) 2022-05-03 19:42:20 +02:00
decorators Profile attribute names should be unique and non-empty (#16396) 2022-04-04 12:14:02 -05:00
errors Favoring re-use of authorization error (#16992) 2022-03-24 08:16:28 -04:00
forms Using a Form Object that will persist for the Creator Settings Form (#15684) 2021-12-10 17:07:40 +02:00
helpers Sanitize URL before parsing (#17559) 2022-05-03 14:28:20 -04:00
javascript Add prop for user-defined selections in MultiSelectAutocomplete (#17402) 2022-04-29 09:39:25 +01:00
lib Remove sustaining member newsletter, and its settings (#17514) 2022-04-29 11:47:12 -05:00
liquid_tags Sharpen RegEx that matches Forem-specific links (#17500) 2022-04-29 11:34:32 -04:00
mailers "Reply to" and "From" Email addresses for SMTP Configurations (#16499) 2022-02-16 16:14:54 +02:00
models Moving Experiments into AbExperiment namespace (#17532) 2022-05-03 21:34:12 -04:00
policies Encapsulating the "why we hide/show" something (#17166) 2022-04-11 13:40:16 -04:00
queries Community Wellness badge (#17394) 2022-04-29 12:38:40 -06:00
refinements Drop profile columns from user (#10707) 2020-12-03 08:14:38 +07:00
sanitizers Don't sanitize anchor elements with no href (#16667) 2022-02-22 11:27:38 -06:00
serializers Remove unused methods from User (#16616) 2022-02-18 09:02:17 +07:00
services Replace Ahoy metric logging with ForemStatsClient on Community Wellness Badge service (#17542) 2022-05-03 09:31:38 -06:00
uploaders small non-views ruby i18n (#16004) 2022-01-11 10:05:18 +07:00
validators Remove the "Getting Started" Section from the Config (#16033) 2022-01-20 07:31:35 -07:00
view_objects Patching ERB rendering of the data-info JSON (#16067) 2022-01-14 08:30:49 -05:00
views Remove GDPR from the "users" namespace (#17536) 2022-05-03 19:42:20 +02:00
workers Moving Experiments into AbExperiment namespace (#17532) 2022-05-03 21:34:12 -04:00