All files / app/search/presenter/pages/github-search/states github-search-data.state.ts

100% Statements 8/8
100% Branches 0/0
100% Functions 5/5
100% Lines 8/8

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                1x 1x 1x       13x               5x               28x               21x 21x      
import { GithubSearchResult } from 'src/app/search/domain/entities/github-search-result';
 
export class GithubSearchDataState {
  hasError: boolean;
  isLoading: boolean;
  data!: GithubSearchResult;
 
  constructor(hasError: boolean, isLoading: boolean, data: GithubSearchResult) {
    this.hasError = hasError;
    this.isLoading = isLoading;
    this.data = data;
  }
 
  public static loading(data: GithubSearchResult): GithubSearchDataState {
    return {
      hasError: false,
      isLoading: true,
      data,
    };
  }
 
  public static error(data: GithubSearchResult): GithubSearchDataState {
    return {
      hasError: true,
      isLoading: false,
      data,
    };
  }
 
  public static success(data: GithubSearchResult): GithubSearchDataState {
    return {
      hasError: false,
      isLoading: false,
      data,
    };
  }
 
  public static empty(): GithubSearchDataState {
    const data = GithubSearchResult.empty();
    return GithubSearchDataState.success(data);
  }
}