All files / src/app/shared/services url-builder.service.ts

75.76% Statements 25/33
31.25% Branches 5/16
63.64% Functions 7/11
82.61% Lines 19/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 4115x   15x   15x 22x   15x 84x     337x 84x     165x 82x     162x 81x   15x       15x 1x   15x       15x     15x     15x  
import { Location } from '@angular/common';
 
import { URLVerbs } from '../constants/app.constants';
 
export class URLBuilderService {
  constructor(readonly base: string) {}
 
  private static concatURLSegments(segments: string[]): string {
    return segments.reduce(Location.joinWithSlash);
  }
 
  static buildURL(absolute: boolean, ...segments: string[]): string {
    return URLBuilderService.concatURLSegments([...(absolute ? ['/'] : []), ...segments]);
  }
 
  private getURL(verb: URLVerbs, Iabsolute = true, ...segments: string[]): string {
    return URLBuilderService.buildURL(absolute, this.base, verb, ...segments);
  }
 
  getCreate(Eabsolute = true): string {
    return this.getURL(URLVerbs.CREATE, absolute);
  }
  getDelete(absolute = true): string {
    return this.getURL(URLVerbs.DELETE, absolute);
  }
 
  getEdit(item: string, Eabsolute = true): string {
    return this.getURL(URLVerbs.EDIT, absolute, item);
  }
  getUpdate(item: string, absolute = true): string {
    return this.getURL(URLVerbs.UPDATE, absolute, item);
  }
 
  getAdd(absolute = true): string {
    return this.getURL(URLVerbs.ADD, absolute);
  }
  getRemove(absolute = true): string {
    return this.getURL(URLVerbs.REMOVE, absolute);
  }
}