# encoding: utf-8 require "spec_helper" describe Pose::Helpers do describe '::get_words_to_add' do let(:one) { PoseWord.new(text: 'one') } let(:two) { PoseWord.new(text: 'two') } context 'having a new word to be added' do it 'returns an array with strings that need to be added' do Pose::Helpers.get_words_to_add([one, two], %w{one three}).should eql(['three']) end end context 'nothing to add' do it 'returns an empty array' do Pose::Helpers.get_words_to_add([one, two], %w{one two}).should be_empty end end end describe '::get_words_to_remove' do let(:one) { PoseWord.new(text: 'one') } let(:two) { PoseWord.new(text: 'two') } it "returns an array of word objects that need to be removed" do Pose::Helpers.get_words_to_remove([one, two], %w{one three}).should eql([two]) end it 'returns an empty array if there are no words to be removed' do Pose::Helpers.get_words_to_remove([one, two], %w{one two}).should be_empty end end describe 'make_array' do it 'converts a single value into an array' do Pose::Helpers.make_array(1).should == [1] end it 'leaves arrays as arrays' do Pose::Helpers.make_array([1]).should == [1] end end describe 'merge_search_result_word_matches' do context 'given a new class name' do before :each do @result = {} end it 'sets the given ids as the ids for this class name' do Pose::Helpers.merge_search_result_word_matches @result, 'class1', [1, 2] @result.should == { 'class1' => [1, 2] } end end context 'given a class name with already existing ids from another word' do before :each do @result = { 'class1' => [1, 2] } end it 'only keeps the ids that are included in both sets' do Pose::Helpers.merge_search_result_word_matches @result, 'class1', [1, 3] @result.should == { 'class1' => [1] } end end end describe 'query_terms' do it 'returns all individual words resulting from the given query' do Pose::Helpers.query_terms('foo bar').should == ['foo', 'bar'] end it 'converts the individual words into their root form' do Pose::Helpers.query_terms('bars').should == ['bar'] end it 'splits complex words into separate terms' do Pose::Helpers.query_terms('one-two').should == ['one', 'two'] end it 'removes duplicates' do Pose::Helpers.query_terms('foo-bar foo').should == ['foo', 'bar'] end end describe 'root_word' do it 'converts words into singular' do Pose::Helpers.root_word('bars').should eql(['bar']) end it 'removes special characters' do Pose::Helpers.root_word('(bar').should == ['bar'] Pose::Helpers.root_word('bar)').should == ['bar'] Pose::Helpers.root_word('(bar)').should == ['bar'] Pose::Helpers.root_word('>foo').should == ['foo'] Pose::Helpers.root_word('