103 lines
No EOL
3.2 KiB
Ruby
103 lines
No EOL
3.2 KiB
Ruby
require "test_helper"
|
|
|
|
class Api::V1::ActivitiesControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
@activity = activities(:one)
|
|
@user = users(:one)
|
|
end
|
|
|
|
#INDEX
|
|
test "should access index" do
|
|
get api_v1_activities_url,
|
|
headers: { Authorization: JsonWebToken.encode(user_id: @activity.author_id) },
|
|
as: :json
|
|
assert_response :success
|
|
end
|
|
|
|
test "should not access index" do
|
|
get api_v1_activities_url, as: :json
|
|
assert_response :forbidden
|
|
end
|
|
|
|
# test "should filter activities by name" do
|
|
# assert_equal 2, Activity.filter_by_name('pyheatpump').count
|
|
# end
|
|
|
|
# test "should filter activities by name and sort them" do
|
|
# assert_equal [activities(:one), activities(:three)], Activity.all.select {|n| n.name.include?("pyheat")}.sort {|a,b| a.name <=> b.name}
|
|
# end
|
|
|
|
#SHOW
|
|
test "should access show" do
|
|
get api_v1_activity_url(@activity),
|
|
headers: { Authorization: JsonWebToken.encode(user_id: @activity.author_id) },
|
|
as: :json
|
|
assert_response :success
|
|
|
|
json_response = JSON.parse(self.response.body)
|
|
assert_equal @activity.name, json_response['data']['attributes']['name']
|
|
assert_equal @activity.author_id, json_response['data']['attributes']['author_id']
|
|
assert_equal @activity.description, json_response['data']['attributes']['description']
|
|
assert_equal @activity.client, json_response['data']['attributes']['client']
|
|
end
|
|
|
|
test "should not access show" do
|
|
get api_v1_activity_url(@activity),
|
|
as: :json
|
|
assert_response :forbidden
|
|
end
|
|
|
|
#CREATE
|
|
test "should create activity" do
|
|
assert_difference("Activity.count") do
|
|
post api_v1_activities_url,
|
|
params: { activity: { name: @activity.name, client: @activity.client, description: @activity.description, author_id: @user } },
|
|
headers: { Authorization: JsonWebToken.encode(user_id: @activity.author_id) },
|
|
as: :json
|
|
end
|
|
assert_response :created
|
|
end
|
|
|
|
test "should forbid create activity" do
|
|
assert_no_difference "Activity.count" do
|
|
post api_v1_activities_url,
|
|
params: { activity: { name: @activity.name, client: @activity.client, description: @activity.description, author_id: @user } },
|
|
as: :json
|
|
end
|
|
assert_response :forbidden
|
|
end
|
|
|
|
#UPDATE
|
|
test "should update activity" do
|
|
patch api_v1_activity_url(@activity),
|
|
params: { activity: { name: "Updated name" } },
|
|
headers: { Authorization: JsonWebToken.encode(user_id: @activity.author_id) },
|
|
as: :json
|
|
assert_response :success
|
|
end
|
|
|
|
test "should forbid update activity - not logged in" do
|
|
patch api_v1_activity_url(@activity),
|
|
params: { activity: { name: "Updated name" } },
|
|
as: :json
|
|
assert_response :forbidden
|
|
end
|
|
|
|
#DESTROY
|
|
test "should destroy activity" do
|
|
assert_difference "Activity.count", -1 do
|
|
delete api_v1_activity_url(@activity),
|
|
headers: { Authorization: JsonWebToken.encode(user_id: @activity.author_id) },
|
|
as: :json
|
|
end
|
|
assert_response :no_content
|
|
end
|
|
|
|
test "should forbid destroy activity - not logged in" do
|
|
assert_no_difference('Activity.count') do
|
|
delete api_v1_activity_url(@activity),
|
|
as: :json
|
|
end
|
|
assert_response :forbidden
|
|
end
|
|
end |