All files / ee/app/assets/javascripts/audit_events/components/tokens project_token.vue

100% Statements 11/11
100% Branches 0/0
100% Functions 10/10
100% Lines 11/11

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  11x 11x 11x                 16x     2x     8x     15x     8x     1x 2x           82x                
<script>
import Api from '~/api';
import { isValidEntityId } from '../../token_utils';
import AuditFilterToken from './shared/audit_filter_token.vue';
 
export default {
  components: {
    AuditFilterToken,
  },
  inheritAttrs: false,
  tokenMethods: {
    fetchItem(id) {
      return Api.project(id).then((res) => res.data);
    },
    fetchSuggestions(term) {
      return Api.projects(term, { membership: false }).then((res) => res.data);
    },
    getItemName({ name }) {
      return name;
    },
    getSuggestionValue({ id }) {
      return id.toString();
    },
    isValidIdentifier(id) {
      return isValidEntityId(id);
    },
    findActiveItem(suggestions, id) {
      const parsedId = parseInt(id, 10);
      return suggestions.find((p) => p.id === parsedId);
    },
  },
};
</script>
 
<template>
  <audit-filter-token v-bind="{ ...this.$attrs, ...this.$options.tokenMethods }" v-on="$listeners">
    <template #suggestion="{ item: project }">
      <p class="m-0">{{ project.name }}</p>
      <p class="m-0">{{ project.name_with_namespace }}</p>
    </template>
  </audit-filter-token>
</template>