shipit-engine 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/shipit/api/cacheable.rb +13 -0
  3. data/app/controllers/concerns/shipit/api/paginable.rb +37 -0
  4. data/app/controllers/concerns/shipit/api/rendering.rb +25 -0
  5. data/app/controllers/concerns/{api/paginable.rb → shipit/pagination.rb} +5 -13
  6. data/app/controllers/shipit/api/base_controller.rb +68 -0
  7. data/app/controllers/shipit/api/deploys_controller.rb +17 -0
  8. data/app/controllers/shipit/api/hooks_controller.rb +53 -0
  9. data/app/controllers/shipit/api/locks_controller.rb +32 -0
  10. data/app/controllers/shipit/api/outputs_controller.rb +17 -0
  11. data/app/controllers/shipit/api/stacks_controller.rb +21 -0
  12. data/app/controllers/shipit/api/tasks_controller.rb +20 -0
  13. data/app/controllers/shipit/commit_checks_controller.rb +26 -0
  14. data/app/controllers/shipit/deploys_controller.rb +47 -0
  15. data/app/controllers/shipit/github_authentication_controller.rb +27 -0
  16. data/app/controllers/shipit/rollbacks_controller.rb +26 -0
  17. data/app/controllers/shipit/shipit_controller.rb +62 -0
  18. data/app/controllers/shipit/stacks_controller.rb +81 -0
  19. data/app/controllers/shipit/status_controller.rb +7 -0
  20. data/app/controllers/shipit/tasks_controller.rb +48 -0
  21. data/app/controllers/shipit/webhooks_controller.rb +101 -0
  22. data/app/helpers/shipit/chunks_helper.rb +8 -0
  23. data/app/helpers/shipit/deploys_helper.rb +28 -0
  24. data/app/helpers/shipit/github_url_helper.rb +48 -0
  25. data/app/helpers/shipit/shipit_helper.rb +64 -0
  26. data/app/helpers/shipit/stacks_helper.rb +78 -0
  27. data/app/helpers/shipit/tasks_helper.rb +11 -0
  28. data/app/jobs/shipit/background_job.rb +24 -0
  29. data/app/jobs/shipit/background_job/unique.rb +28 -0
  30. data/app/jobs/shipit/cache_deploy_spec_job.rb +12 -0
  31. data/app/jobs/shipit/chunk_rollup_job.rb +21 -0
  32. data/app/jobs/shipit/clear_git_cache_job.rb +9 -0
  33. data/app/jobs/shipit/deliver_hook_job.rb +9 -0
  34. data/app/jobs/shipit/destroy_stack_job.rb +9 -0
  35. data/app/jobs/shipit/emit_event_job.rb +10 -0
  36. data/app/jobs/shipit/fetch_commit_stats_job.rb +9 -0
  37. data/app/jobs/shipit/fetch_deployed_revision_job.rb +23 -0
  38. data/app/jobs/shipit/git_mirror_update_job.rb +12 -0
  39. data/app/jobs/shipit/github_sync_job.rb +55 -0
  40. data/app/jobs/shipit/perform_commit_checks_job.rb +7 -0
  41. data/app/jobs/shipit/perform_task_job.rb +57 -0
  42. data/app/jobs/shipit/refresh_github_user_job.rb +9 -0
  43. data/app/jobs/shipit/refresh_statuses_job.rb +14 -0
  44. data/app/jobs/shipit/setup_github_hook_job.rb +11 -0
  45. data/app/models/shipit/anonymous_user.rb +43 -0
  46. data/app/models/shipit/api_client.rb +44 -0
  47. data/app/models/shipit/commit.rb +209 -0
  48. data/app/models/shipit/commit_checks.rb +90 -0
  49. data/app/models/shipit/delivery.rb +47 -0
  50. data/app/models/shipit/deploy.rb +153 -0
  51. data/app/models/shipit/deploy_spec.rb +150 -0
  52. data/app/models/shipit/deploy_spec/bundler_discovery.rb +61 -0
  53. data/app/models/shipit/deploy_spec/capistrano_discovery.rb +29 -0
  54. data/app/models/shipit/deploy_spec/file_system.rb +64 -0
  55. data/app/models/shipit/deploy_spec/pypi_discovery.rb +34 -0
  56. data/app/models/shipit/deploy_spec/rubygems_discovery.rb +34 -0
  57. data/app/models/shipit/github_hook.rb +148 -0
  58. data/app/models/shipit/hook.rb +86 -0
  59. data/app/models/shipit/membership.rb +8 -0
  60. data/app/models/shipit/missing_status.rb +21 -0
  61. data/app/models/shipit/output_chunk.rb +11 -0
  62. data/app/models/shipit/rollback.rb +31 -0
  63. data/app/models/shipit/stack.rb +308 -0
  64. data/app/models/shipit/status.rb +44 -0
  65. data/app/models/shipit/status_group.rb +35 -0
  66. data/app/models/shipit/task.rb +201 -0
  67. data/app/models/shipit/task_definition.rb +38 -0
  68. data/app/models/shipit/team.rb +69 -0
  69. data/app/models/shipit/unknown_status.rb +43 -0
  70. data/app/models/shipit/user.rb +83 -0
  71. data/app/models/shipit/variable_definition.rb +21 -0
  72. data/app/serializers/concerns/shipit/conditional_attributes.rb +22 -0
  73. data/app/serializers/shipit/anonymous_user_serializer.rb +4 -0
  74. data/app/serializers/shipit/commit_serializer.rb +8 -0
  75. data/app/serializers/shipit/deploy_serializer.rb +15 -0
  76. data/app/serializers/shipit/hook_serializer.rb +12 -0
  77. data/app/serializers/shipit/rollback_serializer.rb +7 -0
  78. data/app/serializers/shipit/short_commit_serializer.rb +9 -0
  79. data/app/serializers/shipit/stack_serializer.rb +33 -0
  80. data/app/serializers/shipit/tail_task_serializer.rb +39 -0
  81. data/app/serializers/shipit/task_serializer.rb +30 -0
  82. data/app/serializers/shipit/user_serializer.rb +5 -0
  83. data/app/views/{commits → shipit/commits}/_commit.html.erb +1 -1
  84. data/app/views/{commits → shipit/commits}/_commit_author.html.erb +0 -0
  85. data/app/views/{deploys → shipit/deploys}/_checklist.html.erb +0 -0
  86. data/app/views/{deploys → shipit/deploys}/_checks.html.erb +0 -0
  87. data/app/views/{deploys → shipit/deploys}/_concurrent_deploy_warning.html.erb +0 -0
  88. data/app/views/{deploys → shipit/deploys}/_deploy.html.erb +1 -1
  89. data/app/views/{deploys → shipit/deploys}/_monitoring.html.erb +0 -0
  90. data/app/views/{deploys → shipit/deploys}/_summary.html.erb +0 -0
  91. data/app/views/{deploys → shipit/deploys}/new.html.erb +3 -3
  92. data/app/views/{deploys → shipit/deploys}/rollback.html.erb +2 -2
  93. data/app/views/{deploys → shipit/deploys}/show.html.erb +1 -1
  94. data/app/views/{github_authentication → shipit/github_authentication}/failed.html.erb +0 -0
  95. data/app/views/{stacks → shipit/stacks}/_header.html.erb +0 -0
  96. data/app/views/{stacks → shipit/stacks}/index.html.erb +0 -0
  97. data/app/views/{stacks → shipit/stacks}/new.html.erb +0 -0
  98. data/app/views/{stacks → shipit/stacks}/settings.html.erb +1 -1
  99. data/app/views/{stacks → shipit/stacks}/show.html.erb +2 -2
  100. data/app/views/{statuses → shipit/statuses}/_group.html.erb +1 -1
  101. data/app/views/{statuses → shipit/statuses}/_status.html.erb +0 -0
  102. data/app/views/{tasks → shipit/tasks}/_task.html.erb +1 -1
  103. data/app/views/{tasks → shipit/tasks}/_task_output.html.erb +1 -1
  104. data/app/views/{tasks → shipit/tasks}/index.html.erb +1 -1
  105. data/app/views/{tasks → shipit/tasks}/new.html.erb +1 -1
  106. data/app/views/{tasks → shipit/tasks}/show.html.erb +1 -1
  107. data/db/migrate/20160104151742_increase_tasks_type_size_back.rb +5 -0
  108. data/db/migrate/20160104151833_convert_sti_columns.rb +10 -0
  109. data/lib/shipit.rb +11 -10
  110. data/lib/shipit/command.rb +171 -0
  111. data/lib/shipit/commands.rb +25 -0
  112. data/lib/shipit/deploy_commands.rb +21 -0
  113. data/lib/shipit/engine.rb +3 -0
  114. data/lib/shipit/rollback_commands.rb +7 -0
  115. data/lib/shipit/stack_commands.rb +60 -0
  116. data/lib/shipit/task_commands.rb +68 -0
  117. data/lib/shipit/version.rb +1 -1
  118. data/lib/tasks/cron.rake +3 -3
  119. data/test/controllers/api/base_controller_test.rb +18 -14
  120. data/test/controllers/api/deploys_controller_test.rb +56 -52
  121. data/test/controllers/api/hooks_controller_test.rb +62 -58
  122. data/test/controllers/api/locks_controller_test.rb +38 -34
  123. data/test/controllers/api/outputs_controller_test.rb +15 -11
  124. data/test/controllers/api/stacks_controller_test.rb +56 -52
  125. data/test/controllers/api/tasks_controller_test.rb +30 -26
  126. data/test/controllers/commit_checks_controller_test.rb +29 -27
  127. data/test/controllers/deploys_controller_test.rb +68 -66
  128. data/test/controllers/github_authentication_controller_test.rb +9 -7
  129. data/test/controllers/rollbacks_controller_test.rb +43 -41
  130. data/test/controllers/stacks_controller_test.rb +131 -128
  131. data/test/controllers/status_controller_test.rb +8 -6
  132. data/test/controllers/tasks_controller_test.rb +70 -68
  133. data/test/controllers/webhooks_controller_test.rb +127 -125
  134. data/test/dummy/db/development.sqlite3 +0 -0
  135. data/test/dummy/db/schema.rb +2 -2
  136. data/test/dummy/db/seeds.rb +133 -131
  137. data/test/dummy/db/test.sqlite3 +0 -0
  138. data/test/fixtures/{api_clients.yml → shipit/api_clients.yml} +0 -0
  139. data/test/fixtures/{commits.yml → shipit/commits.yml} +0 -0
  140. data/test/fixtures/{deliveries.yml → shipit/deliveries.yml} +0 -0
  141. data/test/fixtures/{github_hooks.yml → shipit/github_hooks.yml} +4 -4
  142. data/test/fixtures/{hooks.yml → shipit/hooks.yml} +0 -0
  143. data/test/fixtures/{memberships.yml → shipit/memberships.yml} +0 -0
  144. data/test/fixtures/{output_chunks.yml → shipit/output_chunks.yml} +0 -0
  145. data/test/fixtures/{stacks.yml → shipit/stacks.yml} +0 -0
  146. data/test/fixtures/{statuses.yml → shipit/statuses.yml} +0 -0
  147. data/test/fixtures/{tasks.yml → shipit/tasks.yml} +8 -8
  148. data/test/fixtures/{teams.yml → shipit/teams.yml} +0 -0
  149. data/test/fixtures/{users.yml → shipit/users.yml} +0 -0
  150. data/test/helpers/api_helper.rb +1 -1
  151. data/test/helpers/fixture_aliases_helper.rb +4 -4
  152. data/test/jobs/cache_deploy_spec_job_test.rb +15 -13
  153. data/test/jobs/chunk_rollup_job_test.rb +30 -28
  154. data/test/jobs/deliver_hook_job_test.rb +11 -9
  155. data/test/jobs/destroy_stack_job_test.rb +11 -9
  156. data/test/jobs/emit_event_job_test.rb +10 -8
  157. data/test/jobs/fetch_commit_stats_job_test.rb +10 -8
  158. data/test/jobs/fetch_deployed_revision_job_test.rb +24 -22
  159. data/test/jobs/github_sync_job_test.rb +51 -49
  160. data/test/jobs/perform_task_job_test.rb +78 -76
  161. data/test/jobs/refresh_github_user_job_test.rb +10 -8
  162. data/test/jobs/refresh_status_job_test.rb +14 -12
  163. data/test/jobs/unique_job_test.rb +18 -15
  164. data/test/models/api_client_test.rb +20 -18
  165. data/test/models/commit_checks_test.rb +63 -61
  166. data/test/models/commits_test.rb +317 -314
  167. data/test/models/delivery_test.rb +29 -27
  168. data/test/models/deploys_test.rb +289 -287
  169. data/test/models/github_hook_test.rb +45 -43
  170. data/test/models/hook_test.rb +44 -42
  171. data/test/models/membership_test.rb +9 -7
  172. data/test/models/missing_status_test.rb +16 -14
  173. data/test/models/output_chunk_test.rb +14 -12
  174. data/test/models/rollbacks_test.rb +14 -12
  175. data/test/models/stacks_test.rb +272 -270
  176. data/test/models/status_group_test.rb +18 -16
  177. data/test/models/status_test.rb +42 -40
  178. data/test/models/task_definitions_test.rb +27 -25
  179. data/test/models/team_test.rb +39 -37
  180. data/test/models/users_test.rb +61 -59
  181. data/test/unit/command_test.rb +43 -41
  182. data/test/unit/commands_test.rb +8 -6
  183. data/test/unit/csv_serializer_test.rb +28 -26
  184. data/test/unit/deploy_commands_test.rb +179 -176
  185. data/test/unit/deploy_spec_test.rb +237 -235
  186. data/test/unit/github_url_helper_test.rb +19 -17
  187. data/test/unit/shipit_test.rb +44 -42
  188. metadata +139 -137
  189. data/app/controllers/api/base_controller.rb +0 -66
  190. data/app/controllers/api/deploys_controller.rb +0 -15
  191. data/app/controllers/api/hooks_controller.rb +0 -51
  192. data/app/controllers/api/locks_controller.rb +0 -30
  193. data/app/controllers/api/outputs_controller.rb +0 -15
  194. data/app/controllers/api/stacks_controller.rb +0 -19
  195. data/app/controllers/api/tasks_controller.rb +0 -18
  196. data/app/controllers/commit_checks_controller.rb +0 -24
  197. data/app/controllers/concerns/api/cacheable.rb +0 -11
  198. data/app/controllers/concerns/api/rendering.rb +0 -23
  199. data/app/controllers/concerns/pagination.rb +0 -25
  200. data/app/controllers/deploys_controller.rb +0 -45
  201. data/app/controllers/github_authentication_controller.rb +0 -25
  202. data/app/controllers/rollbacks_controller.rb +0 -24
  203. data/app/controllers/shipit_controller.rb +0 -54
  204. data/app/controllers/stacks_controller.rb +0 -79
  205. data/app/controllers/status_controller.rb +0 -5
  206. data/app/controllers/tasks_controller.rb +0 -46
  207. data/app/controllers/webhooks_controller.rb +0 -99
  208. data/app/helpers/chunks_helper.rb +0 -6
  209. data/app/helpers/deploys_helper.rb +0 -26
  210. data/app/helpers/github_url_helper.rb +0 -46
  211. data/app/helpers/shipit_helper.rb +0 -62
  212. data/app/helpers/stacks_helper.rb +0 -76
  213. data/app/helpers/tasks_helper.rb +0 -9
  214. data/app/jobs/background_job.rb +0 -22
  215. data/app/jobs/background_job/unique.rb +0 -26
  216. data/app/jobs/cache_deploy_spec_job.rb +0 -10
  217. data/app/jobs/chunk_rollup_job.rb +0 -19
  218. data/app/jobs/clear_git_cache_job.rb +0 -7
  219. data/app/jobs/deliver_hook_job.rb +0 -7
  220. data/app/jobs/destroy_stack_job.rb +0 -7
  221. data/app/jobs/emit_event_job.rb +0 -8
  222. data/app/jobs/fetch_commit_stats_job.rb +0 -7
  223. data/app/jobs/fetch_deployed_revision_job.rb +0 -21
  224. data/app/jobs/git_mirror_update_job.rb +0 -10
  225. data/app/jobs/github_sync_job.rb +0 -53
  226. data/app/jobs/perform_commit_checks_job.rb +0 -5
  227. data/app/jobs/perform_task_job.rb +0 -55
  228. data/app/jobs/refresh_github_user_job.rb +0 -7
  229. data/app/jobs/refresh_statuses_job.rb +0 -12
  230. data/app/jobs/setup_github_hook_job.rb +0 -9
  231. data/app/models/anonymous_user.rb +0 -41
  232. data/app/models/api_client.rb +0 -42
  233. data/app/models/commit.rb +0 -207
  234. data/app/models/commit_checks.rb +0 -88
  235. data/app/models/delivery.rb +0 -45
  236. data/app/models/deploy.rb +0 -151
  237. data/app/models/deploy_spec.rb +0 -148
  238. data/app/models/deploy_spec/bundler_discovery.rb +0 -59
  239. data/app/models/deploy_spec/capistrano_discovery.rb +0 -27
  240. data/app/models/deploy_spec/file_system.rb +0 -62
  241. data/app/models/deploy_spec/pypi_discovery.rb +0 -32
  242. data/app/models/deploy_spec/rubygems_discovery.rb +0 -32
  243. data/app/models/github_hook.rb +0 -144
  244. data/app/models/hook.rb +0 -84
  245. data/app/models/membership.rb +0 -6
  246. data/app/models/missing_status.rb +0 -18
  247. data/app/models/output_chunk.rb +0 -9
  248. data/app/models/rollback.rb +0 -29
  249. data/app/models/stack.rb +0 -306
  250. data/app/models/status.rb +0 -42
  251. data/app/models/status_group.rb +0 -33
  252. data/app/models/task.rb +0 -197
  253. data/app/models/task_definition.rb +0 -36
  254. data/app/models/team.rb +0 -67
  255. data/app/models/unknown_status.rb +0 -41
  256. data/app/models/user.rb +0 -81
  257. data/app/models/variable_definition.rb +0 -19
  258. data/app/serializers/anonymous_user_serializer.rb +0 -2
  259. data/app/serializers/commit_serializer.rb +0 -6
  260. data/app/serializers/concerns/conditional_attributes.rb +0 -20
  261. data/app/serializers/deploy_serializer.rb +0 -13
  262. data/app/serializers/hook_serializer.rb +0 -10
  263. data/app/serializers/rollback_serializer.rb +0 -5
  264. data/app/serializers/short_commit_serializer.rb +0 -7
  265. data/app/serializers/stack_serializer.rb +0 -31
  266. data/app/serializers/tail_task_serializer.rb +0 -37
  267. data/app/serializers/task_serializer.rb +0 -28
  268. data/app/serializers/user_serializer.rb +0 -3
  269. data/lib/command.rb +0 -169
  270. data/lib/commands.rb +0 -23
  271. data/lib/deploy_commands.rb +0 -19
  272. data/lib/rollback_commands.rb +0 -5
  273. data/lib/stack_commands.rb +0 -58
  274. data/lib/task_commands.rb +0 -66
