Created
July 20, 2020 20:43
-
-
Save bbonamin/a32217152e1a0e2484d28231cd1630a2 to your computer and use it in GitHub Desktop.
Revisions
-
bbonamin created this gist
Jul 20, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,77 @@ require 'bundler/inline' gemfile(true) do source 'https://rubygems.org' gem 'rails', '6.0.3' gem 'pg' gem 'pry' end require 'active_record' require 'minitest/autorun' require 'logger' ActiveRecord::Base.establish_connection(adapter: 'postgresql', database: 'test_test_test') ActiveRecord::Base.logger = Logger.new(STDOUT) ActiveRecord::Schema.define do create_table :sequences, force: true do |t| t.string :name # ... end create_table :frames, force: true do |t| t.references :sequence, null: false t.string :url end end class Sequence < ActiveRecord::Base has_many :frames, dependent: :destroy end class Frame < ActiveRecord::Base belongs_to :sequence validates_presence_of :url end class SequenceIsCreatedWithFrames < ActiveSupport::TestCase def setup @sequence = Sequence.new(name: 'Foo') @frame = @sequence.frames.build(url: 'http://example.com') @sequence.save! end def test_models_are_persisted assert_equal true, @sequence.persisted? assert_equal true, @frame.persisted? end def test_frame_belongs_to_sequence assert_includes @sequence.frames, @frame end end class SequenceWithErrorsInFramesIsNotSaved < ActiveSupport::TestCase def setup @sequence = Sequence.new(name: 'Foo') @frame1 = @sequence.frames.build(url: 'http://example.com') @frame2 = @sequence.frames.build @sequence.save end def test_models_are_persisted assert_equal false, @sequence.persisted? end def test_frames_have_errors assert_includes @sequence.errors.full_messages, 'Frames is invalid' # @sequence.frames.map(&:errors) # => [#<ActiveModel::Errors:0x00007f90aaa06dc8 @base=#<Frame:0x00007f908aa89680 id: nil, sequence_id: nil, url: "http://example.com">, @details={}, @messages={}>, #<ActiveModel::Errors:0x00007f90aaa05ae0 @base=#<Frame:0x00007f90aaa17768 id: nil, sequence_id: nil, url: nil>, @details={:url=>[{:error=>:blank}]}, @messages={:url=>["can't be blank"]}>] end end