Sha256: ee7e654cfb4f3413101aa3872939622282f042a7261516f7aa2365f11cad62d3

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

require './test/test_helper'

require 'vcr'

test_dir = File.join(FileUtils.pwd, 'test/fixtures')

VCR.configure do |c|
  c.cassette_library_dir = File.join(test_dir, 'vcr_cassettes')
  c.hook_into :fakeweb
end

require 'approvals'
Approvals.configure do |c|
  c.approvals_path = File.join(test_dir, 'approvals') + '/'
end

class ApiTest < MiniTest::Unit::TestCase

  def project_dir
    '/tmp'
  end

  def home
    'test/fixtures/home'
  end

  def teardown
    FileUtils.rm_rf File.join(project_dir, 'ruby')
    FileUtils.rm_rf File.join(project_dir, 'javascript')
  end

  def test_fetch_assignment_from_api
    assignment_dir = File.join(project_dir, 'ruby', 'bob')
    readme_path = File.join(assignment_dir, 'README.md')
    tests_path = File.join(assignment_dir, 'test.rb')

    Exercism.stub(:home, home) do
      VCR.use_cassette('alice-gets-bob') do
        Exercism::Api.fetch_for(Exercism.user, project_dir)

        Approvals.verify(File.read(readme_path), name: 'alice_gets_bob_readme')
        Approvals.verify(File.read(tests_path), name: 'alice_gets_bob_tests')
      end
    end
  end

  def test_send_assignment_to_api
    assignment_dir = File.join(project_dir, 'ruby', 'bob')
    FileUtils.mkdir_p(assignment_dir)
    submission = File.join(assignment_dir, 'bob.rb')
    File.open(submission, 'w') do |f|
      f.write "puts 'hello world'"
    end

    Exercism.stub(:home, home) do
      VCR.use_cassette('alice-submits-bob') do
        response = Exercism::Api.submit(submission, {for: Exercism.user})
        assert_equal 201, response.status
      end
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
exercism-0.0.5 test/exercism/api_test.rb