Correctly report added tickets and add publish ticket command
This commit is contained in:
parent
3aab0149b3
commit
8c77e1a33f
36 changed files with 8465 additions and 10 deletions
|
@ -122,12 +122,14 @@ func (c *Campaign) PrintList(publishedOnly, printLinks bool) {
|
|||
}
|
||||
}
|
||||
|
||||
func (c *Campaign) AddTickets(tickets []*Ticket, fileOnly bool) {
|
||||
func (c *Campaign) AddTickets(tickets []*Ticket, fileOnly bool) int {
|
||||
c.Tickets = append(c.Tickets, tickets...)
|
||||
c.RemoveDuplicateTickets(fileOnly)
|
||||
removedTickets := c.RemoveDuplicateTickets(fileOnly)
|
||||
return len(tickets) - removedTickets
|
||||
}
|
||||
|
||||
func (c *Campaign) RemoveDuplicateTickets(fileOnly bool) {
|
||||
func (c *Campaign) RemoveDuplicateTickets(fileOnly bool) int {
|
||||
removedTickets := 0
|
||||
datalessTickets := []*Ticket{}
|
||||
ticketMap := map[string]*Ticket{}
|
||||
for _, t := range c.Tickets {
|
||||
|
@ -140,9 +142,18 @@ func (c *Campaign) RemoveDuplicateTickets(fileOnly bool) {
|
|||
}
|
||||
|
||||
if fileOnly {
|
||||
// a previous ticket for the filename already existed
|
||||
if _, ok := ticketMap[filename]; ok {
|
||||
removedTickets++
|
||||
}
|
||||
ticketMap[filename] = t
|
||||
} else {
|
||||
ticketMap[fmt.Sprintf("%s:%d", filename, lineNo)] = t
|
||||
ticketKey := fmt.Sprintf("%s:%d", filename, lineNo)
|
||||
// a previous ticket for the same key already existed
|
||||
if _, ok := ticketMap[ticketKey]; ok {
|
||||
removedTickets++
|
||||
}
|
||||
ticketMap[ticketKey] = t
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -155,6 +166,7 @@ func (c *Campaign) RemoveDuplicateTickets(fileOnly bool) {
|
|||
}
|
||||
|
||||
c.Tickets = cleanTickets
|
||||
return removedTickets
|
||||
}
|
||||
|
||||
func (c *Campaign) GetPublishedGithubTickets() []*Ticket {
|
||||
|
|
84
model/campaign_test.go
Normal file
84
model/campaign_test.go
Normal file
|
@ -0,0 +1,84 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func createTicket(filename string, lineNo int) *Ticket {
|
||||
return &Ticket{
|
||||
Data: map[string]interface{}{
|
||||
"filename": filename,
|
||||
"lineNo": lineNo,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddTickets(t *testing.T) {
|
||||
t.Run("Tickets should be added correctly with fileOnly disabled", func(t *testing.T) {
|
||||
campaign := &Campaign{}
|
||||
ticketsToAdd := []*Ticket{
|
||||
createTicket("user.txt", 1),
|
||||
createTicket("test.txt", 2),
|
||||
createTicket("sample.txt", 3),
|
||||
createTicket("user.txt", 4),
|
||||
}
|
||||
|
||||
addedTickets := campaign.AddTickets(ticketsToAdd, false)
|
||||
require.Equal(t, 4, addedTickets)
|
||||
require.Len(t, campaign.Tickets, 4)
|
||||
})
|
||||
|
||||
t.Run("Should account for already existing tickets with fileOnly disabled", func(t *testing.T) {
|
||||
campaign := &Campaign{
|
||||
Tickets: []*Ticket{
|
||||
createTicket("user.txt", 1),
|
||||
createTicket("test.txt", 2),
|
||||
},
|
||||
}
|
||||
ticketsToAdd := []*Ticket{
|
||||
createTicket("user.txt", 1),
|
||||
createTicket("test.txt", 2),
|
||||
createTicket("sample.txt", 3),
|
||||
createTicket("user.txt", 4),
|
||||
}
|
||||
|
||||
addedTickets := campaign.AddTickets(ticketsToAdd, false)
|
||||
require.Equal(t, 2, addedTickets)
|
||||
require.Len(t, campaign.Tickets, 4)
|
||||
})
|
||||
|
||||
t.Run("Tickets should be added correctly with fileOnly enabled", func(t *testing.T) {
|
||||
campaign := &Campaign{}
|
||||
ticketsToAdd := []*Ticket{
|
||||
createTicket("user.txt", 1),
|
||||
createTicket("test.txt", 2),
|
||||
createTicket("sample.txt", 3),
|
||||
createTicket("user.txt", 4),
|
||||
}
|
||||
|
||||
addedTickets := campaign.AddTickets(ticketsToAdd, true)
|
||||
require.Equal(t, 3, addedTickets)
|
||||
require.Len(t, campaign.Tickets, 3)
|
||||
})
|
||||
|
||||
t.Run("Should account for already existing tickets with fileOnly enabled", func(t *testing.T) {
|
||||
campaign := &Campaign{
|
||||
Tickets: []*Ticket{
|
||||
createTicket("user.txt", 1),
|
||||
createTicket("test.txt", 2),
|
||||
},
|
||||
}
|
||||
ticketsToAdd := []*Ticket{
|
||||
createTicket("user.txt", 1),
|
||||
createTicket("test.txt", 2),
|
||||
createTicket("sample.txt", 3),
|
||||
createTicket("user.txt", 4),
|
||||
}
|
||||
|
||||
addedTickets := campaign.AddTickets(ticketsToAdd, true)
|
||||
require.Equal(t, 1, addedTickets)
|
||||
require.Len(t, campaign.Tickets, 3)
|
||||
})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue