Chronobriq-API/test/controllers/api/v1/activities_controller_test.rb
2021-05-10 22:06:12 +02:00

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