let!(:chris) { Person.create(name: 'chris', age: describe '.name_like' do subject { Person.name_like('ali').map(&:name) it { should =~ %w[alice alissa] } end describe '.younger_than' do subject { Person.younger_than(24).map(&:name) it { should =~ %w[bob] } end d
snip describe '.has_at_least_one_hobby(hobbies)' do let(:hobbies) { %w[programming BBQ travel] } subject(:people) do Person.has_at_least_one_hobby(hobbies) end end d ͏ʔΜɺ໊લ͕͗͢ΔɺΑ͏ͳ...
snip describe '.interest_in_any(hobbies)' do let(:hobbies) { %w[programming BBQ travel subject(:people) do Person.interest_in_any(hobbies) end end end end Αͦ͞͏!
<< Hobby.where(name: 'programm chris.hobbies << Hobby.where(name: 'baseball end subject(:people) { Person.interest_in_any(hobb it { should =~ [alice, bob] } end
do hobbies.each do |hobby_name| Hobby.create!(name: hobby_name) end Hobby.create!(name: 'baseball') alice.hobbies << Hobby.where(name: 'travel').first bob.hobbies << Hobby.where(name: 'programming').first chris.hobbies << Hobby.where(name: 'baseball').first end subject(:people) { Person.interest_in_any(hobbies) } it { should =~ [alice, bob] } end ͜ͷςετ͕௨ͬͨΒҰ൪؆୯ͳਖ਼ৗܥͰ͖ͨ
4 hobbies: programming, travel, BBQ and b let(:query) { PeopleQuery.new(name_like: 'ali', hobbies: 'baseball travel') } before do alice.hobbies << Hobby.where(name: 'BBQ') alissa.hobbies << Hobby.where(name: 'baseball') end subject { query.people } it { should == [alissa] } end 3ͭͷ݅ΛΈ߹Θͤɺ ͜Μͳ;͏ʹಈ͍ͯʮ΄͍͠ʯ