test(growth): add main module tests
All checks were successful
continuous-integration/drone/pr Build is passing

This commit is contained in:
João Paulo Dubas 2024-10-05 15:11:33 +00:00
parent 84cf6758bb
commit 25cb7508bb
Signed by: joao.dubas
SSH Key Fingerprint: SHA256:V1mixgOGRc/YMhGx/DNkOSmJxgA2vHNrDZEk3wt/kOA

131
test/growth/growth_test.exs Normal file
View File

@ -0,0 +1,131 @@
defmodule GrowthTest do
@moduledoc false
use ExUnit.Case, async: true
doctest Growth
@child %{
name: "Jane Doe",
gender: :female,
date_of_measurement: Date.utc_today(),
age_in_days: 91,
weight: 5.84,
height: 59.78,
head_circumference: 39.51,
arm_circumference: 13.02,
subscapular_skinfold: 7.79,
triceps_skinfold: 9.75
}
@child_date_of_birth Date.shift(@child.date_of_measurement, day: @child.age_in_days * -1)
describe "new/4" do
test "create a new growth measurement" do
growth =
Growth.new(@child.name, @child.gender, @child_date_of_birth,
date_of_measurement: @child.date_of_measurement,
weight: @child.weight,
height: @child.height,
head_circumference: @child.head_circumference,
arm_circumference: @child.arm_circumference,
subscapular_skinfold: @child.subscapular_skinfold,
triceps_skinfold: @child.triceps_skinfold
)
assert @child.name == growth.name
assert @child.gender == growth.gender
assert @child_date_of_birth == growth.date_of_birth
assert @child.date_of_measurement == growth.date_of_measurement
assert @child.age_in_days == growth.age_in_days
assert 13 == growth.age_in_weeks
assert 2 == growth.age_in_months
assert @child.weight == growth.weight
assert @child.height == growth.height
assert @child.head_circumference == growth.head_circumference
assert @child.arm_circumference == growth.arm_circumference
assert @child.subscapular_skinfold == growth.subscapular_skinfold
assert @child.triceps_skinfold == growth.triceps_skinfold
end
end
describe "with_bmi/1" do
test "calculate bmi from measurement" do
growth =
%Growth{
name: @child.name,
gender: @child.gender,
date_of_birth: @child_date_of_birth,
date_of_measurement: @child.date_of_measurement,
weight: @child.weight,
height: @child.height,
head_circumference: @child.head_circumference,
arm_circumference: @child.arm_circumference,
subscapular_skinfold: @child.subscapular_skinfold,
triceps_skinfold: @child.triceps_skinfold
}
|> Growth.with_age_in_days()
|> Growth.with_age_in_weeks()
|> Growth.with_age_in_months()
|> Growth.with_bmi()
assert 16.341842694989243 == growth.bmi
end
end
describe "with_results/1" do
test "calculate z-score and percentiles from measurement" do
growth =
%Growth{
name: @child.name,
gender: @child.gender,
date_of_birth: @child_date_of_birth,
date_of_measurement: @child.date_of_measurement,
weight: @child.weight,
height: @child.height,
head_circumference: @child.head_circumference,
arm_circumference: @child.arm_circumference,
subscapular_skinfold: @child.subscapular_skinfold,
triceps_skinfold: @child.triceps_skinfold,
results: []
}
|> Growth.with_age_in_days()
|> Growth.with_age_in_weeks()
|> Growth.with_age_in_months()
|> Growth.with_bmi()
|> Growth.with_results()
assert [
day: {9.496948997971584e-4, 0.5003788733920584},
week: {9.496948997971584e-4, 0.5003788733920584},
month: {1.0060928051683196, 0.8428145353253619}
] == Keyword.get(growth.results, :weight)
assert [
day: {0.0012831717968983271, 0.5005119113423219},
week: {0.0012831717968983271, 0.5005119113423219},
month: {1.3322618635180914, 0.9086129228760054}
] == Keyword.get(growth.results, :height)
assert [
day: {-0.007440424136462911, 0.4970317276150869},
week: {-0.007440424136462911, 0.4970317276150869},
month: {0.3827194919327071, 0.6490361198066796}
] == Keyword.get(growth.results, :bmi)
assert [
day: {-0.008864109494641385, 0.4964637782528006},
week: {-0.008864109494641385, 0.4964637782528006},
month: {1.0380198575748647, 0.8503695948597997}
] == Keyword.get(growth.results, :head_circumference)
assert [day: {-0.004182676756535293, 0.49833135826198854}] ==
Keyword.get(growth.results, :arm_circumference)
assert [day: {0.001811404894950268, 0.5007226456043324}] ==
Keyword.get(growth.results, :subscapular_skinfold)
assert [day: {-0.0019309186728254878, 0.49922967538007906}] ==
Keyword.get(growth.results, :triceps_skinfold)
end
end
end