/** * Test event types in UI. */ function testEventType() { $web_user = $this->drupalCreateUser(['administer event types', 'access administration pages']); $this->drupalLogin($web_user); // Create and delete the testing event type. $event_bundle = $this->drupalCreateContentType(); $event_type = $this->createEventType($event_bundle); $this->drupalGet('admin/structure/rng/event_types/manage/' . $event_type->id() . '/edit'); $event_type->delete(); $event_bundle->delete(); // Event types button on admin. $this->drupalGet('admin/structure'); $this->assertLinkByHref(Url::fromRoute('rng.event_type.overview')->toString()); $this->assertRaw('Manage which entity bundles are designated as events.', 'Button shows in administration.'); // No events. $this->assertEqual(0, count(EventType::loadMultiple()), 'There are no event type entities.'); $this->drupalGet('admin/structure/rng/event_types'); $this->assertRaw('No event types found.', 'Event Type list is empty'); // There are no courier contexts. $this->assertEqual(0, count(CourierContext::loadMultiple()), 'There are no courier context entities.'); // Local action. $this->assertLinkByHref(Url::fromRoute('entity.event_type.add')->toString()); // Add. $t_args = ['%label' => 'node.event']; $edit = []; $this->drupalPostForm('admin/structure/rng/event_types/add', $edit, t('Save')); /** @var \Drupal\node\NodeTypeInterface $node_type */ $node_type = NodeType::load('event'); $this->assertEqual(1, count(EventType::loadMultiple()), 'Event type exists in database.'); $this->assertRaw(t('The content type <a href=":url">%label</a> has been added.', ['%label' => $node_type->label(), ':url' => $node_type->toUrl()->toString()]), 'Node was created for Event Type'); $this->assertRaw(t('%label event type added.', $t_args), 'Event Type created'); // Courier context created? $this->assertTrue(CourierContext::load('rng_registration_node'), 'Courier context entity created for this event type\' entity type.'); // Event type list. $this->assertUrl('admin/structure/rng/event_types', [], 'Browser was redirected to event type list.'); $this->assertRaw('<td>Content: event</td>', 'Event Type shows in list'); $options = ['node_type' => 'event']; $this->assertLinkByHref(Url::fromRoute("entity.node.field_ui_fields", $options)->toString()); // Edit form. $edit = []; $this->drupalPostForm('admin/structure/rng/event_types/manage/node.event/edit', $edit, t('Save')); $this->assertRaw(t('%label event type updated.', $t_args), 'Event Type edit form saved'); // Delete form. $this->drupalGet('admin/structure/rng/event_types/manage/node.event/delete'); $this->assertRaw('Are you sure you want to delete event type node.event?', 'Event Type delete form rendered.'); $this->drupalPostForm('admin/structure/rng/event_types/manage/node.event/delete', [], t('Delete')); $this->assertRaw(t('Event type %label was deleted.', $t_args), 'Event Type delete form saved'); $this->assertEqual(0, count(EventType::loadMultiple()), 'Event type deleted from database.'); // @todo: ensure conditional on form omits node/existing radios // @todo create event type with custom entity }
/** * {@inheritdoc} */ static function courierContextCC($entity_type, $operation) { $event_types = \Drupal::service('rng.event_manager')->eventTypeWithEntityType($entity_type); if (!count($event_types)) { $courier_context = CourierContext::load('rng_registration_' . $entity_type); if ($courier_context) { if ($operation == 'delete') { $courier_context->delete(); } } else { if ($operation == 'create') { $entity_type_info = \Drupal::entityManager()->getDefinition($entity_type); $courier_context = CourierContext::create(['label' => t('Event (@entity_type): Registration', ['@entity_type' => $entity_type_info->getLabel()]), 'id' => 'rng_registration_' . $entity_type, 'tokens' => [$entity_type, 'registration']]); $courier_context->save(); } } } }