# All files / src/app/shared/api role.service.ts

100% Statements 25/25
66.67% Branches 2/3
100% Functions 9/9
100% Lines 23/23

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
    479x
    9x

    9x
    9x

    9x

    9x
    51x

    9x
    22x

    9x
    1x

    9x
    1x

    9x
    1x

    9x
    1x

    9x
    2x

    2x
    4x

    2x

    9x
     import { HttpClient } from '@angular/common/http';
    import { Injectable } from '@angular/core';

    import { Observable, of as observableOf } from 'rxjs';
    import { mergeMap } from 'rxjs/operators';

    import { RoleFormModel } from '../../core/auth/role-form/role-form.model';
    import { ApiModule } from './api.module';

    @Injectable({
      providedIn: ApiModule
    })
    export class RoleService {
      constructor(private http: HttpClient) {}

      list() {
        return this.http.get('api/role');
      }

      delete(role: string) {
        return this.http.delete(`api/role/${role}`);
      }

      get(name) {
        return this.http.get(`api/role/${name}`);
      }

      create(role: RoleFormModel) {
        return this.http.post(`api/role`, role);
      }

      update(role: RoleFormModel) {
        return this.http.put(`api/role/${role.name}`, role);
      }

      exists(name: string): Observable<boolean> {
        return this.list().pipe(
          mergeMap((roles: Array<RoleFormModel>) => {
            const exists = roles.some((currentRole: RoleFormModel) => {
              return currentRole.name === name;
            });
            return observableOf(exists);
          })
        );
      }
    }