Skip to content

Commit 881dba1

Browse files
committed
Validate basal rate scheduled maximum number of segments
1 parent 039dbee commit 881dba1

File tree

32 files changed

+685
-675
lines changed

32 files changed

+685
-675
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ require (
2121
github.com/prometheus/client_golang v1.19.1
2222
github.com/rinchsan/device-check-go v1.3.0
2323
github.com/tidepool-org/clinic/client v0.0.0-20240629034458-1365c8963143
24-
github.com/tidepool-org/devices/api v0.0.0-20240412011010-75b16d8daec0
24+
github.com/tidepool-org/devices/api v0.0.0-20240711091104-8b8e20a3e2c7
2525
github.com/tidepool-org/go-common v0.12.2-0.20240612192926-de6d5c5a742c
2626
github.com/tidepool-org/hydrophone/client v0.0.0-20240613043503-6c32828b1ace
2727
github.com/urfave/cli v1.22.15
@@ -34,7 +34,7 @@ require (
3434
golang.org/x/sync v0.7.0
3535
golang.org/x/tools v0.22.0
3636
gonum.org/v1/gonum v0.15.0
37-
google.golang.org/grpc v1.64.0
37+
google.golang.org/grpc v1.65.0
3838
gopkg.in/yaml.v2 v2.4.0
3939
syreclabs.com/go/faker v1.2.3
4040
)

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
176176
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
177177
github.com/tidepool-org/clinic/client v0.0.0-20240629034458-1365c8963143 h1:A6qFjC5yMhC0xMfcci4lo3/tVq1k2q5Jt/BjsP3NtdQ=
178178
github.com/tidepool-org/clinic/client v0.0.0-20240629034458-1365c8963143/go.mod h1:7BpAdFdGJNB3aw/xvCz5XnWjSWRoUtWIX4xcMc4Bsko=
179-
github.com/tidepool-org/devices/api v0.0.0-20240412011010-75b16d8daec0 h1:SnIsHwaJE2kltz9xMfjC+L9SWhQS3w6t+mSIIoFiwag=
180-
github.com/tidepool-org/devices/api v0.0.0-20240412011010-75b16d8daec0/go.mod h1:pu8FmuhxtBbOyswB94Mr15l2heCxY357lVHOVVAEZq8=
179+
github.com/tidepool-org/devices/api v0.0.0-20240711091104-8b8e20a3e2c7 h1:sfE4V+umi8HM8T2RJLuCd/Dfx/Ba0XREXbfTamke+Aw=
180+
github.com/tidepool-org/devices/api v0.0.0-20240711091104-8b8e20a3e2c7/go.mod h1:xuQ8k0mLR1ZyEmwe/m0v2BuXctqQuCZeR43urSQpTUM=
181181
github.com/tidepool-org/go-common v0.12.2-0.20240612192926-de6d5c5a742c h1:hJZyiHNGeqyLA/5p60/0H9CZtJi4fAuzOuyQF0TpF7E=
182182
github.com/tidepool-org/go-common v0.12.2-0.20240612192926-de6d5c5a742c/go.mod h1:mIzYteUyPf//fhee4e2KEZhmcm2iE4IQ/2dyQr5pRKA=
183183
github.com/tidepool-org/hydrophone/client v0.0.0-20240613043503-6c32828b1ace h1:L0UiCj2eL/NOpLa19Tf5IgoK6feILmdA+zK3nCTIhqU=
@@ -290,8 +290,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d h1:
290290
google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Od4k8V1LQSizPRUK4OzZ7TBE/20k+jPczUDAEyvn69Y=
291291
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk=
292292
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
293-
google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
294-
google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
293+
google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
294+
google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
295295
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
296296
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
297297
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

guardrails/basal_rate_schedule.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,18 @@ package guardrails
33
import (
44
devices "github.com/tidepool-org/devices/api"
55

6+
structureValidator "github.com/tidepool-org/platform/structure/validator"
7+
68
"strconv"
79

810
"github.com/tidepool-org/platform/data/types/settings/pump"
911
"github.com/tidepool-org/platform/structure"
1012
)
1113

1214
func ValidateBasalRateSchedule(basalRateSchedule pump.BasalRateStartArray, guardRail *devices.BasalRatesGuardRail, validator structure.Validator) {
15+
if guardRail.MaxSegments != nil && len(basalRateSchedule) > int(*guardRail.MaxSegments) {
16+
validator.ReportError(structureValidator.ErrorLengthNotLessThanOrEqualTo(len(basalRateSchedule), int(*guardRail.MaxSegments)))
17+
}
1318
validValues := generateAllValidValues(guardRail.AbsoluteBounds)
1419
for i, basalRate := range basalRateSchedule {
1520
ValidateValueIfNotNil(basalRate.Rate, validValues, validator.WithReference(strconv.Itoa(i)).WithReference("rate"))

guardrails/basal_rate_schedule_test.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ var _ = Describe("ValidateBasalRateSchedule", func() {
6262
errorsTest.ExpectEqual(validator.Error(), expected)
6363
})
6464

65-
It("returns an error with a value low than the pump min supported value", func() {
65+
It("returns an error with a value lower than the pump min supported value", func() {
6666
var schedule pump.BasalRateStartArray = []*pump.BasalRateStart{
6767
{Rate: pointer.FromFloat64(0.55)},
6868
{Rate: pointer.FromFloat64(0.0)},
@@ -72,4 +72,18 @@ var _ = Describe("ValidateBasalRateSchedule", func() {
7272
guardrails.ValidateBasalRateSchedule(schedule, guardRail, validator)
7373
errorsTest.ExpectEqual(validator.Error(), expected)
7474
})
75+
76+
It("returns an error when the number of segments is higher than the guardrail", func() {
77+
maxSegments := int32(2)
78+
guardRail.MaxSegments = &maxSegments
79+
var schedule pump.BasalRateStartArray = []*pump.BasalRateStart{
80+
{Rate: pointer.FromFloat64(0.55)},
81+
{Rate: pointer.FromFloat64(15.55)},
82+
{Rate: pointer.FromFloat64(16.55)},
83+
}
84+
85+
expected := errorsTest.WithPointerSource(structureValidator.ErrorLengthNotLessThanOrEqualTo(3, 2), "")
86+
guardrails.ValidateBasalRateSchedule(schedule, guardRail, validator)
87+
errorsTest.ExpectEqual(validator.Error(), expected)
88+
})
7589
})

0 commit comments

Comments
 (0)