How to write unit test with Jasmine-Karma in Angular?

Viewed 18

I have two functions I need to write unit test for it. I tried some test but I don't know to check whether my variable value is changing according to the condition.

ifAllowed: Boolean = false;

checkRoleModifierExists() {
    if (this.userDetails && this.userDetails.roles) {
      for (
        let userRolesIndex = 0;
        userRolesIndex < this.userDetails.roles.length;
        userRolesIndex++
      ) {
        if (this.userDetails.roles[userRolesIndex] === 'ROLE_ADMIN_SUPPORT' &&
          this.roleModifiers.body &&
          this.roleModifiers.body.length) {
            this.ifAllowed = this.ifAllowedFun();
        }
        if (this.userDetails.roles[userRolesIndex] === 'ROLE_ADMIN') {
          this.ifAllowed = true;
        }
      }
    }
  }

ifAllowedFun() {
    let ifRole = false;
    for (const roleModifier of this.roleModifiers.body) {
      if (roleModifier === 'PC-ABC') {
        ifRole = true;
      }
    }
    return ifRole;
  }

this is test which I tried but it's failing.

it('should check roles modifiers ', () => {
    component.ifAllowed = false;
    component.ngOnInit();
    spyOn(component, 'checkRoleModifierExists').and.callThrough();
    
    component.userDetails = {
      roles: ''
    };
    component.userDetails.roles = [ 'ROLE_ADMIN_SUPPORT' ];
    component.roleModifiers = {
      body: [ 'PC-ABC' ]
    };
    component.checkRoleModifierExists();
    expect(component.ifAllowed).toEqual(true);
    
  });
0 Answers
Related