Skip to content

Instantly share code, notes, and snippets.

@willnet
Last active September 1, 2016 06:57
Show Gist options
  • Select an option

  • Save willnet/b59879e39ed34fd6b46c5fd4fc4299a8 to your computer and use it in GitHub Desktop.

Select an option

Save willnet/b59879e39ed34fd6b46c5fd4fc4299a8 to your computer and use it in GitHub Desktop.
autosave testcase
begin
require "bundler/inline"
rescue LoadError => e
$stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler"
raise e
end
gemfile(true) do
source "https://rubygems.org"
gem "rails", github: 'rails/rails'
gem "sqlite3"
end
require "active_record"
require "minitest/autorun"
require "logger"
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
t.string :title
end
create_table :comments, force: true do |t|
t.integer :post_id
t.string :body
end
end
class Post < ActiveRecord::Base
has_many :comments, autosave: true
end
class Comment < ActiveRecord::Base
belongs_to :post
end
class BugTest < Minitest::Test
def test_autosave_with_bracket
post = Post.create(title: 'ruby rocks')
post.comments.create(body: 'hello world')
post.comments[0].body = 'hi everyone'
post.comments.build(body: "good morning.")
post.title += "!"
post.save
assert_equal 'hi everyone', post.reload.comments.first.body
assert_equal 'good morning.', post.reload.comments.second.body
assert_equal 'ruby rocks!', post.title
end
def test_autosave_first
post = Post.create(title: 'ruby rocks')
post.comments.create(body: 'hello world')
post.comments.first.body = 'hi everyone' # that's only different
post.comments.build(body: "good morning.")
post.title += "!"
post.save
assert_equal 'hi everyone', post.reload.comments.first.body # fail!
assert_equal 'good morning.', post.reload.comments.second.body
assert_equal 'ruby rocks!', post.title
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment