Skip to content

Commit

Permalink
get rooms metadatas tests
Browse files Browse the repository at this point in the history
  • Loading branch information
henrod committed Apr 12, 2019
1 parent 7e4d273 commit f6f53d5
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 3 deletions.
6 changes: 3 additions & 3 deletions models/room.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,10 @@ func GetRoomsMetadatas(
var metadata map[string]interface{}

metadataStr, err := cmds[idx].(*redis.StringCmd).Result()
if err == redis.Nil || metadataStr == "" {
metadata = map[string]interface{}{}
} else if err != nil {
if err != nil && err != redis.Nil {
return nil, err
} else if metadataStr == "" {
metadata = map[string]interface{}{}
} else {
err = json.Unmarshal([]byte(metadataStr), &metadata)
if err != nil {
Expand Down
105 changes: 105 additions & 0 deletions models/room_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -537,3 +537,108 @@ var _ = Describe("Room", func() {
})
})
})

var _ = Describe("GetRoomsMetadatas", func() {
var (
schedulerName = "scheduler-name"
roomIDs = []string{"room-id-1", "room-id-2", "room-id-3"}
rooms = []*models.Room{
{ID: roomIDs[0], SchedulerName: schedulerName},
{ID: roomIDs[1], SchedulerName: schedulerName},
{ID: roomIDs[2], SchedulerName: schedulerName},
}
rErr = errors.New("error")
)

It("should get when no metadata", func() {
mockRedisClient.EXPECT().TxPipeline().Return(mockPipeline)
mockPipeline.EXPECT().HGet(rooms[0].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[1].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[2].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().Exec().Return([]redis.Cmder{
redis.NewStringResult("", redis.Nil),
redis.NewStringResult("", redis.Nil),
redis.NewStringResult("", redis.Nil),
}, nil)

m, err := models.GetRoomsMetadatas(mockRedisClient, schedulerName, roomIDs)
Expect(err).ToNot(HaveOccurred())
Expect(m).To(Equal(map[string]map[string]interface{}{
roomIDs[0]: map[string]interface{}{},
roomIDs[1]: map[string]interface{}{},
roomIDs[2]: map[string]interface{}{},
}))
})

It("should get when empty metadata", func() {
mockRedisClient.EXPECT().TxPipeline().Return(mockPipeline)
mockPipeline.EXPECT().HGet(rooms[0].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[1].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[2].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().Exec().Return([]redis.Cmder{
redis.NewStringResult("", nil),
redis.NewStringResult("", nil),
redis.NewStringResult("", nil),
}, nil)

m, err := models.GetRoomsMetadatas(mockRedisClient, schedulerName, roomIDs)
Expect(err).ToNot(HaveOccurred())
Expect(m).To(Equal(map[string]map[string]interface{}{
roomIDs[0]: map[string]interface{}{},
roomIDs[1]: map[string]interface{}{},
roomIDs[2]: map[string]interface{}{},
}))
})

It("should get when metadata", func() {
mockRedisClient.EXPECT().TxPipeline().Return(mockPipeline)
mockPipeline.EXPECT().HGet(rooms[0].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[1].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[2].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().Exec().Return([]redis.Cmder{
redis.NewStringResult(`{"region": "us"}`, nil),
redis.NewStringResult(`{"region": "eu"}`, nil),
redis.NewStringResult(`{"region": "ap"}`, nil),
}, nil)

m, err := models.GetRoomsMetadatas(mockRedisClient, schedulerName, roomIDs)
Expect(err).ToNot(HaveOccurred())
Expect(m).To(Equal(map[string]map[string]interface{}{
roomIDs[0]: map[string]interface{}{"region": "us"},
roomIDs[1]: map[string]interface{}{"region": "eu"},
roomIDs[2]: map[string]interface{}{"region": "ap"},
}))
})

It("should return error when error on first", func() {
mockRedisClient.EXPECT().TxPipeline().Return(mockPipeline)
mockPipeline.EXPECT().HGet(rooms[0].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[1].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[2].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().Exec().Return([]redis.Cmder{
redis.NewStringResult("", nil),
redis.NewStringResult("", rErr),
redis.NewStringResult("", nil),
}, rErr)

m, err := models.GetRoomsMetadatas(mockRedisClient, schedulerName, roomIDs)
Expect(err).To(Equal(rErr))
Expect(m).To(BeNil())
})

It("should return error when error on second", func() {
mockRedisClient.EXPECT().TxPipeline().Return(mockPipeline)
mockPipeline.EXPECT().HGet(rooms[0].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[1].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().HGet(rooms[2].GetRoomRedisKey(), "metadata")
mockPipeline.EXPECT().Exec().Return([]redis.Cmder{
redis.NewStringResult("", redis.Nil),
redis.NewStringResult("", rErr),
redis.NewStringResult("", nil),
}, nil)

m, err := models.GetRoomsMetadatas(mockRedisClient, schedulerName, roomIDs)
Expect(err).To(Equal(rErr))
Expect(m).To(BeNil())
})
})

0 comments on commit f6f53d5

Please sign in to comment.