Generates Task model and adds relative unit tests

This commit is contained in:
Lou 2021-05-10 16:12:45 +02:00
commit 5584e328b1
8 changed files with 64 additions and 2 deletions

View file

@ -4,6 +4,8 @@ class Activity < ApplicationRecord
has_one :joined_user_activity has_one :joined_user_activity
has_one :user, :through => :joined_user_activity has_one :user, :through => :joined_user_activity
has_many :tasks
validates :name, presence: true validates :name, presence: true
validates :author, presence: true validates :author, presence: true
end end

7
app/models/task.rb Normal file
View file

@ -0,0 +1,7 @@
class Task < ApplicationRecord
validates :name, presence: true
validates :user, presence: true
belongs_to :activity
belongs_to :user
end

View file

@ -9,5 +9,7 @@ class User < ApplicationRecord
has_many :joined_user_activities has_many :joined_user_activities
has_many :activities, :through => :joined_user_activities has_many :activities, :through => :joined_user_activities
has_many :tasks
has_secure_password has_secure_password
end end

View file

@ -3,7 +3,9 @@ Rails.application.routes.draw do
namespace :v1 do namespace :v1 do
resources :users resources :users
resources :tokens, only: %i[create] resources :tokens, only: %i[create]
resources :activities resources :activities do
resources :tasks
end
end end
end end
end end

View file

@ -0,0 +1,12 @@
class CreateTasks < ActiveRecord::Migration[6.1]
def change
create_table :tasks do |t|
t.string :name, index: true
t.text :description
t.references :activity, null: false
t.references :user, null: false
t.timestamps
end
end
end

View file

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2021_04_29_184439) do ActiveRecord::Schema.define(version: 2021_05_10_133939) do
create_table "activities", force: :cascade do |t| create_table "activities", force: :cascade do |t|
t.string "name", null: false t.string "name", null: false
@ -32,6 +32,18 @@ ActiveRecord::Schema.define(version: 2021_04_29_184439) do
t.index ["user_id"], name: "index_joined_user_activities_on_user_id" t.index ["user_id"], name: "index_joined_user_activities_on_user_id"
end end
create_table "tasks", force: :cascade do |t|
t.string "name"
t.text "description"
t.integer "activity_id", null: false
t.integer "user_id", null: false
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["activity_id"], name: "index_tasks_on_activity_id"
t.index ["name"], name: "index_tasks_on_name"
t.index ["user_id"], name: "index_tasks_on_user_id"
end
create_table "users", force: :cascade do |t| create_table "users", force: :cascade do |t|
t.string "email", null: false t.string "email", null: false
t.string "username", null: false t.string "username", null: false

7
test/fixtures/tasks.yml vendored Normal file
View file

@ -0,0 +1,7 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
name: Do something
description: Description of a task
user: one
activity: one

18
test/models/task_test.rb Normal file
View file

@ -0,0 +1,18 @@
require "test_helper"
class TaskTest < ActiveSupport::TestCase
setup do
@user = users(:one)
@activity = activities(:one)
end
test "task should be valid" do
task = Task.new(name: "Write", description: "Write a new line", user_id: @user.id, activity_id: @activity.id)
assert task.valid?
end
test "task should not be valid" do
task = Task.new(name: "Write", description: "Write a new line")
assert_not task.valid?
end
end