From 8729ec24e81a9902722e2fa4d900a96b475f84a6 Mon Sep 17 00:00:00 2001 From: Rafael Fernandes Date: Sun, 26 Nov 2017 19:38:21 -0200 Subject: [PATCH] =?UTF-8?q?Teste=20unit=C3=A1rio=20de=20favoritos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .rspec | 1 + app/models/favorite.rb | 4 +++ app/models/series.rb | 2 +- app/models/series_list.rb | 25 +++---------------- db/migrate/20171126210039_create_favorites.rb | 10 ++++++++ db/schema.rb | 13 +++++++++- spec/factories/favorites.rb | 6 +++++ spec/factories/series_lists.rb | 5 ++++ spec/models/favorite_spec.rb | 6 +++++ spec/models/series_list_spec.rb | 6 +++++ 10 files changed, 54 insertions(+), 24 deletions(-) create mode 100644 app/models/favorite.rb create mode 100644 db/migrate/20171126210039_create_favorites.rb create mode 100644 spec/factories/favorites.rb create mode 100644 spec/factories/series_lists.rb create mode 100644 spec/models/favorite_spec.rb create mode 100644 spec/models/series_list_spec.rb diff --git a/.rspec b/.rspec index c99d2e7..775c62b 100644 --- a/.rspec +++ b/.rspec @@ -1 +1,2 @@ --require spec_helper +--format documentation \ No newline at end of file diff --git a/app/models/favorite.rb b/app/models/favorite.rb new file mode 100644 index 0000000..2a18cd4 --- /dev/null +++ b/app/models/favorite.rb @@ -0,0 +1,4 @@ +class Favorite < ApplicationRecord + belongs_to :series_list + belongs_to :series +end diff --git a/app/models/series.rb b/app/models/series.rb index 524f859..ea3f6b0 100644 --- a/app/models/series.rb +++ b/app/models/series.rb @@ -1,5 +1,5 @@ class Series < ApplicationRecord - has_many :seasons + has_many :seasons validates :title, presence: true validates :description, presence: true diff --git a/app/models/series_list.rb b/app/models/series_list.rb index 869f19a..c34a913 100644 --- a/app/models/series_list.rb +++ b/app/models/series_list.rb @@ -1,24 +1,5 @@ class SeriesList < ApplicationRecord - belongs_to :user - has_many :series - - # has_many :series_inside, class_name: 'SerieInsideList' - - - # def add_serie(serie_id) - # serie_inside_list = series_inside.where('serie_id = ?', serie_id).first - # if serie_id != new_serie.id - # new_serie = SerieInsideList.new(serie: Serie.find(serie_id)) - # series_inside << new_serie - # save - # end - # end - - - # def remove_serie(serie_id) - # serie_inside_list = series_inside.where('serie_id = ?', serie_id).first - # series_inside.delete serie_inside_list - # serie_inside_list.destroy - # save - # end + has_one :user + has_many :favorites + has_many :series, through: :favorites end diff --git a/db/migrate/20171126210039_create_favorites.rb b/db/migrate/20171126210039_create_favorites.rb new file mode 100644 index 0000000..42efbae --- /dev/null +++ b/db/migrate/20171126210039_create_favorites.rb @@ -0,0 +1,10 @@ +class CreateFavorites < ActiveRecord::Migration[5.0] + def change + create_table :favorites do |t| + t.references :series_list, foreign_key: true + t.references :series, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 8e8e2c0..211413b 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: 20171126201300) do +ActiveRecord::Schema.define(version: 20171126210039) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -25,6 +25,15 @@ t.index ["season_id"], name: "index_episodes_on_season_id", using: :btree end + create_table "favorites", force: :cascade do |t| + t.integer "series_list_id" + t.integer "series_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["series_id"], name: "index_favorites_on_series_id", using: :btree + t.index ["series_list_id"], name: "index_favorites_on_series_list_id", using: :btree + end + create_table "seasons", force: :cascade do |t| t.string "name" t.integer "number" @@ -68,6 +77,8 @@ end add_foreign_key "episodes", "seasons" + add_foreign_key "favorites", "series" + add_foreign_key "favorites", "series_lists" add_foreign_key "seasons", "series" add_foreign_key "users", "series_lists" end diff --git a/spec/factories/favorites.rb b/spec/factories/favorites.rb new file mode 100644 index 0000000..c3feeb1 --- /dev/null +++ b/spec/factories/favorites.rb @@ -0,0 +1,6 @@ +FactoryBot.define do + factory :favorite do + series_list nil + series nil + end +end diff --git a/spec/factories/series_lists.rb b/spec/factories/series_lists.rb new file mode 100644 index 0000000..8b36410 --- /dev/null +++ b/spec/factories/series_lists.rb @@ -0,0 +1,5 @@ +FactoryBot.define do + factory :series_list do + + end +end diff --git a/spec/models/favorite_spec.rb b/spec/models/favorite_spec.rb new file mode 100644 index 0000000..55b1039 --- /dev/null +++ b/spec/models/favorite_spec.rb @@ -0,0 +1,6 @@ +require 'rails_helper' + +RSpec.describe Favorite, type: :model do + it { should belong_to :series_list } + it { should belong_to :series } +end diff --git a/spec/models/series_list_spec.rb b/spec/models/series_list_spec.rb new file mode 100644 index 0000000..6f9f34e --- /dev/null +++ b/spec/models/series_list_spec.rb @@ -0,0 +1,6 @@ +require 'rails_helper' + +RSpec.describe SeriesList, type: :model do + it { should have_one :user } + it { should have_many :series } +end