Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions backend/spec/controllers/api/v1/posts_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
8 changes: 8 additions & 0 deletions backend/spec/factories/patterns.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FactoryBot.define do
factory :pattern do
encrypted_user_id { create(:user).encrypted_id }
start_at { Time.zone.now }
end_at { 2.days.from_now }
name { "Chuck Norris" }
end
end
50 changes: 50 additions & 0 deletions backend/spec/models/ranked_enum_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
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
45 changes: 45 additions & 0 deletions backend/spec/services/charts_pattern_spec.rb
Original file line number Diff line number Diff line change
@@ -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