PageRenderTime 40ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/metric/postgres/counter_integration_test.go

https://gitlab.com/epicglue/api
Go | 125 lines | 90 code | 34 blank | 1 comment | 22 complexity | d1ad350a73c52bcac913888e2dccc208 MD5 | raw file
  1. // +build integration
  2. package metric_postgres_test
  3. import (
  4. "bitbucket.org/epicglue/api/connection/database/postgres"
  5. "bitbucket.org/epicglue/api/helpers"
  6. "bitbucket.org/epicglue/api/helpers/test"
  7. "bitbucket.org/epicglue/api/metric/postgres"
  8. "bitbucket.org/epicglue/api/model"
  9. "errors"
  10. "github.com/stretchr/testify/assert"
  11. "testing"
  12. )
  13. func checkMetric(user_id int64, key string) (float64, error) {
  14. db := postgres.NewPostgres()
  15. query := `SELECT value FROM user_metric WHERE user_id = $1 AND key = $2`
  16. var value float64
  17. if err := db.QueryRow(query, user_id, key).Scan(&value); err != nil {
  18. return 0, err
  19. }
  20. return value, nil
  21. }
  22. func makeTestData() (*model.User, string) {
  23. user := test_helper.MakeTestUser()
  24. user.Id = 1
  25. return &user, helpers.RandomString(16)
  26. }
  27. func TestTooLongKey(t *testing.T) {
  28. user, _ := makeTestData()
  29. key := helpers.RandomString(101)
  30. metric := metric_postgres.NewPostgresMetricWithUser(user)
  31. metric.Set(key, 1)
  32. if _, err := checkMetric(user.Id, key); err != nil {
  33. assert.Equal(t, errors.New("sql: no rows in result set").Error(), err.Error())
  34. }
  35. }
  36. func TestDecimalPoints(t *testing.T) {
  37. }
  38. func TestInc(t *testing.T) {
  39. user, key := makeTestData()
  40. metric := metric_postgres.NewPostgresMetricWithUser(user)
  41. metric.Inc(key)
  42. if value, err := checkMetric(user.Id, key); err != nil {
  43. t.Error(err)
  44. } else {
  45. assert.Equal(t, 1.0, value)
  46. }
  47. metric.Inc(key)
  48. if value, err := checkMetric(user.Id, key); err != nil {
  49. t.Error(err)
  50. } else {
  51. assert.Equal(t, 2.0, value)
  52. }
  53. }
  54. func TestIncNoUser(t *testing.T) {
  55. }
  56. func TestSet(t *testing.T) {
  57. user, key := makeTestData()
  58. metric := metric_postgres.NewPostgresMetricWithUser(user)
  59. metric.Set(key, 3.33)
  60. if value, err := checkMetric(user.Id, key); err != nil {
  61. t.Error(err)
  62. } else {
  63. assert.Equal(t, 3.33, value)
  64. }
  65. metric.Set(key, 5.0)
  66. if value, err := checkMetric(user.Id, key); err != nil {
  67. t.Error(err)
  68. } else {
  69. assert.Equal(t, 5.0, value)
  70. }
  71. }
  72. func TestSetNoUser(t *testing.T) {
  73. }
  74. func TestAdd(t *testing.T) {
  75. user, key := makeTestData()
  76. metric := metric_postgres.NewPostgresMetricWithUser(user)
  77. metric.Add(key, 1)
  78. if value, err := checkMetric(user.Id, key); err != nil {
  79. t.Error(err)
  80. } else {
  81. assert.Equal(t, 1.0, value)
  82. }
  83. metric.Add(key, 5.66)
  84. if value, err := checkMetric(user.Id, key); err != nil {
  85. t.Error(err)
  86. } else {
  87. assert.Equal(t, 6.66, value)
  88. }
  89. }
  90. func TestAddNoUser(t *testing.T) {
  91. }