@@ -1,9 +1,9 @@
1
1
  module FixtureAliasesHelper
2
- def deploys(*args)
3
- tasks(*args)
2
+ def shipit_deploys(*args)
3
+ shipit_tasks(*args)
4
4
  end
5
5
 
6
- def rollbacks(*args)
7
- tasks(*args)
6
+ def shipit_rollbacks(*args)
7
+ shipit_tasks(*args)
8
8
  end
9
9
  end
@@ -1,21 +1,23 @@
1
1
  require 'test_helper'
2
2
  require 'tmpdir'
3
3
 
4
- class CacheDeploySpecJobTest < ActiveSupport::TestCase
5
- setup do
6
- @stack = stacks(:shipit)
7
- @last_commit = commits(:fifth)
8
- @job = CacheDeploySpecJob.new
9
- end
4
+ module Shipit
5
+ class CacheDeploySpecJobTest < ActiveSupport::TestCase
6
+ setup do
7
+ @stack = shipit_stacks(:shipit)
8
+ @last_commit = shipit_commits(:fifth)
9
+ @job = CacheDeploySpecJob.new
10
+ end
10
11
 
11
- test "#perform checkout the repository to the last recorded commit and cache the deploy spec" do
12
- @stack.update!(cached_deploy_spec: DeploySpec.new('review' => {'checklist' => %w(foo bar)}))
12
+ test "#perform checkout the repository to the last recorded commit and cache the deploy spec" do
13
+ @stack.update!(cached_deploy_spec: DeploySpec.new('review' => {'checklist' => %w(foo bar)}))
13
14
 
