| 
									
										
										
										
											2022-12-30 01:54:32 -05:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "api" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe Homebrew::API::Formula do | 
					
						
							|  |  |  |   let(:cache_dir) { mktmpdir } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before do | 
					
						
							|  |  |  |     stub_const("Homebrew::API::HOMEBREW_CACHE_API", cache_dir) | 
					
						
							| 
									
										
										
										
											2023-02-19 00:54:45 +00:00
										 |  |  |     described_class.clear_cache | 
					
						
							| 
									
										
										
										
											2022-12-30 01:54:32 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def mock_curl_download(stdout:) | 
					
						
							|  |  |  |     allow(Utils::Curl).to receive(:curl_download) do |*_args, **kwargs| | 
					
						
							|  |  |  |       kwargs[:to].write stdout | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2023-02-19 00:54:45 +00:00
										 |  |  |     allow(Homebrew::API).to receive(:verify_and_parse_jws) do |json_data| | 
					
						
							|  |  |  |       [true, json_data] | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2022-12-30 01:54:32 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "::all_formulae" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     let(:formulae_json) do | 
					
						
							| 
									
										
										
										
											2022-12-30 01:54:32 -05:00
										 |  |  |       <<~EOS | 
					
						
							|  |  |  |         [{ | 
					
						
							|  |  |  |           "name": "foo", | 
					
						
							|  |  |  |           "url": "https://brew.sh/foo", | 
					
						
							|  |  |  |           "aliases": ["foo-alias1", "foo-alias2"] | 
					
						
							|  |  |  |         }, { | 
					
						
							|  |  |  |           "name": "bar", | 
					
						
							|  |  |  |           "url": "https://brew.sh/bar", | 
					
						
							|  |  |  |           "aliases": ["bar-alias"] | 
					
						
							|  |  |  |         }, { | 
					
						
							|  |  |  |           "name": "baz", | 
					
						
							|  |  |  |           "url": "https://brew.sh/baz", | 
					
						
							|  |  |  |           "aliases": [] | 
					
						
							|  |  |  |         }] | 
					
						
							|  |  |  |       EOS | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |     let(:formulae_hash) do | 
					
						
							| 
									
										
										
										
											2022-12-30 01:54:32 -05:00
										 |  |  |       { | 
					
						
							|  |  |  |         "foo" => { "url" => "https://brew.sh/foo", "aliases" => ["foo-alias1", "foo-alias2"] }, | 
					
						
							|  |  |  |         "bar" => { "url" => "https://brew.sh/bar", "aliases" => ["bar-alias"] }, | 
					
						
							|  |  |  |         "baz" => { "url" => "https://brew.sh/baz", "aliases" => [] }, | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |     let(:formulae_aliases) do | 
					
						
							| 
									
										
										
										
											2022-12-30 01:54:32 -05:00
										 |  |  |       { | 
					
						
							|  |  |  |         "foo-alias1" => "foo", | 
					
						
							|  |  |  |         "foo-alias2" => "foo", | 
					
						
							|  |  |  |         "bar-alias"  => "bar", | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2022-12-30 01:54:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it "returns the expected formula JSON list" do | 
					
						
							|  |  |  |       mock_curl_download stdout: formulae_json | 
					
						
							|  |  |  |       formulae_output = described_class.all_formulae | 
					
						
							|  |  |  |       expect(formulae_output).to eq formulae_hash | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns the expected formula alias list" do | 
					
						
							|  |  |  |       mock_curl_download stdout: formulae_json | 
					
						
							|  |  |  |       aliases_output = described_class.all_aliases | 
					
						
							|  |  |  |       expect(aliases_output).to eq formulae_aliases | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |