Skip to content

Commit

Permalink
Fix update approved_at field when a member is added to a clan
Browse files Browse the repository at this point in the history
  • Loading branch information
Arthur Nogueira Gonçalves committed Aug 24, 2021
1 parent 2354385 commit d76a6a5
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 2 deletions.
2 changes: 2 additions & 0 deletions models/membership.go
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ func createMembershipHelper(db DB, gameID, level string, playerID, clanID, reque

if approved {
membership.ApproverID = sql.NullInt64{Int64: requestorID, Valid: true}
membership.ApprovedAt = util.NowMilli()
}
err := db.Insert(membership)
if err != nil {
Expand Down Expand Up @@ -608,6 +609,7 @@ func updatePreviousMembershipHelper(db DB, membership *Membership, level string,
membership.Message = message
if approved {
membership.ApproverID = sql.NullInt64{Int64: requestorID, Valid: true}
membership.ApprovedAt = util.NowMilli()
}

_, err := db.Update(membership)
Expand Down
61 changes: 59 additions & 2 deletions models/membership_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ var _ = Describe("Membership Model", func() {
Expect(totalInvites).To(Equal(20))
})
})
Describe("Create Membership", func() {
It("Should create a new Membership", func() {

Describe("GetMembershipByID", func() {
It("Should get a Membership", func() {
_, _, _, _, memberships, err := fixtures.GetClanWithMemberships(testDb, 0, 0, 0, 1, "", "")
Expect(err).NotTo(HaveOccurred())

Expand All @@ -58,6 +59,62 @@ var _ = Describe("Membership Model", func() {
Expect(dbMembership.ClanID).To(Equal(membership.ClanID))
})

It("Should get existing Membership", func() {
_, _, _, _, memberships, err := fixtures.GetClanWithMemberships(testDb, 0, 0, 0, 1, "", "")
Expect(err).NotTo(HaveOccurred())

dbMembership, err := GetMembershipByID(testDb, memberships[0].ID)
Expect(err).NotTo(HaveOccurred())
Expect(dbMembership.ID).To(Equal(memberships[0].ID))
})
})

Describe("GetOldestMemberWithHighestLevel", func() {
It("Should get the approved member with the highest level", func() {
_, clan, _, players, memberships, err := fixtures.GetClanWithMemberships(testDb, 2, 0, 0, 0, "", "")
Expect(err).NotTo(HaveOccurred())

memberships[0].Level = "CoLeader"
_, err = testDb.Update(memberships[0])

dbMembership, err := GetOldestMemberWithHighestLevel(testDb, clan.GameID, clan.PublicID)
Expect(err).NotTo(HaveOccurred())
Expect(dbMembership.ID).To(Equal(memberships[0].ID))
Expect(dbMembership.PlayerID).To(Equal(players[0].ID))
})

It("Should not get pending memberships", func() {
_, clan, _, _, memberships, err := fixtures.GetClanWithMemberships(testDb, 0, 0, 0, 2, "", "")
Expect(err).NotTo(HaveOccurred())

memberships[0].Level = "CoLeader"
_, err = testDb.Update(memberships[0])

dbMembership, err := GetOldestMemberWithHighestLevel(testDb, clan.GameID, clan.PublicID)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal(fmt.Sprintf("Clan %v has no members", clan.PublicID)))
Expect(dbMembership).To(BeNil())
})

It("Should return an error if clan has no members", func() {
_, clan, _, _, _, err := fixtures.GetClanWithMemberships(testDb, 0, 0, 0, 0, "", "")
Expect(err).NotTo(HaveOccurred())

dbMembership, err := GetOldestMemberWithHighestLevel(testDb, clan.GameID, clan.PublicID)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal(fmt.Sprintf("Clan %v has no members", clan.PublicID)))
Expect(dbMembership).To(BeNil())
})

It("Should return an error if clan does not exist", func() {
dbMembership, err := GetOldestMemberWithHighestLevel(testDb, "abc", "def")
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("Clan def has no members"))
Expect(dbMembership).To(BeNil())
})
})

Describe("Create Membership", func() {
It("Should not create a new membership for a member with max number of invitations", func() {
gameID := uuid.NewV4().String()
_, player, err := fixtures.GetTestPlayerWithMemberships(testDb, gameID, 0, 0, 0, 20)
Expand Down

0 comments on commit d76a6a5

Please sign in to comment.