Wrapping ActiveRecord test causes it to fail (no records found)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách chạy bản tái hiện Ruby được cung cấp với ActiveRecord 4.2.7.1, mysql2, DatabaseCleaner và RSpec, sau đó so sánh các ví dụ text_search và like_search trong từng chế độ dọn dẹp. Hoàn thành khi các ví dụ text_search không còn thất bại với lỗi không tìm thấy bản ghi và hành vi dọn dẹp hiện có vẫn được bao phủ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I created a script to demonstrate this behavior:
#!/usr/bin/env ruby
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 "activerecord", "4.2.7.1"
gem "mysql2", "0.4.5"
gem "database_cleaner", "1.5.3"
gem "rspec", "3.5.0"
end
require "active_record"
require "rspec"
require "rspec/autorun"
require "database_cleaner"
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
username: "root",
password: "password",
host: "localhost",
database: "ft_test"
)
ActiveRecord::Base.connection.recreate_database "ft_test"
ActiveRecord::Schema.define do
create_table :widgets, force: true do |t|
t.string "description", limit: 255
end
add_index "widgets", ["description"], name: "widgets_description_fts", type: :fulltext
end
class Widget < ActiveRecord::Base
def self.text_search(query)
where("MATCH(description) AGAINST(:query)", query: query)
end
def self.like_search(query)
where("description like ?", "%#{query}%")
end
end
RSpec.configure do |config|
config.default_formatter = "doc"
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
end
RSpec.describe Widget, type: :model do
describe ".text_search" do
after(:all) { Widget.delete_all }
it "fails when cleaning with start/clean" do
DatabaseCleaner.start
text_search_test
DatabaseCleaner.clean
end
it "fails when cleaning with block" do
DatabaseCleaner.cleaning do
text_search_test
end
end
it "succeeds with manual cleaning (fails at random, unless it is first or the only test run)" do
Widget.delete_all
text_search_test
Widget.delete_all
end
end
describe ".like_search" do
it "succeeds when cleaning with start/clean" do
DatabaseCleaner.start
like_search_test
DatabaseCleaner.clean
end
it "succeeds when cleaning with block" do
DatabaseCleaner.cleaning do
like_search_test
end
end
it "succeeds with manual cleaning" do
Widget.delete_all
like_search_test
Widget.delete_all
end
end
private
def create_widgets
Widget.create()
match = Widget.create(description: "The quick brown fox jumps over the lazy dog")
Widget.create()
match
end
def text_search_test
match = create_widgets
expect(Widget.text_search("fox")).to contain_exactly match
end
def like_search_test
match = create_widgets
expect(Widget.like_search("fox")).to contain_exactly match
end
end
- Ngôn ngữ chính
- Ruby
- Star
- 76
- Fork
- 76
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của DatabaseCleaner/database_cleaner-active_record
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 30/100
DatabaseCleaner/database_cleaner-active_record#128 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
DatabaseCleaner/database_cleaner-active_record#127 · 3 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
-
Parallelized truncates Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Tất cả issue của DatabaseCleaner/database_cleaner-active_record
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
hanami/hanami-cli#449 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
resque/resque-scheduler#826 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100