14
- dir = Pathname(Dir.tmpdir)
15
- StackCommands.any_instance.expects(:with_temporary_working_directory).with(commit: @last_commit).yields(dir)
15
+ dir = Pathname(Dir.tmpdir)
16
+ StackCommands.any_instance.expects(:with_temporary_working_directory).with(commit: @last_commit).yields(dir)
16
17
 
17
- assert_equal %w(foo bar), @stack.checklist
18
- @job.perform(@stack)
19
- assert_equal [], @stack.reload.checklist
18
+ assert_equal %w(foo bar), @stack.checklist
19
+ @job.perform(@stack)
20
+ assert_equal [], @stack.reload.checklist
21
+ end
20
22
  end
21
23
  end
@@ -1,41 +1,43 @@
1
1
  require 'test_helper'
2
2
 
3
- class ChunkRollupJobTest < ActiveSupport::TestCase
4
- setup do
5
- @task = tasks(:shipit)
6
- @job = ChunkRollupJob.new
7
- end
3
+ module Shipit
4
+ class ChunkRollupJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @task = shipit_tasks(:shipit)
7
+ @job = ChunkRollupJob.new
8
+ end
8
9
 
9
- test "#perform combines all the chunks into a output and sets rolled_up to true" do
10
- expected_output = @task.chunk_output
11
- assert @task.output.blank?
10
+ test "#perform combines all the chunks into a output and sets rolled_up to true" do
11
+ expected_output = @task.chunk_output
12
+ assert @task.output.blank?
12
13
 
