Skip to content

Commit

Permalink
Expose floor info (#64)
Browse files Browse the repository at this point in the history
For multi-floor charts, floor information is included in chart reports.

Co-authored-by: Steve Chaloner <[email protected]>
  • Loading branch information
2 people authored and bverbeken committed Oct 4, 2024
1 parent 6e97e3f commit 00bd9fb
Show file tree
Hide file tree
Showing 3 changed files with 156 additions and 359 deletions.
6 changes: 6 additions & 0 deletions reports/chart_reports.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ type ChartReport struct {
Items map[string][]ChartReportItem
}

type Floor struct {
Name string `json:"name"`
DisplayName string `json:"displayName"`
}

type ChartReportItem struct {
Label string `json:"label,omitempty"`
Labels events.Labels `json:"labels,omitempty"`
Expand All @@ -45,6 +50,7 @@ type ChartReportItem struct {
IsCompanionSeat bool `json:"isCompanionSeat,omitempty"`
HasRestrictedView bool `json:"hasRestrictedView,omitempty"`
Zone string `json:"zone,omitempty"`
Floor Floor `json:"floor,omitempty"`
}

type chartReportOptions struct {
Expand Down
91 changes: 91 additions & 0 deletions reports_test/chart_reports_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ func TestReportItemProperties(t *testing.T) {
require.NotNil(t, item.IsAccessible)
require.NotNil(t, item.IsCompanionSeat)
require.NotNil(t, item.HasRestrictedView)
require.NotNil(t, item.Floor)
}

func TestReportItemPropertiesForGA(t *testing.T) {
Expand Down Expand Up @@ -114,6 +115,24 @@ func TestByLabel_BookWholeTablesChart(t *testing.T) {
require.NotNil(t, chartReport.Items["T2"])
}

func TestByLabel_WithFloors(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChartWithFloors(t, company.Admin.SecretKey)

chartReport, err := client.ChartReports.ByLabel(chartKey)
require.NoError(t, err)
require.Equal(t, "1", chartReport.Items["S1-A-1"][0].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["S1-A-1"][0].Floor.DisplayName)
require.Equal(t, "1", chartReport.Items["S1-A-2"][0].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["S1-A-2"][0].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["S2-B-1"][0].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["S2-B-1"][0].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["S2-B-2"][0].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["S2-B-2"][0].Floor.DisplayName)
}

func TestByObjectType(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
Expand All @@ -126,6 +145,24 @@ func TestByObjectType(t *testing.T) {
require.Len(t, chartReport.Items["generalAdmission"], 2)
}

func TestByObjectType_WithFloors(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChartWithFloors(t, company.Admin.SecretKey)

chartReport, err := client.ChartReports.ByObjectType(chartKey)
require.NoError(t, err)
require.Equal(t, "1", chartReport.Items["seat"][0].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["seat"][0].Floor.DisplayName)
require.Equal(t, "1", chartReport.Items["seat"][1].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["seat"][1].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["seat"][2].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["seat"][2].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["seat"][3].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["seat"][3].Floor.DisplayName)
}

func TestByCategoryKey(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
Expand All @@ -138,6 +175,24 @@ func TestByCategoryKey(t *testing.T) {
require.Len(t, chartReport.Items["10"], 17)
}

func TestByCategoryKey_WithFloors(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChartWithFloors(t, company.Admin.SecretKey)

chartReport, err := client.ChartReports.ByCategoryKey(chartKey)
require.NoError(t, err)
require.Equal(t, "1", chartReport.Items["1"][0].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["1"][0].Floor.DisplayName)
require.Equal(t, "1", chartReport.Items["1"][1].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["1"][1].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["2"][0].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["2"][0].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["2"][1].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["2"][1].Floor.DisplayName)
}

func TestByCategoryLabel(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
Expand All @@ -150,6 +205,24 @@ func TestByCategoryLabel(t *testing.T) {
require.Len(t, chartReport.Items["Cat2"], 17)
}

func TestByCategoryLabel_WithFloors(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChartWithFloors(t, company.Admin.SecretKey)

chartReport, err := client.ChartReports.ByCategoryLabel(chartKey)
require.NoError(t, err)
require.Equal(t, "1", chartReport.Items["CatA"][0].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["CatA"][0].Floor.DisplayName)
require.Equal(t, "1", chartReport.Items["CatA"][1].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["CatA"][1].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["CatB"][0].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["CatB"][0].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["CatB"][1].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["CatB"][1].Floor.DisplayName)
}

func TestBySection(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
Expand All @@ -162,6 +235,24 @@ func TestBySection(t *testing.T) {
require.Len(t, chartReport.Items["Section B"], 35)
}

func TestBySection_WithFloors(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
client := seatsio.NewSeatsioClient(test_util.BaseUrl, company.Admin.SecretKey)
chartKey := test_util.CreateTestChartWithFloors(t, company.Admin.SecretKey)

chartReport, err := client.ChartReports.BySection(chartKey)
require.NoError(t, err)
require.Equal(t, "1", chartReport.Items["S1"][0].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["S1"][0].Floor.DisplayName)
require.Equal(t, "1", chartReport.Items["S1"][1].Floor.Name)
require.Equal(t, "Floor 1", chartReport.Items["S1"][1].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["S2"][0].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["S2"][0].Floor.DisplayName)
require.Equal(t, "2", chartReport.Items["S2"][1].Floor.Name)
require.Equal(t, "Floor 2", chartReport.Items["S2"][1].Floor.DisplayName)
}

func TestByZone(t *testing.T) {
t.Parallel()
company := test_util.CreateTestCompany(t)
Expand Down
Loading

0 comments on commit 00bd9fb

Please sign in to comment.