Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@benjiwheeler
Last active January 19, 2018 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benjiwheeler/2435d5cde8ca4c467d55 to your computer and use it in GitHub Desktop.
Save benjiwheeler/2435d5cde8ca4c467d55 to your computer and use it in GitHub Desktop.
Example of Test::Unit code from Underground rails application, using FactoryGirl to generate test objects
require 'test_helper'
class GroupsControllerTest < ActionController::TestCase
test "ok to create duplicate group through api" do
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "hannabarbera"
assert_response :created
assert_not_nil assigns(:group)
post :apicreate, format: :json, nickname: "hannabarbera"
assert_response :success
assert_not_nil assigns(:group)
end
test "user can auto-join new group" do
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "hannabarbera", do_join: "true"
assert_response :created
assert_not_nil assigns(:group)
assert user.is_member?(assigns(:group))
end
test "new group gets fullname set automatically when not provided explicitly" do
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "hannabarbera"
assert_response :created
assert_not_nil assigns(:group)
assert assigns(:group).fullname == "Hannabarbera"
end
test "new group does NOT set fullname automatically when it IS provided explicitly" do
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "hannabarbera", fullname: "Hanna-Barbera Studios"
assert_response :created
assert_not_nil assigns(:group)
assert_not assigns(:group).fullname == "Hannabarbera"
end
test "groups enforce min nickname length" do
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "h", fullname: "Hanna-Barbera Studios"
assert_response :error
assert Group.find_by(nickname: "h").blank?
end
test "groups default to private" do
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "masons", fullname: "Masons"
assert_response :created
created_group = Group.find_by(nickname: "masons")
assert_not_nil created_group
assert (created_group.privacy_level == "private")
end
test "groups can be created public" do
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "women", fullname: "All Women", privacy_level: "public"
assert_response :created
created_group = Group.find_by(nickname: "women")
assert_not_nil created_group
assert (created_group.privacy_level == "public")
end
test "anon is member of new group" do
anonymous = User.anonymous
user = create(:user)
@request.env["HTTP_AUTHORIZATION"] = user.basic_auth_header("abc1234")
post :apicreate, format: :json, nickname: "hannabarbera"
assert_response :created
assert_not_nil assigns(:group)
assert anonymous.is_member?(assigns(:group))
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment