Explorar o código

minor features & test

Vincent GUFFON %!s(int64=3) %!d(string=hai) anos
pai
achega
96cc9c5d41

+ 2 - 2
components/Layout/Alert/Content.vue

@@ -14,10 +14,10 @@
   >
     <ul v-if="alert.messages.length > 1">
        <li v-for="message in alert.messages">
-        {{ message }}
+        {{ $t(message) }}
       </li>
     </ul>
-    <span v-else>{{alert.messages[0]}}</span>
+    <span v-else>{{$t(alert.messages[0])}}</span>
   </v-alert>
 </template>
 

+ 2 - 2
components/Ui/Button/Delete.vue

@@ -44,14 +44,14 @@ export default defineComponent({
     }
   },
   setup (props) {
-    const { $dataDeleter, store, app: { i18n } } = useContext()
+    const { $dataDeleter, store } = useContext()
     const showDialog: Ref<boolean> = ref(false)
     const page = new Page(store)
 
     const deleteItem = async () => {
       try {
         await $dataDeleter.invoke(props.deleteArgs)
-        page.addAlerts(TYPE_ALERT.SUCCESS, [i18n.t('deleteSuccess') as string])
+        page.addAlerts(TYPE_ALERT.SUCCESS, ['deleteSuccess'])
       } catch (error) {
         page.addAlerts(TYPE_ALERT.ALERT, [error.message])
       }

+ 6 - 1
components/Ui/Card.vue

@@ -22,7 +22,7 @@ Container de type Card
           <v-icon>mdi-pencil</v-icon>
         </NuxtLink>
       </v-btn>
-      <UiButtonDelete :delete-args="args" />
+      <UiButtonDelete v-if="canDelete" :delete-args="args" />
       <slot name="card.action" />
     </v-card-actions>
   </v-card>
@@ -46,6 +46,11 @@ export default defineComponent({
     id: {
       type: Number,
       required: true
+    },
+    canDelete:{
+      type: Boolean,
+      required: false,
+      default: true
     }
   },
   setup (props) {

+ 3 - 2
components/Ui/Input/Email.vue

@@ -5,7 +5,7 @@ Champs de saisie de type Text dédié à la saisie d'emails
 <template>
   <UiInputText
     :data="data"
-    :label="label"
+    :label="$t(label_field)"
     :readonly="readonly"
     :error="error || !!violation"
     :error-messages="errorMessage || violation ? $t(violation) : ''"
@@ -23,7 +23,7 @@ export default defineComponent({
     label: {
       type: String,
       required: false,
-      default: ''
+      default: null
     },
     field: {
       type: String,
@@ -70,6 +70,7 @@ export default defineComponent({
     }
 
     return {
+      label_field: props.label ?? props.field,
       rules,
       violation,
       onChange

+ 20 - 0
composables/data/useDataUtils.ts

@@ -12,6 +12,25 @@ import {Store} from "vuex";
  * Composable Classe qui va récupérer les Accesses suivant des critères de recherche
  */
 export function useDataUtils($dataProvider: DataProvider){
+  /**
+   * recherche la collection d'item et alimente le dataprovider
+   * @param model
+   * @param rootModel
+   * @param rootId
+   */
+  function getCollection(model: typeof Model, rootModel?: typeof Model, rootId?: number){
+    const {fetchState} = useFetch(async () => {
+      await $dataProvider.invoke({
+        type: QUERY_TYPE.MODEL,
+        model: model,
+        rootModel: rootModel,
+        rootId: rootId
+      })
+    })
+    return {
+      fetchState
+    }
+  }
 
   /**
    * recherche l'item a éditer et alimente le dataprovider
@@ -58,6 +77,7 @@ export function useDataUtils($dataProvider: DataProvider){
   }
 
   return {
+    getCollection,
     getItemToEdit,
     createItem
   }

+ 0 - 1
services/data/baseDataManager.ts

@@ -3,7 +3,6 @@ import {DataManager, DataPersisterArgs, DataProviderArgs, UrlArgs} from '~/types
 import Connection from '~/services/connection/connection'
 import Hookable from '~/services/data/hookable'
 import { HTTP_METHOD, QUERY_TYPE } from '~/types/enums'
-import ApiError from '~/services/exception/apiError'
 
 /**
  * Base class for data providers, persisters or deleters

+ 5 - 3
tests/unit/composables/data/useDataUtils.spec.ts

@@ -3,6 +3,7 @@ import {useDataUtils} from "~/composables/data/useDataUtils";
 import {Organization} from "~/models/Organization/Organization";
 import {Ref, ref} from "@nuxtjs/composition-api";
 import {mountComposition} from "~/tests/unit/Helpers";
+import {useForm} from "~/composables/form/useForm";
 jest.mock('~/services/data/dataProvider')
 
 
@@ -23,8 +24,9 @@ describe('getItemToEdit()', () => {
   })
 
 
-  it('should throw an error if route id is empty', () => {
-    route.value = {params: 'foo'}
-    expect(() => useDataUtilsMount.getItemToEdit(route, Organization)).toThrowError('id must be exist')
+  it('should throw an error if id is empty', () => {
+    const component = mountComposition(() => {
+      expect(() => useDataUtilsMount.getItemToEdit(null, Organization)).toThrowError('id must be exist')
+    });
   })
 })