test: add test with changing address order

This commit is contained in:
James Houlahan
2020-05-06 09:57:34 +02:00
parent c61e8bdc71
commit 2d200f6f8c
19 changed files with 202 additions and 23 deletions

View File

@ -18,6 +18,7 @@
package fakeapi
import (
"errors"
"fmt"
"strings"
@ -44,6 +45,15 @@ func (ctl *Controller) TurnInternetConnectionOn() {
ctl.noInternetConnection = false
}
func (ctl *Controller) ReorderAddresses(user *pmapi.User, addressIDs []string) error {
api := ctl.getFakeAPIForUser(user.ID)
if api == nil {
return errors.New("no such user")
}
return api.ReorderAddresses(addressIDs)
}
func (ctl *Controller) AddUser(user *pmapi.User, addresses *pmapi.AddressList, password string, twoFAEnabled bool) error {
ctl.usersByUsername[user.Name] = &fakeUser{
user: user,
@ -131,6 +141,15 @@ func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) e
return nil
}
func (ctl *Controller) getFakeAPIForUser(userID string) *FakePMAPI {
for _, fakeAPI := range ctl.fakeAPIs {
if fakeAPI.userID == userID {
return fakeAPI
}
}
return nil
}
func (ctl *Controller) resetUsers() {
for _, fakeAPI := range ctl.fakeAPIs {
_ = fakeAPI.setUser(fakeAPI.username)

View File

@ -40,20 +40,24 @@ func (api *FakePMAPI) GetEvent(eventID string) (*pmapi.Event, error) {
foundEvent = event
continue
}
if foundEvent != nil {
mergedEvent.EventID = event.EventID
mergedEvent.Refresh |= event.Refresh
mergedEvent.Messages = append(mergedEvent.Messages, event.Messages...)
mergedEvent.MessageCounts = append(mergedEvent.MessageCounts, event.MessageCounts...)
mergedEvent.Labels = append(mergedEvent.Labels, event.Labels...)
mergedEvent.Addresses = append(mergedEvent.Addresses, event.Addresses...)
mergedEvent.Notices = append(mergedEvent.Notices, event.Notices...)
mergedEvent.User = event.User
}
}
// If there isn't next event, return the same one.
if mergedEvent.EventID == "" {
return foundEvent, nil
}
return mergedEvent, nil
}
@ -103,6 +107,19 @@ func (api *FakePMAPI) addEventMessage(action pmapi.EventAction, message *pmapi.M
})
}
func (api *FakePMAPI) addEventAddress(action pmapi.EventAction, address *pmapi.Address) {
api.addEvent(&pmapi.Event{
EventID: api.eventIDGenerator.next("event"),
Addresses: []*pmapi.EventAddress{{
EventItem: pmapi.EventItem{
ID: address.ID,
Action: pmapi.EventUpdate,
},
Address: address,
}},
})
}
func (api *FakePMAPI) addEvent(event *pmapi.Event) {
api.events = append(api.events, event)
}

View File

@ -57,6 +57,29 @@ func (api *FakePMAPI) GetAddresses() (pmapi.AddressList, error) {
return *api.addresses, nil
}
func (api *FakePMAPI) ReorderAddresses(addressIDs []string) error {
if err := api.checkAndRecordCall(PUT, "/addresses/order", nil); err != nil {
return err
}
for wantedIndex, addressID := range addressIDs {
var currentIndex int
for i, v := range *api.addresses {
if v.ID == addressID {
currentIndex = i
break
}
}
(*api.addresses)[wantedIndex], (*api.addresses)[currentIndex] = (*api.addresses)[currentIndex], (*api.addresses)[wantedIndex]
(*api.addresses)[wantedIndex].Order = wantedIndex + 1 // Starts counting from 1.
api.addEventAddress(pmapi.EventUpdate, (*api.addresses)[wantedIndex])
}
return nil
}
func (api *FakePMAPI) Addresses() pmapi.AddressList {
return *api.addresses
}