summaryrefslogtreecommitdiff
path: root/spec/workers/process_commit_worker_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/workers/process_commit_worker_spec.rb')
-rw-r--r--spec/workers/process_commit_worker_spec.rb51
1 files changed, 42 insertions, 9 deletions
diff --git a/spec/workers/process_commit_worker_spec.rb b/spec/workers/process_commit_worker_spec.rb
index 99800135075..21c300af7ac 100644
--- a/spec/workers/process_commit_worker_spec.rb
+++ b/spec/workers/process_commit_worker_spec.rb
@@ -129,21 +129,54 @@ describe ProcessCommitWorker do
end
describe '#update_issue_metrics' do
- it 'updates any existing issue metrics' do
- allow(commit).to receive(:safe_message).and_return("Closes #{issue.to_reference}")
+ context 'when commit has issue reference' do
+ subject(:update_metrics_and_reload) do
+ -> {
+ worker.update_issue_metrics(commit, user)
+ issue.metrics.reload
+ }
+ end
+
+ before do
+ allow(commit).to receive(:safe_message).and_return("Closes #{issue.to_reference}")
+ end
- worker.update_issue_metrics(commit, user)
+ context 'when issue has no first_mentioned_in_commit_at set' do
+ it 'updates issue metrics' do
+ expect(update_metrics_and_reload)
+ .to change { issue.metrics.first_mentioned_in_commit_at }.to(commit.committed_date)
+ end
+ end
- metric = Issue::Metrics.first
+ context 'when issue has first_mentioned_in_commit_at earlier than given committed_date' do
+ before do
+ issue.metrics.update(first_mentioned_in_commit_at: commit.committed_date - 1.day)
+ end
- expect(metric.first_mentioned_in_commit_at).to eq(commit.committed_date)
+ it "doesn't update issue metrics" do
+ expect(update_metrics_and_reload).not_to change { issue.metrics.first_mentioned_in_commit_at }
+ end
+ end
+
+ context 'when issue has first_mentioned_in_commit_at later than given committed_date' do
+ before do
+ issue.metrics.update(first_mentioned_in_commit_at: commit.committed_date + 1.day)
+ end
+
+ it "doesn't update issue metrics" do
+ expect(update_metrics_and_reload)
+ .to change { issue.metrics.first_mentioned_in_commit_at }.to(commit.committed_date)
+ end
+ end
end
- it "doesn't execute any queries with false conditions" do
- allow(commit).to receive(:safe_message).and_return("Lorem Ipsum")
+ context 'when commit has no issue references' do
+ it "doesn't execute any queries with false conditions" do
+ allow(commit).to receive(:safe_message).and_return("Lorem Ipsum")
- expect { worker.update_issue_metrics(commit, user) }
- .not_to make_queries_matching(/WHERE (?:1=0|0=1)/)
+ expect { worker.update_issue_metrics(commit, user) }
+ .not_to make_queries_matching(/WHERE (?:1=0|0=1)/)
+ end
end
end