test(growth): add main module tests
All checks were successful
continuous-integration/drone/pr Build is passing
All checks were successful
continuous-integration/drone/pr Build is passing
This commit is contained in:
parent
84cf6758bb
commit
25cb7508bb
131
test/growth/growth_test.exs
Normal file
131
test/growth/growth_test.exs
Normal 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
|
Loading…
x
Reference in New Issue
Block a user