13
- @job.perform(@task)
14
+ @job.perform(@task)
14
15
 
15
- @task.reload
16
- assert_equal 0, @task.chunks.count
17
- assert @task.output.present?
18
- assert_equal expected_output, @task.chunk_output
19
- assert @task.rolled_up
20
- end
16
+ @task.reload
17
+ assert_equal 0, @task.chunks.count
18
+ assert @task.output.present?
19
+ assert_equal expected_output, @task.chunk_output
20
+ assert @task.rolled_up
21
+ end
21
22
 
22
- test "#peform ignores non-finished jobs" do
23
- logger = mock
24
- logger.expects(:error).once
25
- @job.stubs(logger: logger)
23
+ test "#peform ignores non-finished jobs" do
24
+ logger = mock
25
+ logger.expects(:error).once
26
+ @job.stubs(logger: logger)
26
27
 
27
- @task.update_attribute(:status, :pending)
28
+ @task.update_attribute(:status, :pending)
28
29
 
29
- @job.perform(@task)
30
- end
30
+ @job.perform(@task)
31
+ end
31
32
 
32
- test "#perform ignores tasks already rolled up" do
33
- logger = mock
34
- logger.expects(:error).once
35
- @job.stubs(logger: logger)
33
+ test "#perform ignores tasks already rolled up" do
34
+ logger = mock
35
+ logger.expects(:error).once
36
+ @job.stubs(logger: logger)
36
37
 
