Skip to content

Commit 35db0c1

Browse files
authored
Backfill additional test coverage for uncovered lines. (#639)
* Add additional coverage for `DiscussionPosts` service * Add coverage for ChartPattern * Added coverage for RankedEnum * PR Feedback: JP
1 parent 74aa282 commit 35db0c1

File tree

4 files changed

+126
-0
lines changed

4 files changed

+126
-0
lines changed

backend/spec/controllers/api/v1/posts_controller_spec.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,28 @@
1313
get :index
1414
expect(response_body[:posts].size).to eq 2
1515
end
16+
17+
it "returns a list of discussion posts filtered by post type" do
18+
post = create(:post, user_id: user.id)
19+
create(:post, user_id: other_user.id)
20+
symptom = post.symptom_ids
21+
22+
get :index, params: {id: symptom[0], type: "symptom"}
23+
24+
expect(response_body[:posts].size).to eq 1
25+
end
26+
27+
it "returns a list of discussion posts filtered by topic followings" do
28+
post = create(:post, user_id: user.id)
29+
create(:post, user_id: user.id)
30+
create(:post, user_id: user.id)
31+
topic_user_is_following = user.topic_following
32+
topic_user_is_following.symptom_ids = post.symptom_ids
33+
topic_user_is_following.save
34+
35+
get :index, params: {following: true}
36+
37+
expect(response_body[:posts].size).to eq 1
38+
end
1639
end
1740
end

backend/spec/factories/patterns.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FactoryBot.define do
2+
factory :pattern do
3+
encrypted_user_id { create(:user).encrypted_id }
4+
start_at { Time.zone.now }
5+
end_at { 2.days.from_now }
6+
name { "Chuck Norris" }
7+
end
8+
end
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
require "rails_helper"
2+
3+
class MockClassSkeleton < RankedEnum
4+
end
5+
6+
class MockClassOverride < RankedEnum
7+
class << self
8+
def all_ids
9+
%w[one two three]
10+
end
11+
end
12+
end
13+
14+
RSpec.describe RankedEnum do
15+
describe MockClassSkeleton do
16+
it "yields all IDs associated with the class" do
17+
all_ids = MockClassSkeleton.all_ids
18+
19+
expect(all_ids).to eq []
20+
end
21+
end
22+
23+
describe MockClassOverride do
24+
it "yields all IDs associated with the class" do
25+
all_ids = MockClassOverride.all_ids
26+
27+
expect(all_ids).to eq ["one", "two", "three"]
28+
end
29+
30+
it "searches for a specific ID" do
31+
searched_id = MockClassOverride.find("two")
32+
33+
expect(searched_id.id).to eq "two"
34+
end
35+
36+
# TODO: Actually make this test grab the cache
37+
it "prints out all IDs from cache" do
38+
all_ids = MockClassOverride.all
39+
40+
expect(all_ids.size).to eq 3
41+
expect(all_ids.last.id).to eq "three"
42+
end
43+
44+
it "creates a translatable name (that does not exist in the code base) for a ranked enum model instance" do
45+
mock = MockClassOverride.new("some-id", "some-rank")
46+
47+
expect(mock.name).to eq "Translation missing: en.mock_class_override.some-id"
48+
end
49+
end
50+
end
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
require "rails_helper"
2+
3+
RSpec.describe ChartsPattern do
4+
it "instantiates a ChartPattern instance" do
5+
user = create(:user)
6+
pattern = create(:pattern, encrypted_user_id: user.encrypted_id)
7+
8+
chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern})
9+
10+
expect(chart_pattern.pattern.id).to eq pattern.id
11+
end
12+
13+
it "generates chart data from a ChartPattern" do
14+
user = create(:user)
15+
pattern = create(:pattern, encrypted_user_id: user.encrypted_id)
16+
17+
chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern})
18+
chart_data = chart_pattern.chart_data
19+
20+
expect(chart_data[:pattern_name]).to eq pattern.name
21+
expect(chart_data[:author_email]).to eq user.email
22+
end
23+
24+
it "generates chart data from a ChartPattern with a valid category" do
25+
user = create(:user)
26+
pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{category: "treatments"}])
27+
28+
chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern})
29+
chart_data = chart_pattern.chart_data
30+
31+
expect(chart_data[:pattern_name]).to eq pattern.name
32+
expect(chart_data[:author_email]).to eq user.email
33+
end
34+
35+
it "generates chart data from a ChartPattern with untracked category" do
36+
user = create(:user)
37+
pattern = create(:pattern, encrypted_user_id: user.encrypted_id, includes: [{category: "not-a-category"}])
38+
39+
chart_pattern = ChartsPattern.new({start_at: pattern.start_at, end_at: pattern.end_at, pattern: pattern})
40+
chart_data = chart_pattern.chart_data
41+
42+
expect(chart_data[:pattern_name]).to eq pattern.name
43+
expect(chart_data[:author_email]).to eq user.email
44+
end
45+
end

0 commit comments

Comments
 (0)