require 'rails_helper' describe GemfileHelper do context 'parse_each_agent_gem' do VALID_STRINGS = [ ['huginn_nlp_agents(~> 0.2.1)', [ ['huginn_nlp_agents', '~> 0.2.1'] ]], ['huginn_nlp_agents(~> 0.2.1, git: http://github.com/dsander/huginn.git, branch: agents_in_gems)', [['huginn_nlp_agents', '~> 0.2.1', git: 'http://github.com/dsander/huginn.git', branch: 'agents_in_gems']] ], ['huginn_nlp_agents(~> 0.2.1, git: http://github.com/dsander/huginn.git, ref: 2342asdab) , huginn_nlp_agents(~> 0.2.1)', [ ['huginn_nlp_agents', '~> 0.2.1', git: 'http://github.com/dsander/huginn.git', ref: '2342asdab'], ['huginn_nlp_agents', '~> 0.2.1'] ]], ['huginn_nlp_agents(~> 0.2.1, path: /tmp/test)', [ ['huginn_nlp_agents', '~> 0.2.1', path: '/tmp/test'] ]], ['huginn_nlp_agents', [ ['huginn_nlp_agents'] ]], ['huginn_nlp_agents, test(0.1), test2(github: test2/huginn_test)', [ ['huginn_nlp_agents'], ['test', '0.1'], ['test2', github: 'test2/huginn_test'] ]], ['huginn_nlp_agents(git: http://github.com/dsander/huginn.git, ref: 2342asdab)', [ ['huginn_nlp_agents', git: 'http://github.com/dsander/huginn.git', ref: '2342asdab'] ]], ] it 'parses valid gem strings correctly' do VALID_STRINGS.each do |string, outcomes| GemfileHelper.parse_each_agent_gem(string) do |args| expect(args).to eq(outcomes.shift) end end end it 'does nothing when nil is passed' do expect { |b| GemfileHelper.parse_each_agent_gem(nil, &b) }.not_to yield_control end it 'does nothing when an empty string is passed' do expect { |b| GemfileHelper.parse_each_agent_gem('', &b) }.not_to yield_control end end end