diff --git a/Gemfile b/Gemfile index 35ee76e..06b3e3f 100644 --- a/Gemfile +++ b/Gemfile @@ -29,10 +29,6 @@ gem 'jbuilder' # ------------------------------------------------ -# CLONE ACTIVERECORD MODELS AND ASSOCIATIONS -gem 'amoeba' - -# ------------------------------------------------ # SLUGS/PERMALINKS gem 'friendly_id' diff --git a/Gemfile.lock b/Gemfile.lock index 8359a7c..d430a3c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -64,8 +64,6 @@ thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) addressable (2.4.0) - amoeba (3.0.0) - activerecord (>= 3.2.6) ansi (1.5.0) arbre (1.1.1) activesupport (>= 3.0.0) @@ -360,7 +358,6 @@ DEPENDENCIES activeadmin! - amoeba better_errors binding_of_caller byebug diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index f85c4dd..b469272 100644 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -3,8 +3,7 @@ respond_to :html ## - # POST /answers - + # PUT/PATCH /[:locale]/answer/[:id] def update # create a new answer based off the passed params logger.debug("RAY: update params=") diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index 9b65b77..74337c0 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -7,7 +7,7 @@ handle_omniauth(scheme) end end - + ## # Processes callbacks from an omniauth provider and directs the user to # the appropriate page: @@ -19,6 +19,9 @@ # @scheme [IdentifierScheme] The IdentifierScheme for the provider # ------------------------------------------------------------- def handle_omniauth(scheme) + +puts "now weez handlin it #{scheme}" + user = User.from_omniauth(request.env["omniauth.auth"].nil? ? request.env : request.env["omniauth.auth"]) # If the user isn't logged in diff --git a/app/models/plan.rb b/app/models/plan.rb index 0a7de28..04738a1 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -27,7 +27,7 @@ :exported_plans, :project, :title, :template, :grant_number, :identifier, :principal_investigator, :principal_investigator_identifier, :description, :data_contact, :funder_name, :visibility, :exported_plans, - :roles, :users, :as => [:default, :admin] + :roles, :users, :org, :as => [:default, :admin] accepts_nested_attributes_for :roles # public is a Ruby keyword so using publicly diff --git a/app/models/question.rb b/app/models/question.rb index 72af4e0..c2631a5 100644 --- a/app/models/question.rb +++ b/app/models/question.rb @@ -54,7 +54,7 @@ question_copy.save! question.question_options.each do |question_option| question_option_copy = QuestionOption.deep_copy(question_option) - question_option_copy.quesion_id = question_copy.id + question_option_copy.question_id = question_copy.id question_option_copy.save! end question.suggested_answers.each do |suggested_answer| @@ -62,22 +62,12 @@ suggested_answer_copy.quesion_id = question_copy.id suggested_answer_copy.save! end - question.theme.each do |theme| + question.themes.each do |theme| question_copy.themes << theme end return question_copy end -# TODO: Commented this amoeba cloning gem definition out to see if its even used. The -# amoeba documentations uses [object].amoeba_dup to clone the object, but that -# command does not exist in the codebase - -# amoeba do -# include_association :options -# include_association :suggested_answers -# clone [:themes] -# end - ## # guidance for org # diff --git a/app/models/section.rb b/app/models/section.rb index 8e04fbb..710e8c7 100644 --- a/app/models/section.rb +++ b/app/models/section.rb @@ -40,11 +40,4 @@ return section_copy end -# TODO: Commented this amoeba cloning gem definition out to see if its even used. The -# amoeba documentations uses [object].amoeba_dup to clone the object, but that -# command does not exist in the codebase -# amoeba do -# include_association :questions -# end - end diff --git a/app/models/user.rb b/app/models/user.rb index 52672c4..91355df 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -6,8 +6,9 @@ # Include default devise modules. Others available are: # :token_authenticatable, :confirmable, # :lockable, :timeoutable and :omniauthable - devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, - :trackable, :validatable, :confirmable, :omniauthable, :omniauth_providers => [:shibboleth] + devise :invitable, :database_authenticatable, :registerable, :recoverable, + :rememberable, :trackable, :validatable, :confirmable, :omniauthable, + :omniauth_providers => [:shibboleth, :orcid] ## # Associations @@ -40,11 +41,13 @@ # Possibly needed for active_admin # -relies on protected_attributes gem as syntax depricated in rails 4.2 accepts_nested_attributes_for :roles - attr_accessible :password_confirmation, :encrypted_password, :remember_me, :id, :email, - :firstname, :last_login,:login_count, :orcid_id, :password, :shibboleth_id, - :user_status_id, :surname, :user_type_id, :org_id, :skip_invitation, - :other_organisation, :accept_terms, :role_ids, :dmponline3, :api_token, - :organisation, :language, :language_id, :org, :perms, :confirmed_at + attr_accessible :password_confirmation, :encrypted_password, :remember_me, + :id, :email, :firstname, :last_login,:login_count, :orcid_id, + :password, :shibboleth_id, :user_status_id, :surname, + :user_type_id, :org_id, :skip_invitation, :other_organisation, + :accept_terms, :role_ids, :dmponline3, :api_token, + :organisation, :language, :language_id, :org, :perms, + :confirmed_at, :org_id validates :email, email: true, allow_nil: true, uniqueness: true diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 0f64f83..4dc0f0c 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -265,6 +265,16 @@ # so you need to do it manually. For the users scope, it would be: # config.omniauth_path_prefix = '/my_engine/users/auth' + config.omniauth :orcid, 'APP-T96TCS5F64T5EB2O', + '8def5f5c-25f3-4faf-9bb9-0740cde89daa', {"scope": "/authenticate"} + # config.omniauth :orcid, 'APP-Z80XR6IBPK2D4DWN', '92e159d6-5947-4c1a-9b9e-44560ba9370b', {"scope": "/authenticate"} #{"scope": "/orcid-profile/read-limited"} + + # config.omniauth :shibboleth, {uid_field: 'eppn', + # info_fields: {email: 'mail', name: 'cn', last_name: 'sn'}, + # extra_fields: [:schacHomeOrganization]} #, debug: true} + + config.omniauth_path_prefix = "/users/auth" + # Configure the system to redirect to the home page after a session timeout config.warden do |manager| manager.failure_app = CustomFailure diff --git a/db/schema.rb b/db/schema.rb index 2e41593..81d309b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -30,8 +30,8 @@ t.integer "question_option_id", null: false end - add_index "answers_question_options", ["answer_id", "question_option_id"], name: "answer_question_option_index", using: :btree - add_index "answers_question_options", ["question_option_id", "answer_id"], name: "question_option_answer_index", using: :btree + add_index "answers_question_options", ["answer_id", "question_option_id"], name: "answer_question_option_index" + add_index "answers_question_options", ["question_option_id", "answer_id"], name: "question_option_answer_index" create_table "exported_plans", force: :cascade do |t| t.integer "plan_id" @@ -69,9 +69,9 @@ t.datetime "created_at" end - add_index "friendly_id_slugs", ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type", unique: true, using: :btree - add_index "friendly_id_slugs", ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id", using: :btree - add_index "friendly_id_slugs", ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type", using: :btree + add_index "friendly_id_slugs", ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type", unique: true + add_index "friendly_id_slugs", ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id" + add_index "friendly_id_slugs", ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type" create_table "guidance_groups", force: :cascade do |t| t.string "name" @@ -149,8 +149,8 @@ t.datetime "updated_at", null: false end - add_index "perms", ["name"], name: "index_perms_on_name", using: :btree - add_index "perms", ["name"], name: "index_roles_on_name_and_resource_type_and_resource_id", using: :btree + add_index "perms", ["name"], name: "index_perms_on_name" + add_index "perms", ["name"], name: "index_roles_on_name_and_resource_type_and_resource_id" create_table "phases", force: :cascade do |t| t.string "title" @@ -226,8 +226,8 @@ t.integer "theme_id", null: false end - add_index "questions_themes", ["question_id", "theme_id"], name: "question_theme_index", using: :btree - add_index "questions_themes", ["theme_id", "question_id"], name: "theme_question_index", using: :btree + add_index "questions_themes", ["question_id", "theme_id"], name: "question_theme_index" + add_index "questions_themes", ["theme_id", "question_id"], name: "theme_question_index" create_table "regions", force: :cascade do |t| t.string "abbreviation" @@ -264,7 +264,7 @@ t.datetime "updated_at", null: false end - add_index "settings", ["target_type", "target_id", "var"], name: "index_settings_on_target_type_and_target_id_and_var", unique: true, using: :btree + add_index "settings", ["target_type", "target_id", "var"], name: "index_settings_on_target_type_and_target_id_and_var", unique: true create_table "splash_logs", force: :cascade do |t| t.string "destination" @@ -328,7 +328,6 @@ t.string "firstname" t.string "surname" t.string "email", default: "", null: false - t.string "orcid_id" t.string "shibboleth_id" t.datetime "created_at" t.datetime "updated_at" diff --git a/test/functional/answers_controller_test.rb b/test/functional/answers_controller_test.rb new file mode 100644 index 0000000..a671b57 --- /dev/null +++ b/test/functional/answers_controller_test.rb @@ -0,0 +1,74 @@ +class AnswersControllerTest < ActionDispatch::IntegrationTest + + include Devise::Test::IntegrationHelpers + + setup do + @user = User.last + + scaffold_plan + end + + # PUT/PATCH /[:locale]/answer/[:id] + # ---------------------------------------------------------- + test "should be able to update an answer" do + sign_in @user + + # Test an answer for each Querstion Format + QuestionFormat.all.each do |format| + question = Question.find_by(question_format: format) + template = question.section.phase.template + + plan = Plan.create(title: "Testing Answer For #{format.title}", + template: template) + + referrer = "/#{I18n.locale}/plans/#{plan.id}/phases/#{question.section.phase.id}/edit" + + answer = Answer.create(user: @user, plan: plan, question: question, + text: "#{format.title} Tester") + + if format.option_based + + else + # Try creating one first + form_attributes = {answer: {text: "#{format.title} Tester", + user_id: @user.id, plan_id: plan.id, + question_id: question.id}} + + put_answer(answer, form_attributes, referrer) + + answer = Answer.find_by(user: @user, plan: plan, question: question) + assert_not answer.id.nil?, "expected the answer to have been created and for an id to be present after creating a #{format.title} question!" + + # Try editing it + form_attributes = {answer: {text: "Tested", user_id: answer.user.id, + plan_id: answer.plan.id, + question_id: answer.question.id}} + + put_answer(answer, form_attributes, referrer) + + answer.reload + +puts answer.inspect + + assert_not answer.id.nil?, "expected the answer to have been updated and for an id to be present after creating a #{format.title} question!" + assert_equal "Tested", answer.text, "expected the text to have been updated for a #{format.title} question!" + + end + end + end + + + private + def put_answer(answer, attributes, referrer) + put answer_path(I18n.locale, answer), attributes, {'HTTP_REFERER': referrer} + + assert_equal I18n.t('helpers.project.answer_recorded'), flash[:notice] + assert_response :redirect + + follow_redirects + + assert_response :success + assert_select '.main_page_content h1', Plan.model_name.human.pluralize.titleize + + end +end \ No newline at end of file diff --git a/test/functional/application_controller_test.rb b/test/functional/application_controller_test.rb index 705724f..90ba2aa 100644 --- a/test/functional/application_controller_test.rb +++ b/test/functional/application_controller_test.rb @@ -7,6 +7,8 @@ @user = User.first stub_blog_calls + + scaffold_plan end # In order to test methods on the application controller, we must call routes @@ -15,7 +17,7 @@ # ---------------------------------------------------------------- test "make sure unauthorized users are redirected to the root path" do plan = Plan.first - get project_path(I18n.locale, plan) + get plan_path(I18n.locale, plan) assert_redirected_to "#{root_path}?locale=#{I18n.locale}" end @@ -28,7 +30,7 @@ # Verify that passing a locale in the URL will set the locale other = I18n.available_locales.last - get project_path(other, plan) + get plan_path(other, plan) assert_redirected_to "#{root_path}?locale=#{I18n.locale}", "Expected the changed locale to appear in the query string" assert_equal other, I18n.locale, "Expected the locale to have been set when passing it in URL" end @@ -44,7 +46,7 @@ get root_path assert_equal @user.language.abbreviation.to_s, I18n.locale.to_s, "Expected the locale to have been set to the user's chosen language" - assert "#{projects_path}".starts_with?("/#{@user.language.abbreviation}/"), "Expected the system to use the user's language specification" + assert "#{plans_path}".starts_with?("/#{@user.language.abbreviation}/"), "Expected the system to use the user's language specification" end end @@ -60,7 +62,7 @@ get root_path org_lang = Language.find(@user.org[:language_id]).abbreviation assert_equal org_lang.to_s, I18n.locale.to_s, "Expected the locale to have been set to the org's chosen language" - assert "#{projects_path}".starts_with?("/#{org_lang}/"), "Expected the system to use the org's language specification" + assert "#{plans_path}".starts_with?("/#{org_lang}/"), "Expected the system to use the org's language specification" end end @@ -70,8 +72,8 @@ assert_equal root_path, session[:previous_url] sign_in @user - get projects_path - assert_equal projects_path, session[:previous_url] + get plans_path + assert_equal plans_path, session[:previous_url] end end diff --git a/test/functional/static_pages_controller_test.rb b/test/functional/static_pages_controller_test.rb index f2cd2ff..d31c76d 100644 --- a/test/functional/static_pages_controller_test.rb +++ b/test/functional/static_pages_controller_test.rb @@ -3,8 +3,9 @@ include Devise::Test::IntegrationHelpers setup do - @public_plan = Plan.create!({title: 'Public Test Project', template: Template.first, - org: Org.first, visibility: :publicly_visible}) + @public_plan = Plan.create!({title: 'Public Test Project', + template: Template.first, + visibility: :publicly_visible}) end # ---------------------------------------------------------- diff --git a/test/routing_test.rb b/test/routing_test.rb index eeb10a6..b23a0a5 100644 --- a/test/routing_test.rb +++ b/test/routing_test.rb @@ -1,6 +1,12 @@ require 'test_helper' class RoutingTest < ActionDispatch::IntegrationTest + + include Devise::Test::IntegrationHelpers + + setup do + scaffold_plan + end # Routing for the home page # ------------------------------------------------------------------- @@ -34,24 +40,16 @@ assert_routing public_plans_path(locale: I18n.locale), target end test 'GET /public_export should resolve to StaticPagesController#public_export' do - project = Project.includes(:plans).where.not(plans: {id: nil}).first - target = {controller: "static_pages", action: "public_export", locale: "#{I18n.locale}", id: project.id.to_s} + plan = Plan.first + target = {controller: "static_pages", action: "public_export", locale: "#{I18n.locale}", id: plan.id.to_s} - assert_routing public_export_path(locale: I18n.locale, id: project), target + assert_routing public_export_path(locale: I18n.locale, id: plan), target end # OAuth - Based on providers identified in the en-UK locale file # ------------------------------------------------------------------- - test "GET /users/auth/[:provider] should resolve to OmniauthCallbackController#passthru" do - target = {controller: "users/omniauth_callbacks", action: "passthru"} - - IdentifierScheme.all.each do |scheme| - assert_routing "/users/auth/#{scheme.name.downcase}", target - end - end - test "POST /auth/[:provider]/callback should resolve to OmniauthCallbackController#[:provider]" do - IdentifierScheme.all.each do |scheme| + IdentifierScheme.where(active: true).all.each do |scheme| target = {controller: "users/omniauth_callbacks", action: "#{scheme.name.downcase}"} assert_routing "/users/auth/#{scheme.name.downcase}/callback", target end diff --git a/test/test_helper.rb b/test/test_helper.rb index c5698d7..548aaf8 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -92,7 +92,8 @@ assert_response :redirect assert_match "#{root_url}", @response.redirect_url - follow_redirect! + follow_redirects + assert_response :success assert_select '.welcome-message h2', I18n.t('welcome_title') end @@ -103,17 +104,36 @@ assert_match "#{root_url}", @response.redirect_url # Sometimes Devise has an intermediary step prior to sending the user to the final destination + follow_redirects + + assert_response :success + assert_select '.main_page_content h1', Plan.model_name.human.pluralize.titleize + end + + # ---------------------------------------------------------------------- + def follow_redirects while @response.status >= 300 && @response.status < 400 follow_redirect! end - - assert_response :success - assert_select '.main_page_content h1', I18n.t('helpers.project.projects_title') end - # UNIT TEST HELPERS # ---------------------------------------------------------------------- + def verify_deep_copy(object, exclusions) + clazz = Object.const_get(object.class.name) + assert clazz.respond_to?(:deep_copy), "#{object.class.name} does not have a deep_copy method!" + + copy = clazz.deep_copy(object) + object.attributes.each do |name, val| + if exclusions.include?(name) + assert_not_equal object.send(name), copy.send(name), "expected the deep_copy of #{object.class.name}.#{name} to be unique in the copy" + else + assert_equal object.send(name), copy.send(name), "expected the deep_copy of #{object.class.name}.#{name} to match" + end + end + end + + # ---------------------------------------------------------------------- def verify_has_many_relationship(object, new_association, initial_expected_count) # Assumes that the association name matches the pluralized name of the class rel = "#{class_name_to_attribute_name(new_association.class.name).pluralize}" diff --git a/test/unit/phase_test.rb b/test/unit/phase_test.rb index 33f6e6d..5e8fdac 100644 --- a/test/unit/phase_test.rb +++ b/test/unit/phase_test.rb @@ -37,6 +37,11 @@ end # --------------------------------------------------- + test "deep copy" do + verify_deep_copy(@phase, ['id', 'created_at', 'updated_at', 'slug']) + end + + # --------------------------------------------------- test "can CRUD Phase" do obj = Phase.create(title: 'Testing CRUD', template: @template, number: 4) assert_not obj.id.nil?, "was expecting to be able to create a new Phase! - #{obj.errors.map{|f, m| f.to_s + ' ' + m}.join(', ')}" diff --git a/test/unit/question_test.rb b/test/unit/question_test.rb index f5f3d4d..d335d7b 100644 --- a/test/unit/question_test.rb +++ b/test/unit/question_test.rb @@ -65,28 +65,9 @@ end # --------------------------------------------------- -# TODO: amoeba gem doesn't seem to be in play anymore -=begin - test "should be able to clone a Question (should include its question_options, themes suggested_answers)" do - Question.all.each do |question| -puts question.inspect - q = question.amoeba_dup - - assert_equal question.text, q.text, "expected the 'text' field to match" - assert_equal question.default_value, q.default_value, "expected the 'default_value' field to match" - assert_equal question.guidance, q.guidance, "expected the 'guidance' field to match" - assert_equal question.number, q.number, "expected the 'number' field to match" - assert_equal question.section, q.section, "expected the 'section' field to match" - assert_equal question.question_format, q.question_format, "expected the 'question_format' field to match" - assert_equal question.option_comment_display, q.option_comment_display, "expected the 'option_comment_display' field to match" - assert_equal question.modifiable, q.modifiable, "expected the 'modifiable' field to match" - - assert q.question_options.eql?(question.question_options), "expected the clone to carry over all of the question_options instead got: original - #{question.question_options.count}, clone - #{q.question_options.count}" - assert q.suggested_answers.eql?(question.suggested_answers), "expected the clone to carry over all of the suggested_answers instead got: original - #{question.suggested_answers.count}, clone - #{q.suggested_answers.count}" - assert q.themes.eql?(question.themes), "expected the clone to carry over all of the suggested_answers instead got: original - #{question.themes.count}, clone - #{q.themes.count}" - end + test "deep copy" do + verify_deep_copy(@question, ['id', 'created_at', 'updated_at']) end -=end # --------------------------------------------------- test "can CRUD Question" do diff --git a/test/unit/section_test.rb b/test/unit/section_test.rb index f827044..5a22b5f 100644 --- a/test/unit/section_test.rb +++ b/test/unit/section_test.rb @@ -27,6 +27,11 @@ end # --------------------------------------------------- + test "deep copy" do + verify_deep_copy(@section, ['id', 'created_at', 'updated_at']) + end + + # --------------------------------------------------- test "can CRUD Section" do obj = Section.create(phase: @template.phases.last, title: 'Tester', number: 9) assert_not obj.id.nil?, "was expecting to be able to create a new Section: #{obj.errors.map{|f, m| f.to_s + ' ' + m}.join(', ')}" diff --git a/test/unit/template_test.rb b/test/unit/template_test.rb index cb8f9b9..b8e1807 100644 --- a/test/unit/template_test.rb +++ b/test/unit/template_test.rb @@ -31,6 +31,49 @@ assert a.valid?, "expected the 'org', 'version' and 'title' fields to be enough to create an Template! - #{a.errors.map{|f, m| f.to_s + ' ' + m}.join(', ')}" end + # --------------------------------------------------- + test "deep copy" do + verify_deep_copy(@template, ['id', 'created_at', 'updated_at', 'slug']) + end + + # ---------- has_customisations? ---------- + test "has_customisations? correctly identifies if a given org has customised the template" do + # TODO: Not sure if this is still an applicable method + + end + + + # --------------------------------------------------- + test "can CRUD Template" do + tmplt = Template.create(org: @org, version: 1, title: 'Tester') + assert_not tmplt.id.nil?, "was expecting to be able to create a new Template!" + + tmplt.description = 'Testing an update' + tmplt.save! + tmplt.reload + assert_equal 'Testing an update', tmplt.description, "Was expecting to be able to update the description of the Template!" + + assert tmplt.destroy!, "Was unable to delete the Template!" + end + + # --------------------------------------------------- + test "can manage has_many relationship with Phase" do + phase = Phase.new(title: 'Test Phase', number: 2) + verify_has_many_relationship(@template, phase, @template.phases.count) + end + + # --------------------------------------------------- + test "can manage has_many relationship with Plan" do + plan = Plan.new(title: 'Test Plan') + verify_has_many_relationship(@template, plan, @template.plans.count) + end + + # --------------------------------------------------- + test "can manage belongs_to relationship with Org" do + tmplt = Template.new(title: 'My test', version: 1) + verify_belongs_to_relationship(tmplt, @org) + end + # ---------- settings ---------- # --------------------------------------------------- test "settings should use defaults if none are defined" do @@ -224,43 +267,5 @@ assert_equal(default_formatting, @template.settings(:export).formatting) end - - # ---------- has_customisations? ---------- - test "has_customisations? correctly identifies if a given org has customised the template" do - # TODO: Not sure if this is still an applicable method - - end - - - # --------------------------------------------------- - test "can CRUD Template" do - tmplt = Template.create(org: @org, version: 1, title: 'Tester') - assert_not tmplt.id.nil?, "was expecting to be able to create a new Template!" - - tmplt.description = 'Testing an update' - tmplt.save! - tmplt.reload - assert_equal 'Testing an update', tmplt.description, "Was expecting to be able to update the description of the Template!" - - assert tmplt.destroy!, "Was unable to delete the Template!" - end - - # --------------------------------------------------- - test "can manage has_many relationship with Phase" do - phase = Phase.new(title: 'Test Phase', number: 2) - verify_has_many_relationship(@template, phase, @template.phases.count) - end - - # --------------------------------------------------- - test "can manage has_many relationship with Plan" do - plan = Plan.new(title: 'Test Plan') - verify_has_many_relationship(@template, plan, @template.plans.count) - end - - # --------------------------------------------------- - test "can manage belongs_to relationship with Org" do - tmplt = Template.new(title: 'My test', version: 1) - verify_belongs_to_relationship(tmplt, @org) - end end diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 7198708..86dab2f 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -51,14 +51,17 @@ # --------------------------------------------------- test "name returns the correct value" do - # Name should return 'First Last' - assert @user.name.include?(@user.firstname) - assert @user.name.include?(@user.surname) + # Name should return 'First Last' if we do not specify email + assert @user.name(false).include?(@user.firstname), "expected the first name to be included when specifying non-email" + assert @user.name(false).include?(@user.surname), "expected the last name to be included when specifying non-email" + # Should return email if we do not pass in a variable + assert_equal @user.email, @user.name, "expected the email by default" + # Name should return the email if no first and last are present @user.firstname = nil @user.surname = nil - assert_equal @user.email, @user.name + assert_equal @user.email, @user.name(false), "expected the email if there is no first and last name" end # ---------------------------------------------------