Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-01 09:34:24

0001 from datetime import datetime, timezone
0002 from unittest.mock import patch
0003 
0004 from django.template.loader import render_to_string
0005 from django.test import SimpleTestCase
0006 
0007 from monitor_app.snapper_providers import _delivery_card
0008 
0009 
0010 class DeliveryCardTests(SimpleTestCase):
0011     @patch('monitor_app.snapper_providers._pc_cache')
0012     def test_scope_cut_omits_campaign_detail(self, pc_cache):
0013         self.assertIsNone(_delivery_card(
0014             {'campaigns': {'26.08': {}}}, {}, {'params': {}}))
0015         pc_cache.assert_not_called()
0016 
0017     @patch('monitor_app.snapper_providers._pc_cache')
0018     def test_day_table_shows_event_completion_as_rightmost_column(
0019             self, pc_cache):
0020         pc_cache.return_value = {
0021             'requestors': {'pc1': ['PWG']},
0022             'keys': {'pc1': 'configuration'},
0023             'categories': {'pc1': 'DIS'},
0024         }
0025         data = {
0026             'campaigns': {
0027                 '26.08': {
0028                     'totals': {
0029                         'arrived_files': 1,
0030                         'arrived_events': 10,
0031                         'events': 25,
0032                     },
0033                     'leaves': {
0034                         'pc1': {
0035                             'arrived_files': 1,
0036                             'arrived_events': 10,
0037                             'events': 25,
0038                             'cum_files': 2,
0039                             'expected': 100,
0040                             'tier': 'included',
0041                         },
0042                     },
0043                 },
0044             },
0045         }
0046 
0047         card = _delivery_card(
0048             data,
0049             {},
0050             {
0051                 'params': {'campaign': '26.08', 'lens': 'category'},
0052                 'requested_at': datetime(2026, 8, 11, tzinfo=timezone.utc),
0053             },
0054         )
0055 
0056         row = card['campaigns'][0]['day_groups'][0]['rows'][0]
0057         self.assertEqual(row['completion'], 25.0)
0058         campaign = card['campaigns'][0]
0059         self.assertTrue(campaign['daily'])
0060         self.assertEqual(campaign['arrivals_detail_key'],
0061                          'delivery-arrivals-26_08')
0062         self.assertEqual(campaign['categories_detail_key'],
0063                          'delivery-categories-26_08')
0064         self.assertEqual(campaign['category_rows'], [{
0065             'name': 'DIS',
0066             'configurations': 1,
0067             'events': 25,
0068             'files': 2,
0069             'curve': 'dlvc_cat_26_08_dis dlvcf_cat_26_08_dis',
0070         }])
0071         html = render_to_string(
0072             'monitor_app/_snapper_cards.html', {'card': card})
0073         self.assertIn('25.0%', html)
0074         self.assertIn(
0075             'data-snapper-detail-key="delivery-arrivals-26_08"', html)
0076         self.assertIn(
0077             'data-snapper-detail-key="delivery-categories-26_08"', html)
0078         self.assertIn('Cumulative by category ยท 26.08', html)
0079         self.assertLess(
0080             html.index('<th>Target events</th>'),
0081             html.index('<th>% complete</th>'),
0082         )