Skip to content

Commit

Permalink
add endpoint to set/unset the is_active property of a disease, comple…
Browse files Browse the repository at this point in the history
…tes #39, fully fixes #27
  • Loading branch information
x6iae committed Oct 15, 2017
1 parent bf8e596 commit 0d5dabb
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 0 deletions.
12 changes: 12 additions & 0 deletions app/controllers/diseases_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 1,5 @@
class DiseasesController < ApplicationController
before_action :set_disease, only: [:show, :set_active_status]

def index
if permitted_params.include?(:data_source)
Expand All @@ -9,6 10,17 @@ def index
end

def show
end

def set_active_status
# falsey values like boolean 'false', 'nil' evaluates to false
is_active = !!params[:is_active] == true

@disease.update_attribute(:is_active, is_active)
end

private
def set_disease
@disease = Disease.where("lower(name) LIKE?", "%#{permitted_params[:disease].downcase}%").first
end

Expand Down
1 change: 1 addition & 0 deletions app/views/diseases/index.jbuilder
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 9,5 @@ json.diseases @diseases do |disease|
json.treatment disease.treatment
json.prevention disease.prevention
json.more disease.more
json.is_active disease.is_active
end
13 changes: 13 additions & 0 deletions app/views/diseases/set_active_status.jbuilder
Original file line number Diff line number Diff line change
@@ -0,0 1,13 @@
json.disease do
json.id @disease.id
json.name @disease.name
json.data_updated_at @disease.date_updated
json.facts @disease.facts
json.symptoms @disease.symptoms
json.transmission @disease.transmission
json.diagnosis @disease.diagnosis
json.treatment @disease.treatment
json.prevention @disease.prevention
json.more @disease.more
json.is_active @disease.is_active
end
1 change: 1 addition & 0 deletions app/views/diseases/show.jbuilder
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 9,5 @@ json.disease do
json.treatment @disease.treatment
json.prevention @disease.prevention
json.more @disease.more
json.is_active @disease.is_active
end
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,6 1,7 @@
Rails.application.routes.draw do
root :to => 'diseases#index'
resources :diseases, param: :disease
put '/diseases/:disease/set_active_status', to: 'diseases#set_active_status'

# This handles 404 Error, 500 Error, and 422 Error
get "/404" => "application#not_found"
Expand Down
19 changes: 19 additions & 0 deletions spec/controllers/diseases_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 49,23 @@
end
end

describe "PUT#set_active_status" do
it "should update disease to non-active when param is set to false or zero or empty" do
[false, nil].each do |value|
# disease is_active is true by default
disease = create(:disease)
put :set_active_status, disease: disease.name, is_active: value
expect(disease.reload.is_active).to eq false
end
end

it "should update disease to active when given a truthy value" do
[true, 'true'].each do |value|
disease = create(:disease, is_active: false)
put :set_active_status, disease: disease.name, is_active: value
expect(disease.reload.is_active).to eq true
end
end
end

end

0 comments on commit 0d5dabb

Please sign in to comment.