37
- @task.rolled_up = true
38
+ @task.rolled_up = true
38
39
 
39
- @job.perform(@task)
40
+ @job.perform(@task)
41
+ end
40
42
  end
41
43
  end
@@ -1,14 +1,16 @@
1
1
  require 'test_helper'
2
2
 
3
- class DeliverHookJobTest < ActiveSupport::TestCase
4
- setup do
5
- @delivery = deliveries(:scheduled_shipit_deploy)
6
- @job = DeliverHookJob.new
7
- end
3
+ module Shipit
4
+ class DeliverHookJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @delivery = shipit_deliveries(:scheduled_shipit_deploy)
7
+ @job = DeliverHookJob.new
8
+ end
8
9
 
9
- test "#perform delivers a delivery" do
10
- FakeWeb.register_uri(:post, @delivery.url, body: 'OK')
11
- @job.perform(@delivery)
12
- assert_equal 'sent', @delivery.reload.status
10
+ test "#perform delivers a delivery" do
11
+ FakeWeb.register_uri(:post, @delivery.url, body: 'OK')
12
+ @job.perform(@delivery)
13
+ assert_equal 'sent', @delivery.reload.status
14
+ end
13
15
  end
14
16
  end
@@ -1,16 +1,18 @@
1
1
  require 'test_helper'
2
2
 
3
- class DestroyStackJobTest < ActiveSupport::TestCase
4
- setup do
5
- @job = DestroyStackJob.new
6
- @stack = Stack.first
7
- end
3
+ module Shipit
4
+ class DestroyStackJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @job = DestroyStackJob.new
7
+ @stack = Stack.first
8
+ end
8
9
 
9
- test "perform destroys the received stack" do
10
- Shipit.github_api.expects(:remove_hook).times(@stack.github_hooks.count)
10
+ test "perform destroys the received stack" do
11
+ Shipit.github_api.expects(:remove_hook).times(@stack.github_hooks.count)
11
12
 
12
- assert_difference -> { Stack.count }, -1 do
13
- @job.perform(@stack)
13
+ assert_difference -> { Stack.count }, -1 do
14
+ @job.perform(@stack)
15
+ end
14
16
  end
15
17
  end
16
18
  end
@@ -1,14 +1,16 @@
1
1
  require 'test_helper'
2
2
 
3
- class EmitEventJobTest < ActiveSupport::TestCase
4
- setup do
5
- @stack = stacks(:shipit)
6
- @job = EmitEventJob.new
7
- end
3
+ module Shipit
4
+ class EmitEventJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @stack = shipit_stacks(:shipit)
7
+ @job = EmitEventJob.new
8
+ end
8
9
 
9
- test "#perform schedule deliveries" do
10
- assert_difference -> { Delivery.scheduled.count }, 2 do
11
- @job.perform(event: :deploy, stack_id: @stack.id, payload: {foo: 42}.to_json)
10
+ test "#perform schedule deliveries" do
11
+ assert_difference -> { Delivery.scheduled.count }, 2 do
12
+ @job.perform(event: :deploy, stack_id: @stack.id, payload: {foo: 42}.to_json)
13
+ end
12
14
  end
13
15
  end
14
16
  end
@@ -1,13 +1,15 @@
1
1
  require 'test_helper'
2
2
 
3
- class FetchCommitStatsJobTest < ActiveSupport::TestCase
4
- setup do
5
- @commit = commits(:first)
6
- @job = FetchCommitStatsJob.new
7
- end
3
+ module Shipit
4
+ class FetchCommitStatsJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @commit = shipit_commits(:first)
7
+ @job = FetchCommitStatsJob.new
8
+ end
8
9
 
