@@ -624,7 +624,7 @@ def create_release(is_draft:, assets: [], name: nil)
624624 let ( :test_version ) { '1.0.0' }
625625 let ( :release_url ) { 'https://api.github.com/repos/repo-test/project-test/releases/123' }
626626 let ( :release_html_url ) { 'https://github.com/repo-test/project-test/releases/tag/1.0.0' }
627- let ( :release ) { sawyer_resource_stub ( url : release_url , html_url : release_html_url ) }
627+ let ( :release ) { sawyer_resource_stub ( url : release_url , html_url : release_html_url , tag_name : test_version ) }
628628 let ( :existing_assets ) { [ ] }
629629 let ( :uploaded_asset ) { release_asset ( name : 'test-app.zip' , url : 'https://api.github.com/repos/repo-test/project-test/releases/assets/999' ) }
630630 let ( :client ) do
@@ -640,13 +640,13 @@ def create_release(is_draft:, assets: [], name: nil)
640640
641641 before do
642642 allow ( Octokit ::Client ) . to receive ( :new ) . and_return ( client )
643- allow ( client ) . to receive ( :release_for_tag ) . with ( test_repo , test_version ) . and_return ( release )
643+ allow ( client ) . to receive ( :releases ) . with ( test_repo ) . and_return ( [ release ] )
644644 allow ( client ) . to receive ( :release_assets ) . with ( release_url ) . and_return ( existing_assets )
645645 allow ( client ) . to receive_messages ( upload_asset : uploaded_asset , delete_release_asset : true )
646646 end
647647
648648 it 'fails clearly if the release does not exist' do
649- allow ( client ) . to receive ( :release_for_tag ) . with ( test_repo , test_version ) . and_raise ( Octokit :: NotFound )
649+ allow ( client ) . to receive ( :releases ) . with ( test_repo ) . and_return ( [ ] )
650650
651651 with_tmp_file ( named : 'test-app.zip' ) do |file_path |
652652 expect do
@@ -656,7 +656,7 @@ def create_release(is_draft:, assets: [], name: nil)
656656 end
657657
658658 it 'fails clearly if an asset file does not exist' do
659- expect ( client ) . not_to receive ( :release_for_tag )
659+ expect ( client ) . not_to receive ( :releases )
660660 expect ( client ) . not_to receive ( :release_assets )
661661 expect ( client ) . not_to receive ( :upload_asset )
662662
@@ -666,7 +666,7 @@ def create_release(is_draft:, assets: [], name: nil)
666666 end
667667
668668 it 'fails clearly if an asset is not a file path' do
669- expect ( client ) . not_to receive ( :release_for_tag )
669+ expect ( client ) . not_to receive ( :releases )
670670 expect ( client ) . not_to receive ( :release_assets )
671671 expect ( client ) . not_to receive ( :upload_asset )
672672
@@ -687,7 +687,7 @@ def create_release(is_draft:, assets: [], name: nil)
687687 File . write ( first_file_path , 'ios' )
688688 File . write ( second_file_path , 'tvos' )
689689
690- expect ( client ) . not_to receive ( :release_for_tag )
690+ expect ( client ) . not_to receive ( :releases )
691691 expect ( client ) . not_to receive ( :release_assets )
692692 expect ( client ) . not_to receive ( :delete_release_asset )
693693 expect ( client ) . not_to receive ( :upload_asset )
@@ -698,6 +698,22 @@ def create_release(is_draft:, assets: [], name: nil)
698698 end
699699 end
700700
701+ it 'uploads assets to a draft release' do
702+ draft_release = sawyer_resource_stub ( url : release_url , html_url : release_html_url , tag_name : test_version , draft : true )
703+ other_release = sawyer_resource_stub ( url : 'https://api.github.com/repos/repo-test/project-test/releases/456' , html_url : 'https://github.com/repo-test/project-test/releases/tag/0.9.0' , tag_name : '0.9.0' )
704+
705+ allow ( client ) . to receive ( :releases ) . with ( test_repo ) . and_return ( [ other_release , draft_release ] )
706+ allow ( client ) . to receive ( :release_assets ) . with ( release_url ) . and_return ( [ ] )
707+
708+ with_tmp_file ( named : 'test-app.zip' ) do |file_path |
709+ expect ( client ) . to receive ( :upload_asset ) . with ( release_url , file_path , { content_type : 'application/octet-stream' } )
710+
711+ result = upload_release_assets ( assets : [ file_path ] )
712+
713+ expect ( result ) . to eq ( release_html_url )
714+ end
715+ end
716+
701717 it 'uploads one asset to the existing release' do
702718 with_tmp_file ( named : 'test-app.zip' ) do |file_path |
703719 expect ( client ) . to receive ( :upload_asset ) . with ( release_url , file_path , { content_type : 'application/octet-stream' } )
0 commit comments