Skip to content

Commit

Permalink
Merge pull request #17 from seatsio/matti/create-event-channels
Browse files Browse the repository at this point in the history
Channels can be passed in when creating an event
  • Loading branch information
mroloux authored Aug 25, 2023
2 parents 47fb389 + e46e1e2 commit c826074
Show file tree
Hide file tree
Showing 13 changed files with 159 additions and 101 deletions.
4 changes: 2 additions & 2 deletions events/channels.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type changeChannelObjectsRequest struct {
}

type replaceChannelsRequest struct {
Channels []Channel `json:"channels"`
Channels []CreateChannelParams `json:"channels"`
}

func (channels *Channels) Create(eventKey string, params ...*CreateChannelParams) error {
Expand Down Expand Up @@ -76,7 +76,7 @@ func (channels *Channels) RemoveObjects(eventKey string, channelKey string, obje
return shared.AssertOkNoBody(result, err)
}

func (channels *Channels) Replace(eventKey string, newChannels ...Channel) error {
func (channels *Channels) Replace(eventKey string, newChannels ...CreateChannelParams) error {
result, err := channels.Client.R().
SetBody(replaceChannelsRequest{newChannels}).
SetPathParam("eventKey", eventKey).
Expand Down
18 changes: 10 additions & 8 deletions events_test/book_objects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,11 @@ func TestChannelKeys(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

_, err = client.Events.BookWithOptions(&events.StatusChangeParams{
Expand All @@ -168,10 +169,11 @@ func TestIgnoreChannel(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

_, err = client.Events.BookWithOptions(&events.StatusChangeParams{
Expand Down
18 changes: 10 additions & 8 deletions events_test/change_best_available_object_status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,11 @@ func TestChangeBestAvailableObjectStatusWithChannelsKeys(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"B-6"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"B-6"}},
},
}})
require.NoError(t, err)

bestAvailableResult, err := client.Events.ChangeBestAvailableObjectStatus(event.Key, &events.BestAvailableStatusChangeParams{
Expand All @@ -194,10 +195,11 @@ func TestChangeBestAvailableObjectStatusWithIgnoreChannels(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-5"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-5"}},
},
}})
require.NoError(t, err)

bestAvailableResult, err := client.Events.ChangeBestAvailableObjectStatus(event.Key, &events.BestAvailableStatusChangeParams{
Expand Down
9 changes: 5 additions & 4 deletions events_test/change_object_status_in_batch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,11 @@ func TestChannelKeys(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1"}},
},
}})
require.NoError(t, err)