9
- test "#perform call #fetch_stats! on the provided commit" do
10
- @commit.expects(:fetch_stats!).once
11
- @job.perform(@commit)
10
+ test "#perform call #fetch_stats! on the provided commit" do
11
+ @commit.expects(:fetch_stats!).once
12
+ @job.perform(@commit)
13
+ end
12
14
  end
13
15
  end
@@ -1,30 +1,32 @@
1
1
  require 'test_helper'
2
2
 
3
- class FetchDeployedRevisionJobTest < ActiveSupport::TestCase
4
- setup do
5
- @stack = stacks(:shipit)
6
- @job = FetchDeployedRevisionJob.new
7
- @commit = commits(:fifth)
8
- end
3
+ module Shipit
4
+ class FetchDeployedRevisionJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @stack = shipit_stacks(:shipit)
7
+ @job = FetchDeployedRevisionJob.new
8
+ @commit = shipit_commits(:fifth)
9
+ end
9
10
 
10
- test 'the job abort if the stack is deploying' do
11
- @stack.expects(:deploying?).returns(true)
12
- assert_no_difference 'Deploy.count' do
13
- @job.perform(@stack)
11
+ test 'the job abort if the stack is deploying' do
12
+ @stack.expects(:deploying?).returns(true)
13
+ assert_no_difference 'Deploy.count' do
14
+ @job.perform(@stack)
15
+ end
14
16
  end
15
- end
16
17
 
17
- test 'the job abort if #fetch_deployed_revision returns nil' do
18
- @stack.expects(:deploying?).returns(false)
19
- StackCommands.any_instance.expects(:fetch_deployed_revision).returns(nil)
20
- @stack.expects(:update_deployed_revision).never
21
- @job.perform(@stack)
22
- end
18
+ test 'the job abort if #fetch_deployed_revision returns nil' do
19
+ @stack.expects(:deploying?).returns(false)
20
+ StackCommands.any_instance.expects(:fetch_deployed_revision).returns(nil)
21
+ @stack.expects(:update_deployed_revision).never
22
+ @job.perform(@stack)
23
+ end
23
24
 
24
- test 'the job call update_deployed_revision if #fetch_deployed_revision returns something' do
25
- @stack.expects(:deploying?).returns(false)
26
- StackCommands.any_instance.expects(:fetch_deployed_revision).returns(@commit.sha)
27
- @stack.expects(:update_deployed_revision).with(@commit.sha)
28
- @job.perform(@stack)
25
+ test 'the job call update_deployed_revision if #fetch_deployed_revision returns something' do
26
+ @stack.expects(:deploying?).returns(false)
27
+ StackCommands.any_instance.expects(:fetch_deployed_revision).returns(@commit.sha)
28
+ @stack.expects(:update_deployed_revision).with(@commit.sha)
29
+ @job.perform(@stack)
30
+ end
29
31
  end
30
32
  end
@@ -1,67 +1,69 @@
1
1
  require 'test_helper'
2
2
 
3
- class GithubSyncJobTest < ActiveSupport::TestCase
4
- setup do
5
- @job = GithubSyncJob.new
6
- @stack = stacks(:shipit)
7
- @github_commits = stub
8
- end
3
+ module Shipit
4
+ class GithubSyncJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @job = GithubSyncJob.new
7
+ @stack = shipit_stacks(:shipit)
8
+ @github_commits = stub
9
+ end
9
10
 
10
- test "#perform fetch commits from the API" do
11
- Stack.any_instance.expects(:github_commits).returns(@github_commits)
12
- @job.expects(:fetch_missing_commits).yields.returns([[], nil])
13
- @job.perform(stack_id: @stack.id)
14
- end
11
+ test "#perform fetch commits from the API" do
12
+ Stack.any_instance.expects(:github_commits).returns(@github_commits)
13
+ @job.expects(:fetch_missing_commits).yields.returns([[], nil])
14
+ @job.perform(stack_id: @stack.id)
15
+ end
15
16
 
16
- test "#perform finally enqueue a CacheDeploySpecJob" do
17
- Stack.any_instance.stubs(:github_commits).returns(@github_commits)
18
- @job.stubs(:fetch_missing_commits).yields.returns([[], nil])
17
+ test "#perform finally enqueue a CacheDeploySpecJob" do
18
+ Stack.any_instance.stubs(:github_commits).returns(@github_commits)
19
+ @job.stubs(:fetch_missing_commits).yields.returns([[], nil])
19
20
 
20
- assert_enqueued_with(job: CacheDeploySpecJob, args: [@stack]) do
21
- @job.perform(stack_id: @stack.id)
21
+ assert_enqueued_with(job: CacheDeploySpecJob, args: [@stack]) do
22
+ @job.perform(stack_id: @stack.id)
23
+ end
22
24
  end
23
- end
24
25
 
25
- test "#perform mark all childs of the common parent as detached" do
26
- Stack.any_instance.expects(:github_commits).returns(@github_commits)
27
- @job.expects(:fetch_missing_commits).yields.returns([[], commits(:third)])
26
+ test "#perform mark all childs of the common parent as detached" do
27
+ Stack.any_instance.expects(:github_commits).returns(@github_commits)
28
+ @job.expects(:fetch_missing_commits).yields.returns([[], shipit_commits(:third)])
28
29
 
29
- refute commits(:fourth).reload.detached?
30
- refute commits(:fifth).reload.detached?
30
+ refute shipit_commits(:fourth).reload.detached?
31
+ refute shipit_commits(:fifth).reload.detached?
31
32
 
32
- @job.perform(stack_id: @stack.id)
33
+ @job.perform(stack_id: @stack.id)
33
34
 
