workbench_moderation_migrate-1.0.0-alpha4/tests/src/Kernel/Plugin/migrate/source/WorkbenchModerationFlowTest.php

tests/src/Kernel/Plugin/migrate/source/WorkbenchModerationFlowTest.php
<?php

namespace Drupal\Tests\workbench_moderation_migrate\Kernel\Plugin\migrate\source;

use Drupal\Tests\migmag\Kernel\MigMagNativeMigrateSqlTestBase;

/**
 * Tests the 'workbench_moderation_flow' migrate source plugin.
 *
 * @covers \Drupal\workbench_moderation_migrate\Plugin\migrate\source\WorkbenchModerationFlow
 * @group workbench_moderation_migrate
 */
class WorkbenchModerationFlowTest extends MigMagNativeMigrateSqlTestBase {

  /**
   * {@inheritdoc}
   */
  public static $modules = [
    'migrate_drupal',
    'workbench_moderation_migrate',
  ];

  /**
   * {@inheritdoc}
   */
  public function providerSource() {
    $expected_transitions = [
      [
        'id' => '1',
        'name' => 'Single edit and ready for review',
        'from_name' => 'published',
        'to_name' => 'needs_review',
      ],
      [
        'id' => '6',
        'name' => 'Submit for Review',
        'from_name' => 'draft',
        'to_name' => 'needs_review',
      ],
      [
        'id' => '11',
        'name' => 'Edited by Admin or Publisher',
        'from_name' => 'draft',
        'to_name' => 'published',
      ],
      [
        'id' => '16',
        'name' => 'Work in Progress',
        'from_name' => 'published',
        'to_name' => 'draft',
      ],
      [
        'id' => '21',
        'name' => 'Reviewed',
        'from_name' => 'draft',
        'to_name' => 'reviewed',
      ],
      [
        'id' => '26',
        'name' => 'Reviewed and ready for publication',
        'from_name' => 'reviewed',
        'to_name' => 'published',
      ],
      [
        'id' => '31',
        'name' => 'Needs more work',
        'from_name' => 'needs_review',
        'to_name' => 'draft',
      ],
      [
        'id' => '36',
        'name' => 'Unpublish',
        'from_name' => 'published',
        'to_name' => 'unpublished',
      ],
    ];
    $expected_states = [
      [
        'name' => 'draft',
        'label' => 'Draft',
        'description' => 'Work in progress',
        'weight' => '-10',
      ],
      [
        'name' => 'needs_review',
        'label' => 'Needs Review',
        'description' => 'Ready for moderation',
        'weight' => '-9',
      ],
      [
        'name' => 'published',
        'label' => 'Published',
        'description' => 'Make this version live',
        'weight' => '-7',
      ],
      [
        'name' => 'reviewed',
        'label' => 'Reviewed',
        'description' => 'Work has been reviewed',
        'weight' => '-8',
      ],
      [
        'name' => 'unpublished',
        'label' => 'Unpublished',
        'description' => 'Unpublish content',
        'weight' => '0',
      ],
    ];

    return [
      'No moderation states' => [
        'source' => [
          'system' => static::SYSTEM,
          'variable' => [
            [
              'name' => 'node_options_article',
              'value' => 'a:1:{i:0;s:8:"revision";}',
            ],
            [
              'name' => 'node_options_basic_page',
              'value' => 'a:1:{i:0;s:6:"status";}',
            ],
            [
              'name' => 'workbench_moderation_default_state_article',
              'value' => 's:5:"draft";',
            ],
            [
              'name' => 'workbench_moderation_default_state_basic_page',
              'value' => 's:5:"draft";',
            ],
          ],
          'node_type' => [
            ['type' => 'article'],
            ['type' => 'basic_page'],
          ],
          'workbench_moderation_states' => static::WORKBENCH_MODERATION_STATES,
          'workbench_moderation_transitions' => static::WORKBENCH_MODERATION_TRANSITIONS,
        ],
        'expected' => [],
      ],

      'Single moderation state' => [
        'source' => [
          'system' => static::SYSTEM,
          'variable' => [
            [
              'name' => 'node_options_article',
              'value' => 'a:1:{i:0;s:6:"status";}',
            ],
            [
              'name' => 'node_options_basic_page',
              'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
            ],
            [
              'name' => 'node_options_news',
              'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
            ],
            [
              'name' => 'workbench_moderation_default_state_article',
              'value' => 's:5:"draft";',
            ],
            [
              'name' => 'workbench_moderation_default_state_basic_page',
              'value' => 's:9:"published";',
            ],
            [
              'name' => 'workbench_moderation_default_state_news',
              'value' => 's:9:"published";',
            ],
          ],
          'node_type' => [
            ['type' => 'article'],
            ['type' => 'basic_page'],
            ['type' => 'news'],
          ],
          'workbench_moderation_states' => static::WORKBENCH_MODERATION_STATES,
          'workbench_moderation_transitions' => static::WORKBENCH_MODERATION_TRANSITIONS,
        ],
        'expected' => [
          [
            'value' => 's:9:"published";',
            'workbench_moderation_states' => $expected_states,
            'workbench_moderation_transitions' => $expected_transitions,
            'node_types' => [
              ['node_type' => 'basic_page'],
              ['node_type' => 'news'],
            ],
            'node_types_aggregated' => 'basic_page,news',
          ],
        ],
      ],

      'Missing and non-moderated node types' => [
        'source' => [
          'system' => static::SYSTEM,
          'variable' => array_merge(
            static::VARIABLE__NODE_OPTIONS,
            static::VARIABLE__WORKBENCH_MODERATION
          ),
          'node_type' => static::NODE_TYPE,
          'workbench_moderation_states' => static::WORKBENCH_MODERATION_STATES,
          'workbench_moderation_transitions' => static::WORKBENCH_MODERATION_TRANSITIONS,
        ],
        'expected' => [
          [
            'value' => 's:5:"draft";',
            'workbench_moderation_states' => $expected_states,
            'workbench_moderation_transitions' => $expected_transitions,
            'node_types' => [
              ['node_type' => 'book'],
              ['node_type' => 'event_calendar'],
              ['node_type' => 'memo'],
              ['node_type' => 'news'],
              ['node_type' => 'news_article'],
              ['node_type' => 'news_release'],
              ['node_type' => 'page'],
              ['node_type' => 'reports_and_presentations'],
              ['node_type' => 'rule'],
            ],
            'node_types_aggregated' => 'book,event_calendar,memo,news,news_article,news_release,page,reports_and_presentations,rule',
          ],
          [
            'value' => 's:9:"published";',
            'workbench_moderation_states' => $expected_states,
            'workbench_moderation_transitions' => $expected_transitions,
            'node_types' => [
              ['node_type' => 'form'],
              ['node_type' => 'psychiatric_formulary_drugs'],
            ],
            'node_types_aggregated' => 'form,psychiatric_formulary_drugs',
          ],
        ],
        'count' => 2,
        'config' => [],
      ],
    ];
  }

  /**
   * Records of the source site's system table.
   *
   * @const array[]
   */
  const SYSTEM = [
    [
      'name' => 'workbench_moderation',
      'schema_version' => 7001,
      'type' => 'module',
      'status' => 1,
    ],
  ];

  /**
   * Node option variable records of the source site's variable table.
   *
   * @const array[]
   */
  const VARIABLE__NODE_OPTIONS = [
    [
      'name' => 'node_options_article',
      'value' => 'a:3:{i:0;s:7:"promote";i:1;s:10:"moderation";i:2;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_blog_entry',
      'value' => 'a:1:{i:0;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_book',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_bulletins',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_circulars',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_contract',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_cta_description',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_document',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_event',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_event_calendar',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_external_video',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_faq',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_filedepot_folder',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_form',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_gallery',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_homepage_carousel',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_homepage_icons',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_meetings',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_memo',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_news',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_news_article',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_news_release',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_oca',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_office_closure',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_page',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_press_release',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_profile',
      'value' => 'a:0:{}',
    ],
    [
      'name' => 'node_options_project',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_project_release',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_provider_alerts',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_provider_letters',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_provider_letters_rsc',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_psychiatric_formulary_drugs',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_reports_and_presentations',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_rule',
      'value' => 'a:2:{i:0;s:10:"moderation";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_scc_letters',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_schemaorg_event',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_sc_letters',
      'value' => 'a:1:{i:0;s:6:"status";}',
    ],
    [
      'name' => 'node_options_services',
      'value' => 'a:0:{}',
    ],
    [
      'name' => 'node_options_site_page',
      'value' => 'a:0:{}',
    ],
    [
      'name' => 'node_options_slider_content',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
    [
      'name' => 'node_options_tableau',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:8:"revision";}',
    ],
    [
      'name' => 'node_options_testimonials',
      'value' => 'a:2:{i:0;s:6:"status";i:1;s:7:"promote";}',
    ],
  ];

  /**
   * Workbench Moderation variable records of the source site's variable table.
   *
   * @const array[]
   */
  const VARIABLE__WORKBENCH_MODERATION = [
    [
      'name' => 'workbench_moderation_default_state_article',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_blog_entry',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_book',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_bulletins',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_circulars',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_contract',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_cta_description',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_document',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_event',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_event_calendar',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_external_video',
      'value' => 's:0:"";',
    ],
    [
      'name' => 'workbench_moderation_default_state_faq',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_form',
      'value' => 's:9:"published";',
    ],
    [
      'name' => 'workbench_moderation_default_state_homepage_icons',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_meetings',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_memo',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_news',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_news_article',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_news_release',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_oca',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_office_closure',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_page',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_press_release',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_profile',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_provider_alerts',
      'value' => 's:0:"";',
    ],
    [
      'name' => 'workbench_moderation_default_state_provider_letters',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_provider_letters_rsc',
      'value' => 's:0:"";',
    ],
    [
      'name' => 'workbench_moderation_default_state_psychiatric_formulary_drugs',
      'value' => 's:9:"published";',
    ],
    [
      'name' => 'workbench_moderation_default_state_reports_and_presentations',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_rule',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_scc_letters',
      'value' => 's:0:"";',
    ],
    [
      'name' => 'workbench_moderation_default_state_sc_letters',
      'value' => 's:0:"";',
    ],
    [
      'name' => 'workbench_moderation_default_state_services',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_site_page',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_slider_content',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_tableau',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_default_state_testimonials',
      'value' => 's:5:"draft";',
    ],
    [
      'name' => 'workbench_moderation_nodedraft_disabled',
      'value' => 'b:0;',
    ],
    [
      'name' => 'workbench_moderation_noderevision_disabled',
      'value' => 'b:0;',
    ],
  ];

  /**
   * Records of the source site's node_type table.
   *
   * @const array[]
   */
  const NODE_TYPE = [
    ['type' => 'blog'],
    ['type' => 'book'],
    ['type' => 'event_calendar'],
    ['type' => 'external_video'],
    ['type' => 'feed'],
    ['type' => 'feed_item'],
    ['type' => 'filedepot_folder'],
    ['type' => 'form'],
    ['type' => 'forum'],
    ['type' => 'homepage_icons'],
    ['type' => 'memo'],
    ['type' => 'news'],
    ['type' => 'news_article'],
    ['type' => 'news_release'],
    ['type' => 'node_block'],
    ['type' => 'page'],
    ['type' => 'panel'],
    ['type' => 'photo'],
    ['type' => 'poll'],
    ['type' => 'profile'],
    ['type' => 'provider_letters'],
    ['type' => 'psychiatric_formulary_drugs'],
    ['type' => 'reports_and_presentations'],
    ['type' => 'rule'],
    ['type' => 'tableau'],
    ['type' => 'webform'],
  ];

  /**
   * Moderation state records of the source workbench_moderation_state table.
   *
   * @const array[]
   */
  const WORKBENCH_MODERATION_STATES = [
    [
      'name' => 'draft',
      'label' => 'Draft',
      'description' => 'Work in progress',
      'weight' => -10,
    ],
    [
      'name' => 'needs_review',
      'label' => 'Needs Review',
      'description' => 'Ready for moderation',
      'weight' => -9,
    ],
    [
      'name' => 'published',
      'label' => 'Published',
      'description' => 'Make this version live',
      'weight' => -7,
    ],
    [
      'name' => 'reviewed',
      'label' => 'Reviewed',
      'description' => 'Work has been reviewed',
      'weight' => -8,
    ],
    [
      'name' => 'unpublished',
      'label' => 'Unpublished',
      'description' => 'Unpublish content',
      'weight' => 0,
    ],
  ];

  /**
   * State transitions of the source workbench_moderation_transitions table.
   *
   * @const array[]
   */
  const WORKBENCH_MODERATION_TRANSITIONS = [
    [
      'id' => 1,
      'name' => 'Single edit and ready for review',
      'from_name' => 'published',
      'to_name' => 'needs_review',
    ],
    [
      'id' => 6,
      'name' => 'Submit for Review',
      'from_name' => 'draft',
      'to_name' => 'needs_review',
    ],
    [
      'id' => 11,
      'name' => 'Edited by Admin or Publisher',
      'from_name' => 'draft',
      'to_name' => 'published',
    ],
    [
      'id' => 16,
      'name' => 'Work in Progress',
      'from_name' => 'published',
      'to_name' => 'draft',
    ],
    [
      'id' => 21,
      'name' => 'Reviewed',
      'from_name' => 'draft',
      'to_name' => 'reviewed',
    ],
    [
      'id' => 26,
      'name' => 'Reviewed and ready for publication',
      'from_name' => 'reviewed',
      'to_name' => 'published',
    ],
    [
      'id' => 31,
      'name' => 'Needs more work',
      'from_name' => 'needs_review',
      'to_name' => 'draft',
    ],
    [
      'id' => 36,
      'name' => 'Unpublish',
      'from_name' => 'published',
      'to_name' => 'unpublished',
    ],
  ];

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc