All files / src/domain/Gender index.js

60% Statements 9/15
40% Branches 4/10
50% Functions 2/4
60% Lines 9/15
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    7x 7x 7x       10x 8x     2x       9x 8x     1x                                          
import is from 'is_js';
 
const MALE = 'male';
const FEMALE = 'female';
const UNKNOWN = null;
 
class Gender {
  static isMale(gender) {
    if (is.not.string(gender)) {
      return false;
    }
 
    return /^m(ale)?$/i.test(gender);
  }
 
  static isFemale(gender) {
    if (is.not.string(gender)) {
      return false;
    }
 
    return /^f(emale)?$/i.test(gender);
  }
 
  static isUnknown(gender) {
    return ! Gender.isMale(gender) && ! Gender.isFemale(gender);
  }
 
  static parse(gender) {
    if (Gender.isMale(gender)) {
      return MALE;
    }
 
    if (Gender.isFemale(gender)) {
      return FEMALE;
    }
 
    return UNKNOWN;
  }
}
 
export default Gender;