34
- assert commits(:fourth).reload.detached?
35
- assert commits(:fifth).reload.detached?
36
- end
35
+ assert shipit_commits(:fourth).reload.detached?
36
+ assert shipit_commits(:fifth).reload.detached?
37
+ end
37
38
 
38
- test "#fetch_missing_commits returns the commits in the reverse order if it doesn't know the parent" do
39
- last = stub(sha: 123)
40
- first = stub(sha: 345)
41
- Shipit::FirstParentCommitsIterator.any_instance.stubs(:each).multiple_yields(last, first)
42
- @job.stubs(lookup_commit: nil)
39
+ test "#fetch_missing_commits returns the commits in the reverse order if it doesn't know the parent" do
40
+ last = stub(sha: 123)
41
+ first = stub(sha: 345)
42
+ Shipit::FirstParentCommitsIterator.any_instance.stubs(:each).multiple_yields(last, first)
43
+ @job.stubs(lookup_commit: nil)
43
44
 
44
- commits, parent = @job.fetch_missing_commits { stub }
45
- assert_nil parent
46
- assert_equal [first, last], commits
47
- end
45
+ commits, parent = @job.fetch_missing_commits { stub }
46
+ assert_nil parent
47
+ assert_equal [first, last], commits
48
+ end
48
49
 
49
- test "#fetch_missing_commits returns the commits in the reverse order if it knows the parent" do
50
- last = stub(sha: 123)
51
- first = stub(sha: 345)
52
- Shipit::FirstParentCommitsIterator.any_instance.stubs(:each).multiple_yields(last, first)
53
- @job.stubs(:lookup_commit).with(123).returns(nil)
54
- @job.stubs(:lookup_commit).with(345).returns(first)
50
+ test "#fetch_missing_commits returns the commits in the reverse order if it knows the parent" do
51
+ last = stub(sha: 123)
52
+ first = stub(sha: 345)
53
+ Shipit::FirstParentCommitsIterator.any_instance.stubs(:each).multiple_yields(last, first)
54
+ @job.stubs(:lookup_commit).with(123).returns(nil)
55
+ @job.stubs(:lookup_commit).with(345).returns(first)
55
56
 
56
- commits, parent = @job.fetch_missing_commits { stub }
57
- assert_equal first, parent
58
- assert_equal [last], commits
59
- end
57
+ commits, parent = @job.fetch_missing_commits { stub }
58
+ assert_equal first, parent
59
+ assert_equal [last], commits
60
+ end
60
61
 
61
- test "if GitHub returns a 404, the stacks is marked as inaccessible" do
62
- @job.expects(:fetch_missing_commits).raises(Octokit::NotFound)
63
- @job.perform(stack_id: @stack.id)
62
+ test "if GitHub returns a 404, the stacks is marked as inaccessible" do
63
+ @job.expects(:fetch_missing_commits).raises(Octokit::NotFound)
64
+ @job.perform(stack_id: @stack.id)
64
65
 
65
- assert_equal true, @stack.reload.inaccessible_since?
66
+ assert_equal true, @stack.reload.inaccessible_since?
67
+ end
66
68
  end
67
69
  end
@@ -1,102 +1,104 @@
1
1
  require 'test_helper'
2
2
 
3
- class PerformTaskJobTest < ActiveSupport::TestCase
4
- setup do
5
- @job = PerformTaskJob.new
6
- @deploy = deploys(:shipit_pending)
7
- @stack = stacks(:shipit)
8
- end
9
-
10
- test "#perform fetch commits from the API" do
11
- @job.stubs(:capture)
12
- @commands = stub(:commands)
13
- Commands.expects(:for).with(@deploy).returns(@commands)
14
-
15
- @commands.expects(:fetch).once
16
- @commands.expects(:clone).once
17
- @commands.expects(:checkout).with(@deploy.until_commit).once
18
- @commands.expects(:install_dependencies).returns([]).once
19
- @commands.expects(:perform).returns([]).once
3
+ module Shipit
4
+ class PerformTaskJobTest < ActiveSupport::TestCase
5
+ setup do
6
+ @job = PerformTaskJob.new
7
+ @deploy = shipit_deploys(:shipit_pending)
8
+ @stack = shipit_stacks(:shipit)
9
+ end
20
10
 
21
- @deploy.expects(:clear_working_directory)
11
+ test "#perform fetch commits from the API" do
12
+ @job.stubs(:capture)
13
+ @commands = stub(:commands)
14
+ Commands.expects(:for).with(@deploy).returns(@commands)
22
15
 
23
- @job.perform(@deploy)
24
- end
16
+ @commands.expects(:fetch).once
17
+ @commands.expects(:clone).once
18
+ @commands.expects(:checkout).with(@deploy.until_commit).once
19
+ @commands.expects(:install_dependencies).returns([]).once
20
+ @commands.expects(:perform).returns([]).once
25
21
 
26
- test "#perform enqueues a FetchDeployedRevisionJob" do
27
- Dir.stubs(:chdir).yields
28
- DeployCommands.any_instance.expects(:perform).returns([])
29
- @job.stubs(:capture)
22
+ @deploy.expects(:clear_working_directory)
30
23
 
31
- Hook.expects(:emit).twice
32
- assert_enqueued_with(job: FetchDeployedRevisionJob, args: [@deploy.stack]) do
33
24
  @job.perform(@deploy)
34
25
  end
35
- end
36
26
 
