From 1171540c37885bef714426f5fe61c027162ce704 Mon Sep 17 00:00:00 2001 From: squarism Date: Fri, 7 Sep 2012 16:30:05 -0400 Subject: [PATCH] Implement some tests, replace generated ones --- app/controllers/value_sets_controller.rb | 10 +- test/factories/factory.rb | 23 ++++- test/functional/value_sets_controller_test.rb | 94 +++++++++---------- 3 files changed, 66 insertions(+), 61 deletions(-) diff --git a/app/controllers/value_sets_controller.rb b/app/controllers/value_sets_controller.rb index 33e09b4..5fd74a9 100644 --- a/app/controllers/value_sets_controller.rb +++ b/app/controllers/value_sets_controller.rb @@ -1,5 +1,3 @@ -# require 'json' TODO: does rails3 need this anymore? - class ValueSetsController < ApplicationController respond_to :html, :json, :js skip_authorization_check @@ -36,11 +34,11 @@ def create # very important to render json here and not text # even when debugging because ajaxForm plugin will break json_form = JSON.parse(params[:data].to_json) - vs = ValueSet.new json_form - if vs.save - render :json => { :message => "success", :redirect => value_set_url(vs) } + @value_set = ValueSet.new json_form + if @value_set.save + render :json => { :message => "success", :redirect => value_set_url(@value_set) } else - render :json => { :message => "failed", :errors => vs.errors } + render :json => { :message => "failed", :errors => @value_set.errors } end # redirect_to :action => 'show', :id => vs.id } diff --git a/test/factories/factory.rb b/test/factories/factory.rb index b84bb66..34a5bdd 100755 --- a/test/factories/factory.rb +++ b/test/factories/factory.rb @@ -1,13 +1,30 @@ require 'factory_girl' FactoryGirl.define do + + # "2.16.840.1.113883.3.464.0002.1138" + sequence :oid do + s = "" + 9.times { s << (1..9).to_a.sample(rand(6)+1).join.to_s << "." } + s.chop + end factory :value_set do |f| f.category { ValueSet::Categories.sample } - f.oid "2.16.840.1.113883.3.464.0002.1138" - f.code_set "RxNorm" + f.oid { generate :oid } f.concept "Encounters ALL inpatient and ambulatory" - f.codes { %w(99201 99202 99203 99204 99205) } + f.code_sets { [ FactoryGirl.build(:code_set) ] } + end + + factory :code_set do |c| + c.oid { generate :oid } + c.sequence(:key) {|n| "key#{n}" } + c.sequence(:concept) {|n| "concept#{n}" } + c.sequence(:category) {|n| "category#{n}" } + c.sequence(:description) {|n| "description#{n}" } + c.sequence(:organization) {|n| "organization#{n}" } + c.sequence(:version) {|n| "version#{n}" } + c.codes { (100..200).to_a.sample(rand(3)+1) } # codes: [165, 173, 119] end factory :measure do |m| diff --git a/test/functional/value_sets_controller_test.rb b/test/functional/value_sets_controller_test.rb index 13a534b..60cf21b 100644 --- a/test/functional/value_sets_controller_test.rb +++ b/test/functional/value_sets_controller_test.rb @@ -3,27 +3,27 @@ class ValueSetsControllerTest < ActionController::TestCase include Devise::TestHelpers - # setup do - # dump_database - # @vs = FactoryGirl.build(:value_set) - # @user = FactoryGirl.create(:user) - # sign_in @user - # end - # - # test "index" do - # get :index - # - # assert_response :success - # assert_template :index - # refute_nil assigns(:value_sets) - # end - # - # test "new value set" do - # get :new - # - # assert_response :success - # refute_nil assigns(:value_set) - # end + setup do + dump_database + @vs = FactoryGirl.build(:value_set) + @user = FactoryGirl.create(:user) + sign_in @user + end + + test "index" do + get :index + + assert_response :success + assert_template :index + refute_nil assigns(:value_sets) + end + + test "new value set" do + get :new + + assert_response :success + refute_nil assigns(:value_set) + end # # test "destroy value set" do # assert @vs.save @@ -33,37 +33,27 @@ class ValueSetsControllerTest < ActionController::TestCase # assert_redirected_to value_sets_path # end # - # test "should not create invalid value set" do - # post :create, value_set: {category: "foobar"} - # - # assert_response 406 - # assert_template :new - # refute_nil assigns(:value_set) - # refute_nil flash[:error] - # assert !assigns(:value_set).valid? - # end - # - # test "create" do - # post :create, value_set: {category: @vs.category, oid: @vs.oid} - # - # @vs = ValueSet.first - # refute_nil @vs - # assert_response 302 - # assert_redirected_to value_set_path(@vs) - # refute_nil assigns(:value_set) - # assert(assigns(:value_set).persisted?) - # end - # - # test "update" do - # assert @vs.save - # @vs2 = FactoryGirl.build(:value_set) - # - # put :update, id: @vs.id, value_set: {category: @vs2.category} - # - # @vs.reload - # assert_equal @vs2.category, @vs.category - # end - # + test "should create a valid value set" do + post :create, format:'json', data: @vs.attributes + assert_response 200 + + json_response = JSON.parse @response.body + assert json_response["message"] == "success" + + assert flash[:error].nil? + assert assigns(:value_set).class == ValueSet + assert assigns(:value_set).valid? + end + + test "should update a value set" do + assert @vs.save + @vs2 = FactoryGirl.build(:value_set) + + put :update, format:'json', id: @vs._id, category: @vs2.category + @vs.reload + assert_equal @vs2.category, @vs.category + end + # test "show" do # assert @vs.save #