aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/cask/verify_spec.rb
blob: 5d95fb3a29ba1896e7698b705d9941842975148d (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
describe Hbc::Verify, :cask do
  let(:cask) { double("cask") }

  let(:verification_classes) {
    [
      applicable_verification_class,
      inapplicable_verification_class,
    ]
  }

  let(:applicable_verification_class) {
    double("applicable_verification_class", me?: true)
  }

  let(:inapplicable_verification_class) {
    double("inapplicable_verification_class", me?: false)
  }

  before do
    allow(described_class).to receive(:verifications)
      .and_return(verification_classes)
  end

  describe ".for_cask" do
    subject { described_class.for_cask(cask) }

    it "checks applicability of each verification" do
      verification_classes.each do |verify_class|
        expect(verify_class).to receive(:me?).with(cask)
      end
      subject
    end

    it "includes applicable verifications" do
      expect(subject).to include(applicable_verification_class)
    end

    it "excludes inapplicable verifications" do
      expect(subject).not_to include(inapplicable_verification_class)
    end
  end

  describe ".all" do
    let(:downloaded_path) { double("downloaded_path") }
    let(:applicable_verification) { double("applicable_verification") }
    let(:inapplicable_verification) { double("inapplicable_verification") }

    subject { described_class.all(cask, downloaded_path) }

    before do
      allow(applicable_verification_class).to receive(:new)
        .and_return(applicable_verification)
      allow(inapplicable_verification_class).to receive(:new)
        .and_return(inapplicable_verification)
    end

    it "runs only applicable verifications" do
      expect(applicable_verification).to receive(:verify)
      expect(inapplicable_verification).not_to receive(:verify)
      subject
    end
  end
end