37
- test "marks deploy as successful" do
38
- Dir.stubs(:chdir).yields
39
- DeployCommands.any_instance.expects(:perform).returns([])
40
- @job.stubs(:capture)
27
+ test "#perform enqueues a FetchDeployedRevisionJob" do
28
+ Dir.stubs(:chdir).yields
29
+ DeployCommands.any_instance.expects(:perform).returns([])
30
+ @job.stubs(:capture)
41
31
 
42
- @job.perform(@deploy)
43
- assert_equal 'success', @deploy.reload.status
44
- end
32
+ Hook.expects(:emit).twice
33
+ assert_enqueued_with(job: FetchDeployedRevisionJob, args: [@deploy.stack]) do
34
+ @job.perform(@deploy)
35
+ end
36
+ end
37
+
38
+ test "marks deploy as successful" do
39
+ Dir.stubs(:chdir).yields
40
+ DeployCommands.any_instance.expects(:perform).returns([])
41
+ @job.stubs(:capture)
45
42
 
46
- test "marks deploy as `error` if any application error is raised" do
47
- @job.expects(:capture).raises("some error")
48
- assert_nothing_raised do
49
43
  @job.perform(@deploy)
44
+ assert_equal 'success', @deploy.reload.status
50
45
  end
51
- assert_equal 'error', @deploy.reload.status
52
- assert_includes @deploy.chunk_output, 'RuntimeError: some error'
53
- end
54
46
 
55
- test "marks deploy as `failed` if a command exit with an error code" do
56
- @job.expects(:capture).raises(Command::Error.new('something'))
57
- @job.perform(@deploy)
58
- assert_equal 'failed', @deploy.reload.status
59
- end
47
+ test "marks deploy as `error` if any application error is raised" do
48
+ @job.expects(:capture).raises("some error")
49
+ assert_nothing_raised do
50
+ @job.perform(@deploy)
51
+ end
52
+ assert_equal 'error', @deploy.reload.status
53
+ assert_includes @deploy.chunk_output, 'RuntimeError: some error'
54
+ end
60
55
 
61
- test "bail out if deploy is not pending" do
62
- @deploy.run!
63
- @job.expects(:capture).never
64
- @job.perform(@deploy)
65
- end
56
+ test "marks deploy as `failed` if a command exit with an error code" do
57
+ @job.expects(:capture).raises(Command::Error.new('something'))
58
+ @job.perform(@deploy)
59
+ assert_equal 'failed', @deploy.reload.status
60
+ end
66
61
 
67
- test "mark deploy as error if a command timeout" do
68
- Timeout.expects(:timeout).raises(Timeout::Error.new)
69
- Command.any_instance.expects(:terminate!)
70
- assert_nothing_raised do
62
+ test "bail out if deploy is not pending" do
63
+ @deploy.run!
64
+ @job.expects(:capture).never
71
65
  @job.perform(@deploy)
72
66
  end
73
- assert @deploy.reload.error?
74
- assert_includes @deploy.chunk_output, 'Timeout::Error'
75
- end
76
67
 
77
- test "records stack support for rollbacks and fetching deployed revision" do
78
- @job.stubs(:capture)
79
- @commands = stub(:commands)
80
- @commands.stubs(:fetch).returns([])
81
- @commands.stubs(:clone).returns([])
82
- @commands.stubs(:checkout).returns([])
83
- @commands.stubs(:install_dependencies).returns([])
84
- @commands.stubs(:perform).returns([])
85
- DeployCommands.expects(:new).with(@deploy).returns(@commands)
86
- @deploy.stubs(:clear_working_directory)
68
+ test "mark deploy as error if a command timeout" do
69
+ Timeout.expects(:timeout).raises(Timeout::Error.new)
70
+ Command.any_instance.expects(:terminate!)
71
+ assert_nothing_raised do
72
+ @job.perform(@deploy)
73
+ end
74
+ assert @deploy.reload.error?
75
+ assert_includes @deploy.chunk_output, 'Timeout::Error'
76
+ end
87
77
 
88
- @stack.update!(cached_deploy_spec: DeploySpec.new({}))
78
+ test "records stack support for rollbacks and fetching deployed revision" do
79
+ @job.stubs(:capture)
80
+ @commands = stub(:commands)
81
+ @commands.stubs(:fetch).returns([])
82
+ @commands.stubs(:clone).returns([])
83
+ @commands.stubs(:checkout).returns([])
84
+ @commands.stubs(:install_dependencies).returns([])
85
+ @commands.stubs(:perform).returns([])
86
+ DeployCommands.expects(:new).with(@deploy).returns(@commands)
87
+ @deploy.stubs(:clear_working_directory)
89
88
 
90
- refute @stack.supports_rollback?
91
- refute @stack.supports_fetch_deployed_revision?
89
+ @stack.update!(cached_deploy_spec: DeploySpec.new({}))
92
90
 
93
- @job.perform(@deploy)
94
- @stack.reload
91
+ refute @stack.supports_rollback?
92
+ refute @stack.supports_fetch_deployed_revision?
95
93
 
96
- DeploySpec.any_instance.expects(:supports_fetch_deployed_revision?).returns(true)
97
- DeploySpec.any_instance.expects(:supports_rollback?).returns(true)
94
+ @job.perform(@deploy)
95
+ @stack.reload
98
96
 
99
- assert @stack.supports_rollback?
100
- assert @stack.supports_fetch_deployed_revision?
97
+ DeploySpec.any_instance.expects(:supports_fetch_deployed_revision?).returns(true)
98
+ DeploySpec.any_instance.expects(:supports_rollback?).returns(true)
99
+
100
+ assert @stack.supports_rollback?
101
+ assert @stack.supports_fetch_deployed_revision?
102
+ end
101
103
  end
102
104
  end