All files / domain/valueObjects TaskAssignment.ts

50% Statements 5/10
100% Branches 0/0
50% Functions 4/8
50% Lines 5/10

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        18x 18x 18x       18x                                       21x                      
import { UserId } from './UserId';
 
export class TaskAssignment {
  private constructor(
    private readonly assignedTo: UserId,
    private readonly assignedAt: Date,
    private readonly assignedBy: UserId
  ) {}
 
  static create(assignedTo: UserId, assignedBy: UserId): TaskAssignment {
    return new TaskAssignment(assignedTo, new Date(), assignedBy);
  }
 
  static reconstitute(assignedTo: UserId, assignedAt: Date, assignedBy: UserId): TaskAssignment {
    return new TaskAssignment(assignedTo, assignedAt, assignedBy);
  }
 
  getAssignedTo(): UserId {
    return this.assignedTo;
  }
 
  getAssignedBy(): UserId {
    return this.assignedBy;
  }
 
  getAssignedAt(): Date {
    return this.assignedAt;
  }
 
  isAssignedTo(userId: UserId): boolean {
    return this.assignedTo.equals(userId);
  }
 
  toJSON() {
    return {
      assignedTo: this.assignedTo.toString(),
      assignedAt: this.assignedAt.toISOString(),
      assignedBy: this.assignedBy.toString()
    };
  }
}