Adds def create and test units, must fix a test
This commit is contained in:
parent
e27c66edee
commit
bfda3e561b
6 changed files with 47 additions and 5 deletions
|
|
@ -10,10 +10,21 @@ class Api::V1::TasksController < ApplicationController
|
|||
render json: TaskSerializer.new(@task).serializable_hash.to_json
|
||||
end
|
||||
|
||||
def create
|
||||
task = current_user.tasks.build(task_params)
|
||||
task.activity_id = params[:activity_id]
|
||||
if task.save
|
||||
render json: TaskSerializer.new(task).serializable_hash.to_json,
|
||||
status: :created
|
||||
else
|
||||
render json: { errors: activity.errors }, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def task_params
|
||||
params.require(:task).permit(:name, :description, :user_id, :activity_id)
|
||||
params.require(:task).permit(:name, :description, :activity_id)
|
||||
end
|
||||
|
||||
def set_task
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
class CreateTasks < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
create_table :tasks do |t|
|
||||
t.string :name, index: true
|
||||
t.string :name, null: false
|
||||
t.index :name
|
||||
t.text :description
|
||||
t.references :activity, null: false
|
||||
t.references :user, null: false
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ ActiveRecord::Schema.define(version: 2021_05_10_133939) do
|
|||
end
|
||||
|
||||
create_table "tasks", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "name", null: false
|
||||
t.text "description"
|
||||
t.integer "activity_id", null: false
|
||||
t.integer "user_id", null: false
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Task.reset_pk_sequence
|
|||
end
|
||||
end
|
||||
|
||||
10.times do |i|
|
||||
30.times do |i|
|
||||
task = Task.create(
|
||||
name: Faker::Fantasy::Tolkien.character,
|
||||
description: Faker::Fantasy::Tolkien.poem,
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ class Api::V1::ActivitiesControllerTest < ActionDispatch::IntegrationTest
|
|||
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 }},
|
||||
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
|
||||
|
|
|
|||
|
|
@ -34,4 +34,34 @@ class Api::V1::TasksControllerTest < ActionDispatch::IntegrationTest
|
|||
as: :json
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
# CREATE
|
||||
test "should create task" do
|
||||
assert_difference("Task.count") do
|
||||
post api_v1_activity_tasks_url(@activity),
|
||||
params: { task: { name: @task.name, description: @task.description, user_id: @user, activity_id: @activity } },
|
||||
headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
|
||||
as: :json
|
||||
end
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
test "should forbid create task - not logged in" do
|
||||
assert_no_difference("Task.count") do
|
||||
post api_v1_activity_tasks_url(@activity),
|
||||
params: { task: { name: @task.name, description: @task.description, user_id: @user, activity_id: @activity } },
|
||||
as: :json
|
||||
end
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
test "should forbid create task - missing user or activity id" do
|
||||
assert_no_difference("Task.count") do
|
||||
post api_v1_activity_tasks_url(@activity),
|
||||
params: { task: { name: @task.name, description: @task.description } },
|
||||
headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
|
||||
as: :json
|
||||
end
|
||||
assert_response :forbidden
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue