初探TDD开发ROR应用

测试类方法

describe 'Course Searcher' do

    describe 'keyword is blank' do
      let!(:course) { create :course, name: '测试课程名字', tags: '数学,语文,历史', released_at: Time.now  }
      let!(:course2) { create :course, name: '测试课程名字', tags: '数学,语文,历史', released_at: Time.now  }
      it { expect( Course.search(nil).size).to eq(2) }
    end

    describe 'query by course name' do
      let!(:course) { create :course, name: '测试课程名字', released_at: Time.now  }
      context 'return courses when course is exist' do
        it { expect( Course.search('测试课程名字').size).to eq(1) }
        it { expect( Course.search('测试').size).to eq(1) }
        it { expect( Course.search('名字').size).to eq(1) }
        it { expect( Course.search('课程').size).to eq(1) }
      end
      context 'no result when course is not exist' do
        it { expect( Course.search('故事').size).to_not eq(1) }
      end
    end

    describe 'query by tag name' do
      let!(:course) { create :course, tags: '数学,语文,历史', released_at: Time.now  }
      it { expect( Course.search('数学').size).to eq(1) }
      it { expect( Course.search('语文').size).to eq(1) }
      it { expect( Course.search('历史').size).to eq(1) }
      it { expect( Course.search('历史 ').size).to eq(1) }
      it { expect( Course.search(' 历史 ').size).to eq(1) }
    end

    describe 'query dot(.) etc' do
      let!(:course) { create :course, tags: '数学,语文,历史' }
      it { expect(Course.search('.').size).to eq(0)}
      it { expect(Course.search('\\').size).to eq(0)}
    end
  end