From 4e86e55008075d2fc57453521c59f86d713b28b2 Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Mon, 9 Aug 2021 10:05:33 -0400 Subject: [PATCH] Event.pm: add a new_event helper to parse and construct an Event An Event will be part of many Tasks --- src/lib/Hydra/Event.pm | 16 +++++++++++----- t/Event.t | 7 +++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/lib/Hydra/Event.pm b/src/lib/Hydra/Event.pm index ac1222e0..8608c87b 100644 --- a/src/lib/Hydra/Event.pm +++ b/src/lib/Hydra/Event.pm @@ -1,14 +1,9 @@ package Hydra::Event; - use strict; use Hydra::Event::BuildFinished; use Hydra::Event::BuildStarted; use Hydra::Event::StepFinished; -our @ISA = qw(Exporter); -our @EXPORT = qw( - parse_payload -); my %channels_to_events = ( build_started => \&Hydra::Event::BuildStarted::parse, @@ -28,3 +23,14 @@ sub parse_payload :prototype($$) { return $parser->(@payload); } + + +sub new_event { + my ($self, $channel_name, $payload) = @_; + + return bless { + "channel_name" => $channel_name, + "payload" => $payload, + "event" => parse_payload($channel_name, $payload), + }, $self; +} diff --git a/t/Event.t b/t/Event.t index 95feb29a..849070f8 100644 --- a/t/Event.t +++ b/t/Event.t @@ -7,6 +7,13 @@ use Hydra::Event::StepFinished; use Test2::V0; use Test2::Tools::Exception; +subtest "Event: new event" => sub { + my $event = Hydra::Event->new_event("build_started", "19"); + is($event->{'payload'}, "19"); + is($event->{'channel_name'}, "build_started"); + is($event->{'event'}->{'build_id'}, 19); +}; + subtest "Payload type: build_started" => sub { like( dies { Hydra::Event::parse_payload("build_started", "") },