result, err := client.Events.ChangeObjectStatusInBatch(
Expand Down
18 changes: 10 additions & 8 deletions events_test/change_object_status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,10 +205,11 @@ func TestChangeObjectStatusWithChannelsKeys(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

_, err = client.Events.ChangeObjectStatusWithOptions(&events.StatusChangeParams{
Expand All @@ -230,10 +231,11 @@ func TestChangeObjectStatusWithIgnoreChannels(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

_, err = client.Events.ChangeObjectStatusWithOptions(&events.StatusChangeParams{
Expand Down
22 changes: 22 additions & 0 deletions events_test/create_event_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,25 @@ func TestCreateEventWithDate(t *testing.T) {

require.Equal(t, "2023-07-18", event.Date)
}

func TestCreateEventWithChannels(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
channels := []events.CreateChannelParams{
{Key: "aaa", Name: "bbb", Color: "#101010", Index: 1, Objects: []string{"A-1", "A-2"}},
{Key: "ccc", Name: "ddd", Color: "#F2F2F2", Index: 2, Objects: []string{}},
}

event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &channels,
}})
require.NoError(t, err)

expectedChannels := []events.Channel{
{Key: "aaa", Name: "bbb", Color: "#101010", Index: 1, Objects: []string{"A-1", "A-2"}},
{Key: "ccc", Name: "ddd", Color: "#F2F2F2", Index: 2, Objects: []string{}},
}
require.Equal(t, expectedChannels, event.Channels)
}
24 changes: 24 additions & 0 deletions events_test/create_events_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,30 @@ func TestCreateMultipleEventsWithDate(t *testing.T) {
require.Equal(t, "2023-07-19", result.Events[1].Date)
}

func TestCreateMultipleEventsWithChannels(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
channels := []events.CreateChannelParams{
{Key: "aaa", Name: "bbb", Color: "#101010", Index: 1, Objects: []string{"A-1", "A-2"}},
{Key: "ccc", Name: "ddd", Color: "#F2F2F2", Index: 2, Objects: []string{}},
}

result, err := client.Events.CreateMultiple(chartKey,
events.EventParams{Channels: &channels},
events.EventParams{Channels: &channels},
)
require.NoError(t, err)

expectedChannels := []events.Channel{
{Key: "aaa", Name: "bbb", Color: "#101010", Index: 1, Objects: []string{"A-1", "A-2"}},
{Key: "ccc", Name: "ddd", Color: "#F2F2F2", Index: 2, Objects: []string{}},
}
require.Equal(t, expectedChannels, result.Events[0].Channels)
require.Equal(t, expectedChannels, result.Events[1].Channels)
}

func TestCreateMultipleEventsWithDuplicateKeys(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
Expand Down
30 changes: 10 additions & 20 deletions events_test/release_objects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,16 +105,11 @@ func TestWithChannelKeys(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{
Key: "channelKey1",
Name: "channel 1",
Color: "#FFFF99",
Index: 1,
Objects: []string{"A-1", "A-2"},
})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

_, err = client.Events.BookWithOptions(&events.StatusChangeParams{
Expand Down Expand Up @@ -147,16 +142,11 @@ func TestIgnoreChannelKeys(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
require.NoError(t, err)

err = client.Channels.Replace(event.Key, events.Channel{
Key: "channelKey1",
Name: "channel 1",
Color: "#FFFF99",
Index: 1,
Objects: []string{"A-1", "A-2"},
})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channelKey1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

_, err = client.Events.BookWithOptions(&events.StatusChangeParams{
Expand Down
26 changes: 10 additions & 16 deletions events_test/replace_channels_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,30 +13,24 @@ func TestReplaceChannel(t *testing.T) {
company := test_util.CreateTestCompany(t)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
event, _ := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
EventKey: "anEvent",
Channels: &[]events.CreateChannelParams{
{Key: "foo", Name: "bar", Color: "#ED303D", Index: 1, Objects: []string{"A-1", "A-2"}},
{Key: "hurdy", Name: "gurdy", Color: "#DFDFDF", Index: 2, Objects: []string{"A-3", "A-4"}},
},
}})
require.Equal(t, 0, len(event.Channels))

err := client.Channels.Create(event.Key,
&events.CreateChannelParams{Key: "foo", Name: "bar", Color: "#ED303D", Index: 1, Objects: []string{"A-1", "A-2"}},
&events.CreateChannelParams{Key: "hurdy", Name: "gurdy", Color: "#DFDFDF", Index: 2, Objects: []string{"A-3", "A-4"}},
)
require.NoError(t, err)

retrievedEvent, err := client.Events.Retrieve(event.Key)
require.Equal(t, []events.Channel{
{Key: "foo", Name: "bar", Color: "#ED303D", Index: 1, Objects: []string{"A-1", "A-2"}},
{Key: "hurdy", Name: "gurdy", Color: "#DFDFDF", Index: 2, Objects: []string{"A-3", "A-4"}},
}, retrievedEvent.Channels)

replaceError := client.Channels.Replace(event.Key,
events.Channel{Key: "aaa", Name: "bbb", Color: "#101010", Index: 1, Objects: []string{"A-5", "A-6"}},
events.Channel{Key: "ccc", Name: "ddd", Color: "#F2F2F2", Index: 2, Objects: []string{"A-7", "A-8"}},
events.CreateChannelParams{Key: "aaa", Name: "bbb", Color: "#101010", Index: 1, Objects: []string{"A-5", "A-6"}},
events.CreateChannelParams{Key: "ccc", Name: "ddd", Color: "#F2F2F2", Index: 2, Objects: []string{"A-7", "A-8"}},
)
require.NoError(t, replaceError)

postReplacementEvent, _ := client.Events.Retrieve(event.Key)
postReplacementEvent, err := client.Events.Retrieve(event.Key)
require.NoError(t, err)

require.Equal(t, []events.Channel{
{Key: "aaa", Name: "bbb", Color: "#101010", Index: 1, Objects: []string{"A-5", "A-6"}},
{Key: "ccc", Name: "ddd", Color: "#F2F2F2", Index: 2, Objects: []string{"A-7", "A-8"}},
Expand Down
50 changes: 23 additions & 27 deletions reports_test/event_reports_detailed_report_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,26 +15,26 @@ func TestDetailedReportItemProperties(t *testing.T) {
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
event, _ := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
_, err := client.Events.BookWithOptions(&events.StatusChangeParams{
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channel1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1"}},
},
}})
require.NoError(t, err)

_, err = client.Events.BookWithOptions(&events.StatusChangeParams{
Events: []string{event.Key},
StatusChanges: events.StatusChanges{
Objects: []events.ObjectProperties{{
ObjectId: "A-1",
ExtraData: events.ExtraData{"foo": "bar"},
TicketType: "ticketType1",
}},
OrderId: "order1",
OrderId: "order1",
IgnoreChannels: true,
},
})
err = client.Channels.Replace(event.Key, events.Channel{
Key: "channel1",
Name: "channel 1",
Color: "#FFFF99",
Index: 1,
Objects: []string{"A-1"},
})
_, _ = client.Events.ChangeObjectStatus([]string{event.Key}, []string{"A-1"}, events.BOOKED)
require.NoError(t, err)

report, err := client.EventReports.ByLabel(event.Key)
require.NoError(t, err)
Expand Down Expand Up @@ -500,14 +500,12 @@ func TestDetailedReportByChannel(t *testing.T) {
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
event, _ := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
err := client.Channels.Replace(event.Key, events.Channel{
Key: "channel1",
Name: "channel 1",
Color: "#FFFF99",
Index: 1,
Objects: []string{"A-1", "A-2"},
})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channel1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

report, err := client.EventReports.ByChannel(event.Key)
require.NoError(t, err)
Expand All @@ -521,14 +519,12 @@ func TestDetailedReportBySpecificChannel(t *testing.T) {
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
event, _ := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
err := client.Channels.Replace(event.Key, events.Channel{
Key: "channel1",
Name: "channel 1",
Color: "#FFFF99",
Index: 1,
Objects: []string{"A-1", "A-2"},
})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channel1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

items, err := client.EventReports.BySpecificChannel(event.Key, "channel1")
require.NoError(t, err)
Expand Down
8 changes: 6 additions & 2 deletions reports_test/event_reports_summary_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -328,8 +328,12 @@ func TestSummaryByChannel(t *testing.T) {
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChart(t, company.Admin.SecretKey)
event, _ := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey})
err := client.Channels.Replace(event.Key, events.Channel{Key: "channel1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}})
event, err := client.Events.Create(&events.CreateEventParams{ChartKey: chartKey, EventParams: &events.EventParams{
Channels: &[]events.CreateChannelParams{
{Key: "channel1", Name: "channel 1", Color: "#FFFF99", Index: 1, Objects: []string{"A-1", "A-2"}},
},
}})
require.NoError(t, err)

report, err := client.EventReports.SummaryByChannel(event.Key)
require.NoError(t, err)
Expand Down
11 changes: 6 additions & 5 deletions seasons/seasons.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ type Seasons struct {
}

type CreateSeasonParams struct {
ChartKey string `json:"chartKey"`
Key string `json:"key,omitempty"`
TableBookingConfig *events.TableBookingConfig `json:"tableBookingConfig,omitempty"`
EventKeys []string `json:"eventKeys,omitempty"`
NumberOfEvents int32 `json:"numberOfEvents,omitempty"`
ChartKey string `json:"chartKey"`
Key string `json:"key,omitempty"`
TableBookingConfig *events.TableBookingConfig `json:"tableBookingConfig,omitempty"`
EventKeys []string `json:"eventKeys,omitempty"`
NumberOfEvents int32 `json:"numberOfEvents,omitempty"`
Channels *[]events.CreateChannelParams `json:"channels,omitempty"`
}

type CreatePartialSeasonParams struct {
Expand Down
Loading

0 comments on commit c826074

Please sign in to comment.