diff --git a/seatsio/charts/chartsClient.py b/seatsio/charts/chartsClient.py index df970f8..f0a6ef9 100644 --- a/seatsio/charts/chartsClient.py +++ b/seatsio/charts/chartsClient.py @@ -4,7 +4,7 @@ from seatsio.reports.charts.chartReports import ChartReports from seatsio.charts.chartsRequest import ChartRequest -from seatsio.domain import Chart, ChartValidation, Category +from seatsio.domain import Chart, ChartValidation, Category, event_from_json from seatsio.pagination.listableObjectsClient import ListableObjectsClient from seatsio.pagination.lister import Lister from seatsio.pagination.pageFetcher import PageFetcher @@ -103,6 +103,9 @@ def update_category(self, chart_key, category_key, label, color, accessible): category_key=category_key) \ .post(UpdateCategoryRequest(label, color, accessible)) + def events(self, chart_key): + return Lister(PageFetcher(event_from_json, self.http_client, "/charts/{key}/events", key=chart_key)) + def move_to_archive(self, chart_key): self.http_client.url("/charts/{key}/actions/move-to-archive", key=chart_key).post() diff --git a/tests/charts/testListEventsOfChart.py b/tests/charts/testListEventsOfChart.py new file mode 100644 index 0000000..d6108a9 --- /dev/null +++ b/tests/charts/testListEventsOfChart.py @@ -0,0 +1,31 @@ +from tests.seatsioClientTest import SeatsioClientTest +from tests.util.asserts import assert_that + + +class ListEventsOfChartTest(SeatsioClientTest): + + def test_all(self): + chart = self.client.charts.create() + other_chart = self.client.charts.create() + event1 = self.client.events.create(chart.key) + self.client.events.create(other_chart.key) + event2 = self.client.events.create(chart.key) + event3 = self.client.events.create(chart.key) + + events = self.client.charts.events(chart.key).list() + + assert_that(events).extracting("key").contains_exactly(event3.key, event2.key, event1.key) + + def test_pages(self): + chart = self.client.charts.create() + event1 = self.client.events.create(chart.key) + event2 = self.client.events.create(chart.key) + event3 = self.client.events.create(chart.key) + + first_page = self.client.charts.events(chart.key).first_page(page_size=2) + page_after = self.client.charts.events(chart.key).page_after(first_page.next_page_starts_after, page_size=2) + + assert_that(first_page.items).extracting("id").contains_exactly(event3.id, event2.id) + assert_that(first_page.next_page_starts_after).is_equal_to(event2.id) + assert_that(page_after.items).extracting("id").contains_exactly(event1.id) + assert_that(page_after.next_page_starts_after).is_none()