summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_dependency_resolver_api_set.rb
blob: c1e7eda191cdb07489b0f9362a4165da3881a085 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
require 'rubygems/test_case'
require 'rubygems/dependency_resolver'

class TestGemDependencyResolverAPISet < Gem::TestCase

  def setup
    super

    @DR = Gem::DependencyResolver

    @api_set = @DR::APISet.new
    @uri = 'https://rubygems.org/api/v1/dependencies'
    @fetcher = Gem::FakeFetcher.new
    Gem::RemoteFetcher.fetcher = @fetcher
  end

  def test_find_all
    b_entry = {
      :name         => 'b',
      :number       => '2',
      :platform     => 'ruby',
      :dependencies => [['a', '>= 0']],
    }

    @fetcher.data["#{@uri}?gems=b"] = Marshal.dump [b_entry]

    b_req = @DR::DependencyRequest.new dep('b', '>= 0'), nil

    expected = [
      @DR::APISpecification.new(@api_set, b_entry)
    ]

    assert_equal expected, @api_set.find_all(b_req)
  end

  def test_prefetch
    b_entry = {
      :name         => 'b',
      :number       => '2',
      :platform     => 'ruby',
      :dependencies => [['a', '>= 0']],
    }

    a_entry = {
      :name         => 'a',
      :number       => '2',
      :platform     => 'ruby',
      :dependencies => [],
    }

    @fetcher.data["#{@uri}?gems=a,b"] = Marshal.dump [a_entry, b_entry]

    a_req = @DR::DependencyRequest.new dep('a', '>= 0'), nil
    b_req = @DR::DependencyRequest.new dep('b', '>= 0'), nil

    @api_set.prefetch([b_req, a_req])

    assert_equal [a_entry], @api_set.versions('a')
    assert_equal [b_entry], @api_set.versions('b')
  end

  def test_versions_cache
    entry = {
      :name         => 'b',
      :number       => '2',
      :platform     => 'ruby',
      :dependencies => [['a', '>= 0']],
    }

    @fetcher.data["#{@uri}?gems=b"] = Marshal.dump [entry]

    assert_equal [entry], @api_set.versions('b')

    @fetcher.data["#{@uri}?gems=b"] = 'garbage'

    assert_equal [entry], @api_set.versions('b'), 'version data must be cached'
  end

end