Skip to content

Commit

Permalink
Create response for display
Browse files Browse the repository at this point in the history
  • Loading branch information
kozaktomas committed Nov 2, 2024
1 parent cca1eb3 commit 4ed24e8
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
2 changes: 1 addition & 1 deletion backend/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func (hr *HandlerRepository) scaleMessageHandler() func(http.ResponseWriter, *ht
}).Infof("Scale new value: %0.2f", message.Value)
}

_, _ = w.Write([]byte("OK"))
_, _ = w.Write([]byte(hr.scale.GetPushResponse()))
}
}

Expand Down
23 changes: 23 additions & 0 deletions backend/pkg/scale/scale_beers_output.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package scale

import (
"fmt"
"strings"
)

// GetPushResponse is a response for scale push event
// Scale has display and it is able to display four digits
func (s *Scale) GetPushResponse() string {
s.mux.RLock()
defer s.mux.RUnlock()

return leftPad(fmt.Sprintf("%d", s.beersLeft), " ", 4)
}

func leftPad(input string, padChar string, length int) string {
if len(input) >= length {
return input
}
padding := strings.Repeat(padChar, length-len(input))
return padding + input
}
32 changes: 32 additions & 0 deletions backend/pkg/scale/scale_beers_output_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package scale

import (
"testing"
)

func TestScale_GetPushResponse(t *testing.T) {
cases := []struct {
beersLeft int
want string
}{
{beersLeft: 0, want: " 0"},
{beersLeft: 1, want: " 1"},
{beersLeft: 10, want: " 10"},
{beersLeft: 66, want: " 66"},
{beersLeft: 100, want: " 100"},
{beersLeft: 222, want: " 222"},
{beersLeft: 1000, want: "1000"},
{beersLeft: 9999, want: "9999"},
}

for _, tt := range cases {
s := &Scale{
beersLeft: tt.beersLeft,
}

got := s.GetPushResponse()
if got != tt.want {
t.Errorf("Scale.GetPushResponse() = %v, want %v", got, tt.want)
}
}
}

0 comments on commit 4ed24e8

Please sign in to comment.