All files / ee/app/assets/javascripts/approvals/stores/modules/mr_edit mutations.js

18.18% Statements 6/33
10.52% Branches 2/19
18.18% Functions 2/11
20% Lines 6/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92              1x   1x 1x                                                                                                             4x   4x       4x                                        
import { RULE_TYPE_ANY_APPROVER } from '../../../constants';
import base from '../base/mutations';
import * as types from './mutation_types';
 
export default {
  ...base,
  [types.DELETE_RULE](state, id) {
    const idx = state.rules.findIndex((x) => x.id === id);
 
    Eif (idx < 0) {
      return;
    }
 
    const rule = state.rules[idx];
 
    // Keep track of rules we need to submit that are deleted
    if (!rule.isNew) {
      state.rulesToDelete.push(rule.id);
    }
 
    state.rules.splice(idx, 1);
  },
  [types.DELETE_ANY_RULE](state) {
    const [newRule, oldRule] = state.rules;
 
    if (!newRule && !oldRule) {
      return;
    }
 
    if (!oldRule.isNew) {
      state.rulesToDelete.push(oldRule.id);
    }
 
    state.rules = [newRule];
  },
  [types.PUT_RULE](state, { id, ...newRule }) {
    const idx = state.rules.findIndex((x) => x.id === id);
 
    if (idx < 0) {
      return;
    }
 
    const rule = { ...state.rules[idx], ...newRule };
    state.rules.splice(idx, 1, rule);
  },
  [types.POST_RULE](state, rule) {
    const [firstRule] = state.rules;
 
    if (
      firstRule &&
      firstRule.ruleType === RULE_TYPE_ANY_APPROVER &&
      rule.ruleType === RULE_TYPE_ANY_APPROVER
    ) {
      state.rules = [rule];
    } else {
      state.rules.push(rule);
    }
  },
  [types.POST_REGULAR_RULE](state, rule) {
    state.rules.unshift(rule);
  },
  [types.SET_FALLBACK_RULE](state, fallback) {
    state.fallbackApprovalsRequired = fallback.approvalsRequired;
  },
  [types.SET_EMPTY_RULE](state) {
    const anyRule = state.initialRules.find((rule) => rule.ruleType === RULE_TYPE_ANY_APPROVER);
 
    Iif (anyRule) {
      state.rules = [anyRule];
      state.rulesToDelete = [];
    } else {
      state.rules = [
        {
          id: null,
          name: '',
          approvalsRequired: 0,
          minApprovalsRequired: 0,
          approvers: [],
          containsHiddenGroups: false,
          users: [],
          groups: [],
          ruleType: RULE_TYPE_ANY_APPROVER,
          isNew: true,
        },
      ];
    }
  },
  [types.SET_TARGET_BRANCH](state, targetBranch) {
    state.targetBranch = targetBranch;
  },
};