" A MFTTraineeTest is a test class for testing the behavior of MFTTrainee " Class { #name : 'MFTTraineeTest', #superclass : 'TestCase', #category : 'MyFitnessTracker-Core-Tests-Base', #package : 'MyFitnessTracker-Core-Tests', #tag : 'Base' } { #category : 'tests' } MFTTraineeTest >> newWorkoutPrescriptionNamed: aString [ ^ MFTWorkoutPrescription new title: aString; yourself ] { #category : 'tests' } MFTTraineeTest >> testCanonicalName [ self assert: MFTTrainee new canonicalName equals: 'trainee' ] { #category : 'tests' } MFTTraineeTest >> testInitializeCreatesRoutineAndLogBook [ | trainee | trainee := MFTTrainee new. self assert: trainee currentRoutine class equals: MFTRoutine. self assert: trainee currentRoutine workouts isEmpty. self assert: trainee logBook class equals: MFTWorkoutLogBook. self assert: trainee logBook workoutLogs isEmpty ] { #category : 'tests' } MFTTraineeTest >> testIsRecoveredAnswersFalseWhenLastWorkoutFinishedLessThanTwoDaysAgo [ | trainee log | trainee := MFTTrainee new. log := MFTWorkoutLog new. log finish: DateAndTime now - 1 day. trainee logWorkout: log. self deny: trainee isRecovered ] { #category : 'tests' } MFTTraineeTest >> testIsRecoveredAnswersTrueWhenLastWorkoutFinishedMoreThanTwoDaysAgo [ | trainee log | trainee := MFTTrainee new. log := MFTWorkoutLog new. log finish: DateAndTime now - 3 days. trainee logWorkout: log. self assert: trainee isRecovered ] { #category : 'tests' } MFTTraineeTest >> testIsRecoveredAnswersTrueWithoutWorkoutLogs [ self assert: MFTTrainee new isRecovered ] { #category : 'tests' } MFTTraineeTest >> testLogBookAccessorCanReplaceLogBook [ | trainee logBook | trainee := MFTTrainee new. logBook := MFTWorkoutLogBook new. trainee logBook: logBook. self assert: trainee logBook identicalTo: logBook ] { #category : 'tests' } MFTTraineeTest >> testLogWorkoutAddsWorkoutToLogBook [ | trainee log | trainee := MFTTrainee new. log := MFTWorkoutLog new. trainee logWorkout: log. self assert: trainee logBook workoutLogs size equals: 1. self assert: trainee logBook workoutLogs first identicalTo: log ] { #category : 'tests' } MFTTraineeTest >> testNextWorkoutPrescriptionAnswersFirstWorkoutWhenNoWorkoutHasBeenLogged [ | trainee routine firstWorkout secondWorkout | trainee := MFTTrainee new. firstWorkout := self newWorkoutPrescriptionNamed: 'Day 1'. secondWorkout := self newWorkoutPrescriptionNamed: 'Day 2'. routine := MFTRoutine new. routine workouts: { firstWorkout. secondWorkout }. trainee currentRoutine: routine. self assert: trainee nextWorkoutPrescription identicalTo: firstWorkout ] { #category : 'tests' } MFTTraineeTest >> testNextWorkoutPrescriptionAnswersNilForEmptyRoutine [ self assert: MFTTrainee new nextWorkoutPrescription isNil ] { #category : 'tests' } MFTTraineeTest >> testNextWorkoutPrescriptionFollowsLastLoggedPrescription [ | trainee routine firstWorkout secondWorkout log | trainee := MFTTrainee new. firstWorkout := self newWorkoutPrescriptionNamed: 'Day 1'. secondWorkout := self newWorkoutPrescriptionNamed: 'Day 2'. routine := MFTRoutine new. routine workouts: { firstWorkout. secondWorkout }. trainee currentRoutine: routine. log := MFTWorkoutLog new. log prescription: firstWorkout. log finish: DateAndTime now. trainee logWorkout: log. self assert: trainee nextWorkoutPrescription identicalTo: secondWorkout ] { #category : 'tests' } MFTTraineeTest >> testNextWorkoutPrescriptionWrapsAfterLastWorkout [ | trainee routine firstWorkout secondWorkout log | trainee := MFTTrainee new. firstWorkout := self newWorkoutPrescriptionNamed: 'Day 1'. secondWorkout := self newWorkoutPrescriptionNamed: 'Day 2'. routine := MFTRoutine new. routine workouts: { firstWorkout. secondWorkout }. trainee currentRoutine: routine. log := MFTWorkoutLog new. log prescription: secondWorkout. log finish: DateAndTime now. trainee logWorkout: log. self assert: trainee nextWorkoutPrescription identicalTo: firstWorkout ] { #category : 'tests' } MFTTraineeTest >> testRoutineAccessorCanReplaceRoutine [ | trainee routine | trainee := MFTTrainee new. routine := MFTRoutine new. trainee currentRoutine: routine. self assert: trainee currentRoutine identicalTo: routine ]