@@ -118,5 +118,50 @@ class GithubSyncJobTest < ActiveSupport::TestCase
118118
119119 assert_equal true , @stack . reload . inaccessible_since?
120120 end
121+
122+ test "#perform retries when expected_head_sha is not found in the github response" do
123+ expected_sha = "abcd1234"
124+ Stack . any_instance . expects ( :github_commits ) . returns ( @github_commits )
125+ @job . expects ( :fetch_missing_commits ) . yields . returns ( [ [ ] , nil ] )
126+ @job . expects ( :commit_exists? ) . with ( expected_sha ) . returns ( false )
127+
128+ assert_enqueued_with ( job : GithubSyncJob , args : [ stack_id : @stack . id , expected_head_sha : expected_sha , retry_count : 1 ] ) do
129+ @job . perform ( stack_id : @stack . id , expected_head_sha : expected_sha )
130+ end
131+ end
132+
133+ test "#perform stops retrying after MAX_RETRY_ATTEMPTS" do
134+ expected_sha = "abcd1234"
135+ Stack . any_instance . expects ( :github_commits ) . returns ( @github_commits )
136+ @job . expects ( :fetch_missing_commits ) . yields . returns ( [ [ ] , nil ] )
137+ @job . expects ( :commit_exists? ) . with ( expected_sha ) . returns ( false )
138+
139+ assert_no_enqueued_jobs ( only : GithubSyncJob ) do
140+ @job . perform ( stack_id : @stack . id , expected_head_sha : expected_sha , retry_count : GithubSyncJob ::MAX_RETRY_ATTEMPTS )
141+ end
142+ end
143+
144+ test "#perform processes normally when expected_head_sha exists" do
145+ expected_sha = "abcd1234"
146+ Stack . any_instance . expects ( :github_commits ) . returns ( @github_commits )
147+ @job . expects ( :fetch_missing_commits ) . yields . returns ( [ [ ] , nil ] )
148+ @job . expects ( :commit_exists? ) . with ( expected_sha ) . returns ( true )
149+
150+ assert_enqueued_with ( job : CacheDeploySpecJob , args : [ @stack ] ) do
151+ @job . perform ( stack_id : @stack . id , expected_head_sha : expected_sha )
152+ end
153+ end
154+
155+ test "#perform processes normally when new commits are found" do
156+ expected_sha = "abcd1234"
157+ new_commit = stub ( sha : expected_sha )
158+ Stack . any_instance . expects ( :github_commits ) . returns ( @github_commits )
159+ @job . expects ( :fetch_missing_commits ) . yields . returns ( [ [ new_commit ] , nil ] )
160+ @job . expects ( :append_commit ) . with ( new_commit ) . returns ( stub ( revert? : false ) )
161+
162+ assert_enqueued_with ( job : CacheDeploySpecJob , args : [ @stack ] ) do
163+ @job . perform ( stack_id : @stack . id , expected_head_sha : expected_sha )
164+ end
165+ end
121166 end
122167end
0 commit comments