def test_pcoll_visualization_generate_unique_display_id(self): pv_1 = pv.PCollectionVisualization(self._stream) pv_2 = pv.PCollectionVisualization(self._stream) self.assertNotEqual(pv_1._dive_display_id, pv_2._dive_display_id) self.assertNotEqual(pv_1._overview_display_id, pv_2._overview_display_id) self.assertNotEqual(pv_1._df_display_id, pv_2._df_display_id)
def test_raise_error_for_non_pcoll_input(self): class Foo(object): pass with self.assertRaises(AssertionError) as ctx: pv.PCollectionVisualization(Foo()) self.assertTrue('pcoll should be apache_beam.pvalue.PCollection' in ctx.exception)
def test_dynamic_plotting_updates_same_display(self, mocked_display_dataframe, mocked_display_overview, mocked_display_dive): original_pcollection_visualization = pv.PCollectionVisualization( self._pcoll) # Dynamic plotting always creates a new PCollectionVisualization. new_pcollection_visualization = pv.PCollectionVisualization(self._pcoll) # The display uses ANY data the moment display is invoked, and updates # web elements with ids fetched from the given updating_pv. new_pcollection_visualization.display_facets( updating_pv=original_pcollection_visualization) mocked_display_dataframe.assert_called_once_with( ANY, original_pcollection_visualization._df_display_id) mocked_display_overview.assert_called_once_with( ANY, original_pcollection_visualization._overview_display_id) mocked_display_dive.assert_called_once_with( ANY, original_pcollection_visualization._dive_display_id)