From 0d3f525851111d85bdcc815c956275d3fd24aa83 Mon Sep 17 00:00:00 2001 From: Peter Cho Date: Sat, 29 Jul 2023 14:05:42 -0400 Subject: [PATCH 1/7] Backfill additional test coverage for uncovered lines. * Add additional coverage for `DiscussionPosts` service --- .../api/v1/posts_controller_spec.rb | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/backend/spec/controllers/api/v1/posts_controller_spec.rb b/backend/spec/controllers/api/v1/posts_controller_spec.rb index 083526ce..b386e996 100644 --- a/backend/spec/controllers/api/v1/posts_controller_spec.rb +++ b/backend/spec/controllers/api/v1/posts_controller_spec.rb @@ -13,5 +13,28 @@ get :index expect(response_body[:posts].size).to eq 2 end + + it "returns a list of discussion posts filtered by post type" do + post = create(:post, user_id: user.id) + create(:post, user_id: other_user.id) + symptom = post.symptom_ids + + get :index, params: { id: symptom[0], type: 'symptom' } + + expect(response_body[:posts].size).to eq 1 + end + + it "returns a list of discussion posts filtered by topic followings" do + post = create(:post, user_id: user.id) + create(:post, user_id: user.id) + create(:post, user_id: user.id) + topic_user_is_following = user.topic_following + topic_user_is_following.symptom_ids = post.symptom_ids + topic_user_is_following.save + + get :index, params: { following: true } + + expect(response_body[:posts].size).to eq 1 + end end end From dd133052d275c607efcd8378761b2442960c3c21 Mon Sep 17 00:00:00 2001 From: Peter Cho Date: Sat, 29 Jul 2023 15:32:09 -0400 Subject: [PATCH 2/7] * Add coverage for ChartPattern --- backend/spec/factories/patterns.rb | 8 ++++ backend/spec/services/charts_pattern_spec.rb | 45 ++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 backend/spec/factories/patterns.rb create mode 100644 backend/spec/services/charts_pattern_spec.rb diff --git a/backend/spec/factories/patterns.rb b/backend/spec/factories/patterns.rb new file mode 100644 index 00000000..c540a387 --- /dev/null +++ b/backend/spec/factories/patterns.rb @@ -0,0 +1,8 @@ +FactoryBot.define do + factory :pattern do + encrypted_user_id { create(:user).encrypted_id } + start_at { Time.zone.now } + end_at { Time.zone.now + 2.days.from_now } + name { 'Chuck Norris' } + end +end diff --git a/backend/spec/services/charts_pattern_spec.rb b/backend/spec/services/charts_pattern_spec.rb new file mode 100644 index 00000000..77723c83 --- /dev/null +++ b/backend/spec/services/charts_pattern_spec.rb @@ -0,0 +1,45 @@ +require "rails_helper" + +RSpec.describe ChartsPattern do + it 'instantiates a ChartPattern instance' do + user = create(:user) + pattern = create(:pattern, encrypted_user_id: user.encrypted_id) + + chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern}) + + expect(chart_pattern.pattern.id).to eq pattern.id + end + + it 'generates chart data from a ChartPattern' do + user = create(:user) + pattern = create(:pattern, encrypted_user_id: user.encrypted_id) + + chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern}) + chart_data = chart_pattern.chart_data + + expect(chart_data[:pattern_name]).to eq pattern.name + expect(chart_data[:author_email]).to eq user.email + end + + it 'generates chart data from a ChartPattern with a valid category' do + user = create(:user) + pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{ category: 'treatments' }]) + + chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern}) + chart_data = chart_pattern.chart_data + + expect(chart_data[:pattern_name]).to eq pattern.name + expect(chart_data[:author_email]).to eq user.email + end + + it 'generates chart data from a ChartPattern with untracked category' do + user = create(:user) + pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{ category: 'not-a-category' }]) + + chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern}) + chart_data = chart_pattern.chart_data + + expect(chart_data[:pattern_name]).to eq pattern.name + expect(chart_data[:author_email]).to eq user.email + end +end From 91a1242b2733805b1c502b0c4543db83d02f0858 Mon Sep 17 00:00:00 2001 From: Peter Cho Date: Sat, 29 Jul 2023 16:45:10 -0400 Subject: [PATCH 3/7] * Added coverage for RankedEnum --- backend/spec/models/ranked_enum_spec.rb | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 backend/spec/models/ranked_enum_spec.rb diff --git a/backend/spec/models/ranked_enum_spec.rb b/backend/spec/models/ranked_enum_spec.rb new file mode 100644 index 00000000..3081886c --- /dev/null +++ b/backend/spec/models/ranked_enum_spec.rb @@ -0,0 +1,51 @@ +require "rails_helper" + +class MockClassSkeleton < RankedEnum +end + +class MockClassOverride < RankedEnum + class << self + def all_ids + %w[one two three] + end + end +end + + +RSpec.describe RankedEnum do + describe MockClassSkeleton do + it 'yields all IDs associated with the class' do + all_ids = MockClassSkeleton.all_ids + + expect(all_ids).to eq [] + end + end + + describe MockClassOverride do + it 'yields all IDs associated with the class' do + all_ids = MockClassOverride.all_ids + + expect(all_ids).to eq ['one', 'two', 'three'] + end + + it 'searches for a specific ID' do + searched_id = MockClassOverride.find('two') + + expect(searched_id.id).to eq 'two' + end + + # TODO: Actually make this test grab the cache + it 'prints out all IDs from cache' do + all_ids = MockClassOverride.all + + expect(all_ids.size).to eq 3 + expect(all_ids.last.id).to eq 'three' + end + + it 'creates a translatable name (that does not exist in the code base)for a ranked enum model instance' do + mock = MockClassOverride.new('some-id', 'some-rank') + + expect(mock.name).to eq 'translation missing: en.mock_class_override.some-id' + end + end +end \ No newline at end of file From 5b92ee6d188be5370da9b95dbde38850c784b80b Mon Sep 17 00:00:00 2001 From: Peter Cho Date: Sun, 30 Jul 2023 09:44:52 -0400 Subject: [PATCH 4/7] Lint fixes --- .../api/v1/posts_controller_spec.rb | 4 ++-- backend/spec/factories/patterns.rb | 2 +- backend/spec/models/ranked_enum_spec.rb | 23 +++++++++---------- backend/spec/services/charts_pattern_spec.rb | 12 +++++----- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/backend/spec/controllers/api/v1/posts_controller_spec.rb b/backend/spec/controllers/api/v1/posts_controller_spec.rb index b386e996..cf1b434b 100644 --- a/backend/spec/controllers/api/v1/posts_controller_spec.rb +++ b/backend/spec/controllers/api/v1/posts_controller_spec.rb @@ -19,7 +19,7 @@ create(:post, user_id: other_user.id) symptom = post.symptom_ids - get :index, params: { id: symptom[0], type: 'symptom' } + get :index, params: {id: symptom[0], type: "symptom"} expect(response_body[:posts].size).to eq 1 end @@ -32,7 +32,7 @@ topic_user_is_following.symptom_ids = post.symptom_ids topic_user_is_following.save - get :index, params: { following: true } + get :index, params: {following: true} expect(response_body[:posts].size).to eq 1 end diff --git a/backend/spec/factories/patterns.rb b/backend/spec/factories/patterns.rb index c540a387..b3a3ea6f 100644 --- a/backend/spec/factories/patterns.rb +++ b/backend/spec/factories/patterns.rb @@ -3,6 +3,6 @@ encrypted_user_id { create(:user).encrypted_id } start_at { Time.zone.now } end_at { Time.zone.now + 2.days.from_now } - name { 'Chuck Norris' } + name { "Chuck Norris" } end end diff --git a/backend/spec/models/ranked_enum_spec.rb b/backend/spec/models/ranked_enum_spec.rb index 3081886c..ec51058a 100644 --- a/backend/spec/models/ranked_enum_spec.rb +++ b/backend/spec/models/ranked_enum_spec.rb @@ -11,10 +11,9 @@ def all_ids end end - RSpec.describe RankedEnum do describe MockClassSkeleton do - it 'yields all IDs associated with the class' do + it "yields all IDs associated with the class" do all_ids = MockClassSkeleton.all_ids expect(all_ids).to eq [] @@ -22,30 +21,30 @@ def all_ids end describe MockClassOverride do - it 'yields all IDs associated with the class' do + it "yields all IDs associated with the class" do all_ids = MockClassOverride.all_ids - expect(all_ids).to eq ['one', 'two', 'three'] + expect(all_ids).to eq ["one", "two", "three"] end - it 'searches for a specific ID' do - searched_id = MockClassOverride.find('two') + it "searches for a specific ID" do + searched_id = MockClassOverride.find("two") expect(searched_id.id).to eq 'two' end # TODO: Actually make this test grab the cache - it 'prints out all IDs from cache' do + it "prints out all IDs from cache" do all_ids = MockClassOverride.all expect(all_ids.size).to eq 3 - expect(all_ids.last.id).to eq 'three' + expect(all_ids.last.id).to eq "three" end - it 'creates a translatable name (that does not exist in the code base)for a ranked enum model instance' do - mock = MockClassOverride.new('some-id', 'some-rank') + it "creates a translatable name (that does not exist in the code base) for a ranked enum model instance" do + mock = MockClassOverride.new("some-id", "some-rank") - expect(mock.name).to eq 'translation missing: en.mock_class_override.some-id' + expect(mock.name).to eq "translation missing: en.mock_class_override.some-id" end end -end \ No newline at end of file +end diff --git a/backend/spec/services/charts_pattern_spec.rb b/backend/spec/services/charts_pattern_spec.rb index 77723c83..b78ed307 100644 --- a/backend/spec/services/charts_pattern_spec.rb +++ b/backend/spec/services/charts_pattern_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe ChartsPattern do - it 'instantiates a ChartPattern instance' do + it "instantiates a ChartPattern instance" do user = create(:user) pattern = create(:pattern, encrypted_user_id: user.encrypted_id) @@ -10,7 +10,7 @@ expect(chart_pattern.pattern.id).to eq pattern.id end - it 'generates chart data from a ChartPattern' do + it "generates chart data from a ChartPattern" do user = create(:user) pattern = create(:pattern, encrypted_user_id: user.encrypted_id) @@ -21,9 +21,9 @@ expect(chart_data[:author_email]).to eq user.email end - it 'generates chart data from a ChartPattern with a valid category' do + it "generates chart data from a ChartPattern with a valid category" do user = create(:user) - pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{ category: 'treatments' }]) + pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{category: "treatments"}]) chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern}) chart_data = chart_pattern.chart_data @@ -32,9 +32,9 @@ expect(chart_data[:author_email]).to eq user.email end - it 'generates chart data from a ChartPattern with untracked category' do + it "generates chart data from a ChartPattern with untracked category" do user = create(:user) - pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{ category: 'not-a-category' }]) + pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{category: "not-a-category"}]) chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern}) chart_data = chart_pattern.chart_data From d3b39fb0bacc08eb9f1300a57febc225be4bf2bc Mon Sep 17 00:00:00 2001 From: Peter Cho Date: Sun, 30 Jul 2023 10:04:53 -0400 Subject: [PATCH 5/7] asdf --- backend/spec/models/ranked_enum_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/spec/models/ranked_enum_spec.rb b/backend/spec/models/ranked_enum_spec.rb index ec51058a..ea539527 100644 --- a/backend/spec/models/ranked_enum_spec.rb +++ b/backend/spec/models/ranked_enum_spec.rb @@ -30,7 +30,7 @@ def all_ids it "searches for a specific ID" do searched_id = MockClassOverride.find("two") - expect(searched_id.id).to eq 'two' + expect(searched_id.id).to eq "two" end # TODO: Actually make this test grab the cache From a875d0688a4f80e619682cff0b22b296a0fa9694 Mon Sep 17 00:00:00 2001 From: Peter Cho Date: Sun, 30 Jul 2023 10:27:52 -0400 Subject: [PATCH 6/7] asdf --- backend/spec/models/ranked_enum_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/spec/models/ranked_enum_spec.rb b/backend/spec/models/ranked_enum_spec.rb index ea539527..59ac9e46 100644 --- a/backend/spec/models/ranked_enum_spec.rb +++ b/backend/spec/models/ranked_enum_spec.rb @@ -44,7 +44,7 @@ def all_ids it "creates a translatable name (that does not exist in the code base) for a ranked enum model instance" do mock = MockClassOverride.new("some-id", "some-rank") - expect(mock.name).to eq "translation missing: en.mock_class_override.some-id" + expect(mock.name).to eq "Translation missing: en.mock_class_override.some-id" end end end From 4be694ca4a1e88e27b859f238b5e549c3382a77d Mon Sep 17 00:00:00 2001 From: Peter Cho Date: Sun, 30 Jul 2023 10:55:36 -0400 Subject: [PATCH 7/7] PR Feedback: JP --- backend/spec/factories/patterns.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/spec/factories/patterns.rb b/backend/spec/factories/patterns.rb index b3a3ea6f..bd9e60d8 100644 --- a/backend/spec/factories/patterns.rb +++ b/backend/spec/factories/patterns.rb @@ -2,7 +2,7 @@ factory :pattern do encrypted_user_id { create(:user).encrypted_id } start_at { Time.zone.now } - end_at { Time.zone.now + 2.days.from_now } + end_at { 2.days.from_now } name { "Chuck Norris" } end end