From 5584e328b1d7c73779da7b4d15df8712996a162c Mon Sep 17 00:00:00 2001 From: Lou Date: Mon, 10 May 2021 16:12:45 +0200 Subject: [PATCH] Generates Task model and adds relative unit tests --- app/models/activity.rb | 2 ++ app/models/task.rb | 7 +++++++ app/models/user.rb | 2 ++ config/routes.rb | 4 +++- db/migrate/20210510133939_create_tasks.rb | 12 ++++++++++++ db/schema.rb | 14 +++++++++++++- test/fixtures/tasks.yml | 7 +++++++ test/models/task_test.rb | 18 ++++++++++++++++++ 8 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 app/models/task.rb create mode 100644 db/migrate/20210510133939_create_tasks.rb create mode 100644 test/fixtures/tasks.yml create mode 100644 test/models/task_test.rb diff --git a/app/models/activity.rb b/app/models/activity.rb index 0d9a66f..748cfd6 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -4,6 +4,8 @@ class Activity < ApplicationRecord has_one :joined_user_activity has_one :user, :through => :joined_user_activity + has_many :tasks + validates :name, presence: true validates :author, presence: true end diff --git a/app/models/task.rb b/app/models/task.rb new file mode 100644 index 0000000..203b8cb --- /dev/null +++ b/app/models/task.rb @@ -0,0 +1,7 @@ +class Task < ApplicationRecord + validates :name, presence: true + validates :user, presence: true + + belongs_to :activity + belongs_to :user +end diff --git a/app/models/user.rb b/app/models/user.rb index a4ecfa9..859eaf9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,5 +9,7 @@ class User < ApplicationRecord has_many :joined_user_activities has_many :activities, :through => :joined_user_activities + has_many :tasks + has_secure_password end diff --git a/config/routes.rb b/config/routes.rb index bea19ed..f5f0664 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,9 @@ Rails.application.routes.draw do namespace :v1 do resources :users resources :tokens, only: %i[create] - resources :activities + resources :activities do + resources :tasks + end end end end diff --git a/db/migrate/20210510133939_create_tasks.rb b/db/migrate/20210510133939_create_tasks.rb new file mode 100644 index 0000000..83a9532 --- /dev/null +++ b/db/migrate/20210510133939_create_tasks.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index 32c4526..386b9c7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # 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| 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" 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| t.string "email", null: false t.string "username", null: false diff --git a/test/fixtures/tasks.yml b/test/fixtures/tasks.yml new file mode 100644 index 0000000..8e7c703 --- /dev/null +++ b/test/fixtures/tasks.yml @@ -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 \ No newline at end of file diff --git a/test/models/task_test.rb b/test/models/task_test.rb new file mode 100644 index 0000000..decfb2e --- /dev/null +++ b/test/models/task_test.rb @@ -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