From 86f9bb8a2c3a8f011ac4b9c8d726e34607ed47c1 Mon Sep 17 00:00:00 2001 From: David Gay Date: Thu, 2 Nov 2023 21:27:28 -0400 Subject: PokedexEntry model --- app/models/pokedex_entry.rb | 7 +++++++ app/models/pokemon.rb | 2 ++ app/models/run.rb | 1 + app/models/user.rb | 3 ++- db/migrate/20231103011455_create_pokedex_entries.rb | 13 +++++++++++++ test/fixtures/pokedex_entries.yml | 15 +++++++++++++++ test/models/pokedex_entry_test.rb | 7 +++++++ 7 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 app/models/pokedex_entry.rb create mode 100644 db/migrate/20231103011455_create_pokedex_entries.rb create mode 100644 test/fixtures/pokedex_entries.yml create mode 100644 test/models/pokedex_entry_test.rb diff --git a/app/models/pokedex_entry.rb b/app/models/pokedex_entry.rb new file mode 100644 index 0000000..21924ce --- /dev/null +++ b/app/models/pokedex_entry.rb @@ -0,0 +1,7 @@ +class PokedexEntry < ApplicationRecord + belongs_to :user + belongs_to :run + belongs_to :pokemon + + validates :recorded_at, presence: true +end diff --git a/app/models/pokemon.rb b/app/models/pokemon.rb index 7543f64..293281a 100644 --- a/app/models/pokemon.rb +++ b/app/models/pokemon.rb @@ -1,3 +1,5 @@ class Pokemon < ApplicationRecord + has_many :pokedex_entries, dependent: :restrict_with_error + validates :pokedex_num, :name, presence: true end diff --git a/app/models/run.rb b/app/models/run.rb index a763654..472e8c7 100644 --- a/app/models/run.rb +++ b/app/models/run.rb @@ -2,6 +2,7 @@ class Run < ApplicationRecord belongs_to :game belongs_to :user has_many :checkpoints, dependent: :destroy + has_many :pokedex_entries, dependent: :destroy validates :title, presence: true diff --git a/app/models/user.rb b/app/models/user.rb index 27ff9b2..ed3f425 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -3,6 +3,7 @@ class User < ApplicationRecord # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :rememberable - has_many :runs, dependent: :restrict_with_error has_many :checkpoints, through: :runs + has_many :pokedex_entries, dependent: :destroy + has_many :runs, dependent: :restrict_with_error end diff --git a/db/migrate/20231103011455_create_pokedex_entries.rb b/db/migrate/20231103011455_create_pokedex_entries.rb new file mode 100644 index 0000000..04232b1 --- /dev/null +++ b/db/migrate/20231103011455_create_pokedex_entries.rb @@ -0,0 +1,13 @@ +class CreatePokedexEntries < ActiveRecord::Migration[7.1] + def change + create_table :pokedex_entries do |t| + t.references :user, null: false, foreign_key: true + t.references :run, null: false, foreign_key: true + t.references :pokemon, null: false, foreign_key: true + t.timestamp :recorded_at, null: false + t.timestamp :recorded_shiny_at + + t.timestamps + end + end +end diff --git a/test/fixtures/pokedex_entries.yml b/test/fixtures/pokedex_entries.yml new file mode 100644 index 0000000..602f9d9 --- /dev/null +++ b/test/fixtures/pokedex_entries.yml @@ -0,0 +1,15 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + user: one + run: one + pokemon: one + recorded_at: 2023-11-02 21:14:55 + recorded_shiny_at: 2023-11-02 21:14:55 + +two: + user: two + run: two + pokemon: two + recorded_at: 2023-11-02 21:14:55 + recorded_shiny_at: 2023-11-02 21:14:55 diff --git a/test/models/pokedex_entry_test.rb b/test/models/pokedex_entry_test.rb new file mode 100644 index 0000000..5a660d7 --- /dev/null +++ b/test/models/pokedex_entry_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class PokedexEntryTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end -- cgit v1.2.3