Skip to content
Snippets Groups Projects
Commit f22add3f authored by Kassio Borges's avatar Kassio Borges :three: Committed by Kamil Trzciński
Browse files

Add Pages::PageDeployedEvent

Related to: #363867

Changelog: added
parent 415c3cb9
No related branches found
No related tags found
1 merge request!89160Add Pages::PageDeployedEvent
# frozen_string_literal: true
module Pages
class PageDeployedEvent < ::Gitlab::EventStore::Event
def schema
{
'type' => 'object',
'properties' => {
'project_id' => { 'type' => 'integer' },
'namespace_id' => { 'type' => 'integer' },
'root_namespace_id' => { 'type' => 'integer' }
},
'required' => %w[project_id namespace_id root_namespace_id]
}
end
end
end
......@@ -53,6 +53,7 @@ def execute
def success
@commit_status.success
@project.mark_pages_as_deployed
publish_deployed_event
super
end
......@@ -203,6 +204,16 @@ def entries_count
def pages_file_entries_limit
project.actual_limits.pages_file_entries
end
def publish_deployed_event
event = ::Pages::PageDeployedEvent.new(data: {
project_id: project.id,
namespace_id: project.namespace_id,
root_namespace_id: project.root_namespace.id
})
Gitlab::EventStore.publish(event)
end
end
end
......
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Pages::PageDeployedEvent do
where(:data, :valid) do
[
[{ project_id: 1, namespace_id: 2, root_namespace_id: 3 }, true],
[{ project_id: 1 }, false],
[{ namespace_id: 1 }, false],
[{ project_id: 'foo', namespace_id: 2 }, false],
[{ project_id: 1, namespace_id: 'foo' }, false],
[{ project_id: [], namespace_id: 2 }, false],
[{ project_id: 1, namespace_id: [] }, false],
[{ project_id: {}, namespace_id: 2 }, false],
[{ project_id: 1, namespace_id: {} }, false],
['foo', false],
[123, false],
[[], false]
]
end
with_them do
it 'validates data' do
constructor = -> { described_class.new(data: data) }
if valid
expect { constructor.call }.not_to raise_error
else
expect { constructor.call }.to raise_error(Gitlab::EventStore::InvalidEvent)
end
end
end
end
......@@ -43,6 +43,16 @@
expect(project.pages_deployed?).to be_truthy
end
it 'publishes a PageDeployedEvent event with project id and namespace id' do
expected_data = {
project_id: project.id,
namespace_id: project.namespace_id,
root_namespace_id: project.root_namespace.id
}
expect { subject.execute }.to publish_event(Pages::PageDeployedEvent).with(expected_data)
end
it 'creates pages_deployment and saves it in the metadata' do
expect do
expect(execute).to eq(:success)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment