Skip to content
This repository has been archived by the owner on Jun 23, 2021. It is now read-only.

Commit

Permalink
Merge branch 'master' into feature/III-1619
Browse files Browse the repository at this point in the history
  • Loading branch information
bramcordie committed Dec 13, 2016
2 parents 9dcd318 + f46c631 commit 9745191
Show file tree
Hide file tree
Showing 12 changed files with 115 additions and 223 deletions.
9 changes: 6 additions & 3 deletions bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use CultuurNet\UDB3\EventSourcing\ExecutionContextMetadataEnricher;
use CultuurNet\UDB3\LabelCollection;
use CultuurNet\UDB3\SimpleEventBus;
use CultuurNet\UDB3\UiTPASService\Broadway\Saga\StaticallyConfiguredSagaNamespacedEventsMetadataFactory;
use CultuurNet\UDB3\UiTPASService\Permissions\DefaultEventPermission;
use CultuurNet\UDB3\UiTPASService\Permissions\UDB3EventPermission;
use CultuurNet\UDB3\UiTPASService\Sync\SyncCommandHandler;
Expand Down Expand Up @@ -409,9 +410,11 @@ function ($app) {
$app->extend(
'uitpas_command_bus_out',
function (CommandBusInterface $commandBus, Application $app) {
// @todo Subscribe command handlers here.
$uitpasSync = isset($app['config']['uitpas_sync']) ? (bool) $app['config']['uitpas_sync'] : true;
if ($uitpasSync) {
$commandBus->subscribe($app['uitpas_sync_command_handler']);
}

$commandBus->subscribe($app['uitpas_sync_command_handler']);
$commandBus->subscribe($app['uitpas_aggregate_command_handler']);

return $commandBus;
Expand Down Expand Up @@ -467,7 +470,7 @@ function (Application $app) {
$app['saga_repository'],
new Broadway\UuidGenerator\Rfc4122\Version4Generator()
),
new \Broadway\Saga\Metadata\StaticallyConfiguredSagaMetadataFactory(),
new StaticallyConfiguredSagaNamespacedEventsMetadataFactory(),
new EventDispatcher()
);
}
Expand Down
1 change: 1 addition & 0 deletions config.dist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ jwt:
file: public.pem
validation:
iss: http://culudb-jwt-provider.dev
uitpas_sync: true # Optional, defaults to true if not defined
46 changes: 46 additions & 0 deletions src/Broadway/Saga/NamespacedEventsMetadata.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php

namespace CultuurNet\UDB3\UiTPASService\Broadway\Saga;

use Broadway\Saga\MetadataInterface;

/**
* Copied from Broadway\Saga\Metadata\Metadata and modified to work with
* namespaced event names.
*/
class NamespacedEventsMetadata implements MetadataInterface
{
private $criteria;

/**
* @param array $criteria
*/
public function __construct($criteria)
{
$this->criteria = $criteria;
}

/**
* {@inheritDoc}
*/
public function handles($event)
{
$eventName = get_class($event);

return isset($this->criteria[$eventName]);
}

/**
* {@inheritDoc}
*/
public function criteria($event)
{
$eventName = get_class($event);

if (! isset($this->criteria[$eventName])) {
throw new \RuntimeException(sprintf("No criteria for event '%s'.", $eventName));
}

return $this->criteria[$eventName]($event);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

namespace CultuurNet\UDB3\UiTPASService\Broadway\Saga;

use Broadway\Saga\Metadata\MetadataFactoryInterface;
use Broadway\Saga\Metadata\StaticallyConfiguredSagaInterface;

/**
* Copied from Broadway\Saga\Metadata\StaticallyConfiguredSagaMetadataFactory
* and modified to return an instance of NamespacedEventsMetadata.
*/
class StaticallyConfiguredSagaNamespacedEventsMetadataFactory implements MetadataFactoryInterface
{
/**
* {@inheritDoc}
*/
public function create($saga)
{
if (!($saga instanceof StaticallyConfiguredSagaInterface)) {
throw new \RuntimeException(
sprintf('Provided saga of class %s must implement %s', $saga, StaticallyConfiguredSagaInterface::class)
);
}

$criteria = $saga::configuration();

return new NamespacedEventsMetadata($criteria);
}
}
2 changes: 1 addition & 1 deletion src/Specification/IsUiTPASOrganizerAccordingToJSONLD.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public function isSatisfiedBy($organizerId)
$uitpasLabelsPresentOnOrganizer = array_filter(
$organizerLabels,
function ($label) {
$label = new Label($label->name);
$label = new Label($label);
return $this->uitpasLabels->contains($label);
}
);
Expand Down
64 changes: 10 additions & 54 deletions src/UiTPASEventSaga.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
use CultuurNet\UDB3\Cdb\EventItemFactory;
use CultuurNet\UDB3\Cdb\PriceDescriptionParser;
use CultuurNet\UDB3\Event\Events\EventCreated;
use CultuurNet\UDB3\Event\Events\EventCreatedFromCdbXml;
use CultuurNet\UDB3\Event\Events\EventImportedFromUDB2;
use CultuurNet\UDB3\Event\Events\EventUpdatedFromCdbXml;
use CultuurNet\UDB3\Event\Events\EventUpdatedFromUDB2;
use CultuurNet\UDB3\Event\Events\OrganizerDeleted;
use CultuurNet\UDB3\Event\Events\OrganizerUpdated;
Expand Down Expand Up @@ -96,25 +94,22 @@ public static function configuration()
);
};

$cdbXmlEventCallback = function ($event) {
/* @var EventUpdatedFromUDB2|EventUpdatedFromCdbXml $event */
$updateFromUdb2Callback = function (EventUpdatedFromUDB2 $event) {
return new Criteria(
['uitpasAggregateId' => (string) $event->getEventId()]
);
};

return [
'EventCreated' => $initialEventCallback,
'EventImportedFromUDB2' => $initialEventCallback,
'EventCreatedFromCdbXml' => $initialEventCallback,
'EventUpdatedFromUDB2' => $cdbXmlEventCallback,
'EventUpdatedFromCdbXml' => $cdbXmlEventCallback,
'OrganizerUpdated' => $offerEventCallback,
'OrganizerDeleted' => $offerEventCallback,
'PriceInfoUpdated' => $offerEventCallback,
'UiTPASAggregateCreated' => $uitpasAggregateEventCallback,
'DistributionKeysUpdated' => $uitpasAggregateEventCallback,
'DistributionKeysCleared' => $uitpasAggregateEventCallback,
EventCreated::class => $initialEventCallback,
EventImportedFromUDB2::class => $initialEventCallback,
EventUpdatedFromUDB2::class => $updateFromUdb2Callback,
OrganizerUpdated::class => $offerEventCallback,
OrganizerDeleted::class => $offerEventCallback,
PriceInfoUpdated::class => $offerEventCallback,
UiTPASAggregateCreated::class => $uitpasAggregateEventCallback,
DistributionKeysUpdated::class => $uitpasAggregateEventCallback,
DistributionKeysCleared::class => $uitpasAggregateEventCallback,
];
}

Expand Down Expand Up @@ -151,27 +146,6 @@ public function handleEventImportedFromUDB2(EventImportedFromUDB2 $eventImported
return $state;
}

/**
* @param EventCreatedFromCdbXml $eventCreatedFromCdbXml
* @param State $state
* @return State
*/
public function handleEventCreatedFromCdbXml(EventCreatedFromCdbXml $eventCreatedFromCdbXml, State $state)
{
$state->set('uitpasAggregateId', $eventCreatedFromCdbXml->getEventId());
$state->set('syncCount', 0);

$state = $this->updateStateFromCdbXml(
$state,
(string) $eventCreatedFromCdbXml->getEventXmlString(),
(string) $eventCreatedFromCdbXml->getCdbXmlNamespaceUri()
);

$this->triggerSyncWhenConditionsAreMet($state);

return $state;
}

/**
* @param EventUpdatedFromUDB2 $eventUpdatedFromUDB2
* @param State $state
Expand All @@ -190,24 +164,6 @@ public function handleEventUpdatedFromUDB2(EventUpdatedFromUDB2 $eventUpdatedFro
return $state;
}

/**
* @param EventUpdatedFromCdbXml $eventUpdatedFromCdbXml
* @param State $state
* @return State
*/
public function handleEventUpdatedFromCdbXml(EventUpdatedFromCdbXml $eventUpdatedFromCdbXml, State $state)
{
$state = $this->updateStateFromCdbXml(
$state,
(string) $eventUpdatedFromCdbXml->getEventXmlString(),
(string) $eventUpdatedFromCdbXml->getCdbXmlNamespaceUri()
);

$this->triggerSyncWhenConditionsAreMet($state);

return $state;
}

/**
* @param OrganizerUpdated $organizerUpdated
* @param State $state
Expand Down
50 changes: 10 additions & 40 deletions tests/Specification/IsUiTPASOrganizerAccordingToJSONLDTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -130,24 +130,12 @@ public function it_returns_true_for_organizers_with_an_exact_uitpas_label_match(
$expectedLabelLogContext = $expectedLogContext + [
'uitpas_labels' => $this->uitpasLabels->asArray(),
'extracted_organizer_labels' => [
(object) [
'uuid' => '71945e50-2158-4922-94d2-fd1da6286b51',
'name' => 'foo',
],
(object) [
'uuid' => '12dabcf9-9598-4e8d-8642-c1af42698875',
'name' => 'UiTPAS',
],
(object) [
'uuid' => '9fac1824-8c65-4d0e-845f-9bef03fa05a1',
'name' => 'bar',
],
'foo',
'UiTPAS',
'bar',
],
'organizer_uitpas_labels' => [
(object) [
'uuid' => '12dabcf9-9598-4e8d-8642-c1af42698875',
'name' => 'UiTPAS',
],
'UiTPAS',
],
];

Expand Down Expand Up @@ -175,24 +163,12 @@ public function it_returns_true_for_organizers_with_a_case_insensitive_uitpas_la
$expectedLabelLogContext = $expectedLogContext + [
'uitpas_labels' => $this->uitpasLabels->asArray(),
'extracted_organizer_labels' => [
(object) [
'uuid' => '71945e50-2158-4922-94d2-fd1da6286b51',
'name' => 'foo',
],
(object) [
'uuid' => '12dabcf9-9598-4e8d-8642-c1af42698875',
'name' => 'uitpas',
],
(object) [
'uuid' => '9fac1824-8c65-4d0e-845f-9bef03fa05a1',
'name' => 'bar',
],
'foo',
'uitpas',
'bar',
],
'organizer_uitpas_labels' => [
(object) [
'uuid' => '12dabcf9-9598-4e8d-8642-c1af42698875',
'name' => 'uitpas',
],
'uitpas',
],
];

Expand Down Expand Up @@ -220,14 +196,8 @@ public function it_returns_false_for_organizers_without_uitpas_label()
$expectedLabelLogContext = $expectedLogContext + [
'uitpas_labels' => $this->uitpasLabels->asArray(),
'extracted_organizer_labels' => [
(object) [
'uuid' => '71945e50-2158-4922-94d2-fd1da6286b51',
'name' => 'foo',
],
(object) [
'uuid' => '9fac1824-8c65-4d0e-845f-9bef03fa05a1',
'name' => 'bar',
],
'foo',
'bar',
],
'organizer_uitpas_labels' => [],
];
Expand Down
15 changes: 3 additions & 12 deletions tests/Specification/samples/organizer-with-lowercase-uitpas-label
Original file line number Diff line number Diff line change
@@ -1,17 +1,8 @@
{
"@id": "http://example.com/organizers/dba1c53d-582c-4081-a78c-b4848f9e3653",
"labels": [
{
"uuid": "71945e50-2158-4922-94d2-fd1da6286b51",
"name": "foo"
},
{
"uuid": "12dabcf9-9598-4e8d-8642-c1af42698875",
"name": "uitpas"
},
{
"uuid": "9fac1824-8c65-4d0e-845f-9bef03fa05a1",
"name": "bar"
}
"foo",
"uitpas",
"bar"
]
}
10 changes: 2 additions & 8 deletions tests/Specification/samples/organizer-with-syntax-error
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
{
"@id": "http://example.com/organizers/dba1c53d-582c-4081-a78c-b4848f9e3653",
"labels": [
{
"uuid": "71945e50-2158-4922-94d2-fd1da6286b51",
"name": "foo"
},
{
"uuid": "12dabcf9-9598-4e8d-8642-c1af42698875",
"name": "uitpas"
},
"foo",
"uitpas",
15 changes: 3 additions & 12 deletions tests/Specification/samples/organizer-with-uitpas-label
Original file line number Diff line number Diff line change
@@ -1,17 +1,8 @@
{
"@id": "http://example.com/organizers/dba1c53d-582c-4081-a78c-b4848f9e3653",
"labels": [
{
"uuid": "71945e50-2158-4922-94d2-fd1da6286b51",
"name": "foo"
},
{
"uuid": "12dabcf9-9598-4e8d-8642-c1af42698875",
"name": "UiTPAS"
},
{
"uuid": "9fac1824-8c65-4d0e-845f-9bef03fa05a1",
"name": "bar"
}
"foo",
"UiTPAS",
"bar"
]
}
10 changes: 2 additions & 8 deletions tests/Specification/samples/organizer-without-uitpas-label
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
{
"@id": "http://example.com/organizers/dba1c53d-582c-4081-a78c-b4848f9e3653",
"labels": [
{
"uuid": "71945e50-2158-4922-94d2-fd1da6286b51",
"name": "foo"
},
{
"uuid": "9fac1824-8c65-4d0e-845f-9bef03fa05a1",
"name": "bar"
}
"foo",
"bar"
]
}
Loading

0 comments on commit 9745191

Please sign in to comment.