Commit e754af63 authored by Valery Sizov's avatar Valery Sizov

Merge branch 'es_deletes_rspec' into 'master'

[ES] Rspec for code that used delete-by-query plugin

We need to reconfigure CI so elastic has `delete-by-query` plugin installed

See merge request !654
parents e166706a 02717c38
...@@ -10,7 +10,7 @@ variables: ...@@ -10,7 +10,7 @@ variables:
MYSQL_ALLOW_EMPTY_PASSWORD: "1" MYSQL_ALLOW_EMPTY_PASSWORD: "1"
# retry tests only in CI environment # retry tests only in CI environment
RSPEC_RETRY_RETRY_COUNT: "3" RSPEC_RETRY_RETRY_COUNT: "3"
ELASTIC_HOST: "elasticsearch" ELASTIC_HOST: "registry.gitlab.com__gitlab-org__test-elastic-image"
RAILS_ENV: "test" RAILS_ENV: "test"
SIMPLECOV: "true" SIMPLECOV: "true"
USE_DB: "true" USE_DB: "true"
...@@ -71,7 +71,7 @@ update-knapsack: ...@@ -71,7 +71,7 @@ update-knapsack:
services: services:
- mysql:latest - mysql:latest
- redis:alpine - redis:alpine
- elasticsearch:latest - registry.gitlab.com/gitlab-org/test-elastic-image
.rspec-knapsack: &rspec-knapsack .rspec-knapsack: &rspec-knapsack
stage: test stage: test
......
...@@ -2,3 +2,4 @@ require 'webmock' ...@@ -2,3 +2,4 @@ require 'webmock'
require 'webmock/rspec' require 'webmock/rspec'
WebMock.disable_net_connect!(allow_localhost: true, allow: 'elasticsearch') WebMock.disable_net_connect!(allow_localhost: true, allow: 'elasticsearch')
WebMock.disable_net_connect!(allow_localhost: true, allow: 'registry.gitlab.com__gitlab-org__test-elastic-image')
...@@ -121,5 +121,87 @@ describe ElasticIndexerWorker, elastic: true do ...@@ -121,5 +121,87 @@ describe ElasticIndexerWorker, elastic: true do
end.to change{ Elasticsearch::Model.search('new').records.size }.by(1) end.to change{ Elasticsearch::Model.search('new').records.size }.by(1)
end end
end end
describe 'Delete' do
it 'deletes a project with all nested objects' do
project = create :project
subject.perform("index", "Project", project.id)
issue = create :issue, project: project
subject.perform("index", "Issue", issue.id)
milestone = create :milestone, project: project
subject.perform("index", "Milestone", milestone.id)
note = create :note, project: project
subject.perform("index", "Note", note.id)
merge_request = create :merge_request, target_project: project, source_project: project
subject.perform("index", "MergeRequest", merge_request.id)
ElasticCommitIndexerWorker.new.perform(project.id)
Gitlab::Elastic::Helper.refresh_index
## All database objects + data from repository. The absolute value does not matter
expect(Elasticsearch::Model.search('*').total_count).to be > 40
subject.perform("delete", "Project", project.id)
Gitlab::Elastic::Helper.refresh_index
expect(Elasticsearch::Model.search('*').total_count).to be(0)
end
it 'deletes an issue' do
issue = create :issue
subject.perform("index", "Issue", issue.id)
Gitlab::Elastic::Helper.refresh_index
issue.destroy
expect do
subject.perform("delete", "Issue", issue.id, "project_id" => issue.project_id)
Gitlab::Elastic::Helper.refresh_index
end.to change{ Elasticsearch::Model.search('*').total_count }.by(-1)
end
it 'deletes a note' do
note = create :note
subject.perform("index", "Note", note.id)
Gitlab::Elastic::Helper.refresh_index
note.destroy
expect do
subject.perform("delete", "Note", note.id, "project_id" => note.project_id)
Gitlab::Elastic::Helper.refresh_index
end.to change{ Elasticsearch::Model.search('*').total_count }.by(-1)
end
it 'deletes a milestone' do
milestone = create :milestone
subject.perform("index", "Milestone", milestone.id)
Gitlab::Elastic::Helper.refresh_index
milestone.destroy
expect do
subject.perform("delete", "Milestone", milestone.id, "project_id" => milestone.project_id)
Gitlab::Elastic::Helper.refresh_index
end.to change{ Elasticsearch::Model.search('*').total_count }.by(-1)
end
it 'deletes a merge request' do
merge_request = create :merge_request
subject.perform("index", "MergeRequest", merge_request.id)
Gitlab::Elastic::Helper.refresh_index
merge_request.destroy
expect do
subject.perform("delete", "MergeRequest", merge_request.id, "project_id" => merge_request.target_project_id)
Gitlab::Elastic::Helper.refresh_index
end.to change{ Elasticsearch::Model.search('*').total_count }.by(-1)
end
end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment