167 lines
7.5 KiB
JavaScript
167 lines
7.5 KiB
JavaScript
import events from 'test_fixtures/controller/users/activity.json';
|
|
import {
|
|
EVENT_TYPE_APPROVED,
|
|
EVENT_TYPE_EXPIRED,
|
|
EVENT_TYPE_JOINED,
|
|
EVENT_TYPE_LEFT,
|
|
EVENT_TYPE_PUSHED,
|
|
EVENT_TYPE_PRIVATE,
|
|
EVENT_TYPE_MERGED,
|
|
EVENT_TYPE_CLOSED,
|
|
EVENT_TYPE_REOPENED,
|
|
EVENT_TYPE_COMMENTED,
|
|
EVENT_TYPE_UPDATED,
|
|
EVENT_TYPE_DESTROYED,
|
|
PUSH_EVENT_REF_TYPE_BRANCH,
|
|
PUSH_EVENT_REF_TYPE_TAG,
|
|
EVENT_TYPE_CREATED,
|
|
TARGET_TYPE_ISSUE,
|
|
TARGET_TYPE_MILESTONE,
|
|
TARGET_TYPE_MERGE_REQUEST,
|
|
TARGET_TYPE_WIKI,
|
|
TARGET_TYPE_DESIGN,
|
|
WORK_ITEM_ISSUE_TYPE_ISSUE,
|
|
WORK_ITEM_ISSUE_TYPE_TASK,
|
|
WORK_ITEM_ISSUE_TYPE_INCIDENT,
|
|
RESOURCE_PARENT_TYPE_PROJECT,
|
|
} from '~/contribution_events/constants';
|
|
|
|
import {
|
|
ISSUE_NOTEABLE_TYPE,
|
|
MERGE_REQUEST_NOTEABLE_TYPE,
|
|
SNIPPET_NOTEABLE_TYPE,
|
|
DESIGN_NOTEABLE_TYPE,
|
|
COMMIT_NOTEABLE_TYPE,
|
|
} from '~/notes/constants';
|
|
|
|
// Private finders
|
|
const findEventByAction = (action) => () => events.find((event) => event.action === action);
|
|
const findEventByActionAndTargetType = (action, targetType) => () =>
|
|
events.find((event) => event.action === action && event.target?.type === targetType);
|
|
const findEventByActionAndIssueType = (action, issueType) => () =>
|
|
events.find((event) => event.action === action && event.target.issue_type === issueType);
|
|
const findPushEvent =
|
|
({
|
|
isNew = false,
|
|
isRemoved = false,
|
|
refType = PUSH_EVENT_REF_TYPE_BRANCH,
|
|
commitCount = 1,
|
|
} = {}) =>
|
|
() =>
|
|
events.find(
|
|
({ action, ref, commit }) =>
|
|
action === EVENT_TYPE_PUSHED &&
|
|
ref.is_new === isNew &&
|
|
ref.is_removed === isRemoved &&
|
|
ref.type === refType &&
|
|
commit.count === commitCount,
|
|
);
|
|
const findEventByActionAndNoteableType = (action, noteableType) => () =>
|
|
events.find((event) => event.action === action && event.noteable?.type === noteableType);
|
|
const findCommentedSnippet = (resourceParentType) => () =>
|
|
events.find(
|
|
(event) =>
|
|
event.action === EVENT_TYPE_COMMENTED &&
|
|
event.noteable?.type === SNIPPET_NOTEABLE_TYPE &&
|
|
event.resource_parent?.type === resourceParentType,
|
|
);
|
|
const findUpdatedEvent = (targetType) =>
|
|
findEventByActionAndTargetType(EVENT_TYPE_UPDATED, targetType);
|
|
const findDestroyedEvent = (targetType) =>
|
|
findEventByActionAndTargetType(EVENT_TYPE_DESTROYED, targetType);
|
|
|
|
// Finders that are used by EE
|
|
export const findCreatedEvent = (targetType) =>
|
|
findEventByActionAndTargetType(EVENT_TYPE_CREATED, targetType);
|
|
export const findWorkItemCreatedEvent = (issueType) =>
|
|
findEventByActionAndIssueType(EVENT_TYPE_CREATED, issueType);
|
|
export const findClosedEvent = (targetType) =>
|
|
findEventByActionAndTargetType(EVENT_TYPE_CREATED, targetType);
|
|
export const findWorkItemClosedEvent = (issueType) =>
|
|
findEventByActionAndIssueType(EVENT_TYPE_CLOSED, issueType);
|
|
export const findReopenedEvent = (targetType) =>
|
|
findEventByActionAndTargetType(EVENT_TYPE_REOPENED, targetType);
|
|
export const findWorkItemReopenedEvent = (issueType) =>
|
|
findEventByActionAndIssueType(EVENT_TYPE_REOPENED, issueType);
|
|
export const findCommentedEvent = (noteableType) =>
|
|
findEventByActionAndNoteableType(EVENT_TYPE_COMMENTED, noteableType);
|
|
|
|
export const eventApproved = findEventByAction(EVENT_TYPE_APPROVED);
|
|
|
|
export const eventExpired = findEventByAction(EVENT_TYPE_EXPIRED);
|
|
|
|
export const eventJoined = findEventByAction(EVENT_TYPE_JOINED);
|
|
|
|
export const eventLeft = findEventByAction(EVENT_TYPE_LEFT);
|
|
|
|
export const eventMerged = findEventByAction(EVENT_TYPE_MERGED);
|
|
|
|
export const eventPushedNewBranch = findPushEvent({ isNew: true });
|
|
export const eventPushedNewTag = findPushEvent({ isNew: true, refType: PUSH_EVENT_REF_TYPE_TAG });
|
|
export const eventPushedBranch = findPushEvent();
|
|
export const eventPushedTag = findPushEvent({ refType: PUSH_EVENT_REF_TYPE_TAG });
|
|
export const eventPushedRemovedBranch = findPushEvent({ isRemoved: true });
|
|
export const eventPushedRemovedTag = findPushEvent({
|
|
isRemoved: true,
|
|
refType: PUSH_EVENT_REF_TYPE_TAG,
|
|
});
|
|
export const eventBulkPushedBranch = findPushEvent({ commitCount: 5 });
|
|
|
|
export const eventPrivate = () => ({ ...events[0], action: EVENT_TYPE_PRIVATE });
|
|
|
|
export const eventCreated = findEventByAction(EVENT_TYPE_CREATED);
|
|
export const eventProjectCreated = findCreatedEvent(null);
|
|
export const eventMilestoneCreated = findCreatedEvent(TARGET_TYPE_MILESTONE);
|
|
export const eventIssueCreated = findCreatedEvent(TARGET_TYPE_ISSUE);
|
|
export const eventMergeRequestCreated = findCreatedEvent(TARGET_TYPE_MERGE_REQUEST);
|
|
export const eventWikiPageCreated = findCreatedEvent(TARGET_TYPE_WIKI);
|
|
export const eventDesignCreated = findCreatedEvent(TARGET_TYPE_DESIGN);
|
|
export const eventTaskCreated = findWorkItemCreatedEvent(WORK_ITEM_ISSUE_TYPE_TASK);
|
|
export const eventIncidentCreated = findWorkItemCreatedEvent(WORK_ITEM_ISSUE_TYPE_INCIDENT);
|
|
|
|
export const eventClosed = findEventByAction(EVENT_TYPE_CLOSED);
|
|
export const eventMilestoneClosed = findClosedEvent(TARGET_TYPE_MILESTONE);
|
|
export const eventIssueClosed = findClosedEvent(TARGET_TYPE_ISSUE);
|
|
export const eventMergeRequestClosed = findClosedEvent(TARGET_TYPE_MERGE_REQUEST);
|
|
export const eventWikiPageClosed = findClosedEvent(TARGET_TYPE_WIKI);
|
|
export const eventDesignClosed = findClosedEvent(TARGET_TYPE_DESIGN);
|
|
export const eventTaskClosed = findWorkItemClosedEvent(WORK_ITEM_ISSUE_TYPE_TASK);
|
|
export const eventIncidentClosed = findWorkItemClosedEvent(WORK_ITEM_ISSUE_TYPE_INCIDENT);
|
|
|
|
export const eventReopened = findEventByAction(EVENT_TYPE_REOPENED);
|
|
export const eventMilestoneReopened = findReopenedEvent(TARGET_TYPE_MILESTONE);
|
|
export const eventMergeRequestReopened = findReopenedEvent(TARGET_TYPE_MERGE_REQUEST);
|
|
export const eventWikiPageReopened = findReopenedEvent(TARGET_TYPE_WIKI);
|
|
export const eventDesignReopened = findReopenedEvent(TARGET_TYPE_DESIGN);
|
|
export const eventIssueReopened = findWorkItemReopenedEvent(WORK_ITEM_ISSUE_TYPE_ISSUE);
|
|
export const eventTaskReopened = findWorkItemReopenedEvent(WORK_ITEM_ISSUE_TYPE_TASK);
|
|
export const eventIncidentReopened = findWorkItemReopenedEvent(WORK_ITEM_ISSUE_TYPE_INCIDENT);
|
|
|
|
export const eventCommented = findEventByAction(EVENT_TYPE_COMMENTED);
|
|
export const eventCommentedIssue = findCommentedEvent(ISSUE_NOTEABLE_TYPE);
|
|
export const eventCommentedMergeRequest = findCommentedEvent(MERGE_REQUEST_NOTEABLE_TYPE);
|
|
export const eventCommentedSnippet = findCommentedEvent(SNIPPET_NOTEABLE_TYPE);
|
|
export const eventCommentedProjectSnippet = findCommentedSnippet(RESOURCE_PARENT_TYPE_PROJECT);
|
|
export const eventCommentedPersonalSnippet = findCommentedSnippet(null);
|
|
export const eventCommentedDesign = findCommentedEvent(DESIGN_NOTEABLE_TYPE);
|
|
// Fixtures do not work for commits because they are not written to the database.
|
|
// Manually creating a commented commit event as a workaround.
|
|
export const eventCommentedCommit = () => ({
|
|
...eventCommented(),
|
|
noteable: {
|
|
type: COMMIT_NOTEABLE_TYPE,
|
|
reference_link_text: '83c6aa31',
|
|
web_url: 'http://localhost/group3/project-1/-/commit/83c6aa31482b9076531ed3a880e75627fd6b335c',
|
|
first_line_in_markdown: '\u003cp\u003eMy title 9\u003c/p\u003e',
|
|
},
|
|
});
|
|
|
|
export const eventUpdated = findEventByAction(EVENT_TYPE_UPDATED);
|
|
export const eventDesignUpdated = findUpdatedEvent(TARGET_TYPE_DESIGN);
|
|
export const eventWikiPageUpdated = findUpdatedEvent(TARGET_TYPE_WIKI);
|
|
|
|
export const eventDestroyed = findEventByAction(EVENT_TYPE_DESTROYED);
|
|
export const eventDesignDestroyed = findDestroyedEvent(TARGET_TYPE_DESIGN);
|
|
export const eventWikiPageDestroyed = findDestroyedEvent(TARGET_TYPE_WIKI);
|
|
export const eventMilestoneDestroyed = findDestroyedEvent(TARGET_TYPE_MILESTONE);
|