Sha256: 3a6e1cd1496de20f547edd91d8ca194fa0aad734c9601c80476f257faeffa040

Contents?: true

Size: 1.73 KB

Versions: 2

Compression:

Stored size: 1.73 KB

Contents

require 'spec_helper'

require 'method_log/api'
require 'method_log/source_file'
require 'method_log/repository'
require 'method_log/commit'
require 'method_log/method_definition'
require 'method_log/method_commit'

describe MethodLog::API do
  let(:repository_path) { File.expand_path('../repository.git', __FILE__) }

  before do
    FileUtils.mkdir_p(repository_path)
    Rugged::Repository.init_at(repository_path, :bare)
  end

  after do
    FileUtils.rm_rf(repository_path)
  end

  it 'finds class instance method in repository with two commits with single source file' do
    foo_1 = MethodLog::SourceFile.new(path: 'foo.rb', source: %{
class Foo
  def bar
    # implementation
  end
end
    }.strip)

    foo_2 = MethodLog::SourceFile.new(path: 'foo.rb', source: %{
# move method definition down one line
class Foo
  def bar
    # implementation
  end
end
    }.strip)

    repository = MethodLog::Repository.new(path: repository_path)

    commit_1 = repository.build_commit
    commit_1.add(foo_1)
    repository.add(commit_1)

    commit_2 = repository.build_commit
    commit_2.add(foo_2)
    repository.add(commit_2)

    repository = MethodLog::Repository.new(path: repository_path)
    api = MethodLog::API.new(repository: repository)
    method_commits = api.history('Foo#bar')

    method_definition_1 = MethodLog::MethodDefinition.new(source_file: foo_1, lines: 1..3)
    method_definition_2 = MethodLog::MethodDefinition.new(source_file: foo_2, lines: 2..4)

    method_commit_1 = MethodLog::MethodCommit.new(commit: commit_1, method_definition: method_definition_1)
    method_commit_2 = MethodLog::MethodCommit.new(commit: commit_2, method_definition: method_definition_2)

    expect(method_commits).to eq([method_commit_2, method_commit_1])
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
method_log-0.0.2 spec/api_spec.rb
method_log-0.0.1 spec/api_spec.rb