11
11
from dsmr_datalogger .models .reading import DsmrReading
12
12
import dsmr_backend .services
13
13
import dsmr_stats .services
14
+ from dsmr_consumption .models .settings import ConsumptionSettings
14
15
15
16
16
17
class TestServices (InterceptStdoutMixin , TestCase ):
@@ -41,12 +42,8 @@ def test_analyze_service(self, now_mock):
41
42
now_mock .return_value = timezone .make_aware (timezone .datetime (2015 , 12 , 12 , hour = 1 , minute = 5 ))
42
43
dsmr_stats .services .analyze ()
43
44
44
- if dsmr_backend .services .get_capabilities (capability = 'gas' ):
45
- self .assertEqual (DayStatistics .objects .count (), 0 )
46
- self .assertEqual (HourStatistics .objects .count (), 0 )
47
- else :
48
- self .assertEqual (DayStatistics .objects .count (), 0 )
49
- self .assertEqual (HourStatistics .objects .count (), 0 )
45
+ self .assertEqual (DayStatistics .objects .count (), 0 )
46
+ self .assertEqual (HourStatistics .objects .count (), 0 )
50
47
51
48
# Still too soon.
52
49
now_mock .return_value = timezone .make_aware (timezone .datetime (2015 , 12 , 13 , hour = 1 , minute = 5 ))
@@ -471,6 +468,8 @@ def test_update_electricity_statistics(self, now_mock):
471
468
472
469
@mock .patch ('django.utils.timezone.now' )
473
470
def test_update_electricity_statistics_single_phase (self , now_mock ):
471
+ ConsumptionSettings .objects .update (compactor_grouping_type = ConsumptionSettings .COMPACTOR_GROUPING_BY_READING )
472
+
474
473
now_mock .return_value = timezone .make_aware (timezone .datetime (2018 , 1 , 1 , hour = 0 ))
475
474
stats = ElectricityStatistics .get_solo ()
476
475
self .assertIsNone (stats .highest_usage_l1_value )
@@ -479,6 +478,9 @@ def test_update_electricity_statistics_single_phase(self, now_mock):
479
478
self .assertIsNone (stats .highest_return_l1_value )
480
479
self .assertIsNone (stats .highest_return_l2_value )
481
480
self .assertIsNone (stats .highest_return_l3_value )
481
+ self .assertIsNone (stats .lowest_usage_l1_value )
482
+ self .assertIsNone (stats .lowest_usage_l2_value )
483
+ self .assertIsNone (stats .lowest_usage_l3_value )
482
484
483
485
# This has to differ, to make sure the right timestamp is used.
484
486
reading_timestamp = timezone .now ()
@@ -504,16 +506,46 @@ def test_update_electricity_statistics_single_phase(self, now_mock):
504
506
self .assertEqual (stats .highest_usage_l1_value , Decimal ('0.100' ))
505
507
self .assertEqual (stats .highest_usage_l2_value , None )
506
508
self .assertEqual (stats .highest_usage_l3_value , None )
507
- self .assertEqual (stats .highest_return_l1_value , Decimal ('1.100' ))
508
- self .assertEqual (stats .highest_return_l2_value , None )
509
- self .assertEqual (stats .highest_return_l3_value , None )
510
509
self .assertEqual (stats .highest_usage_l1_timestamp , reading_timestamp )
511
510
self .assertEqual (stats .highest_usage_l2_timestamp , None )
512
511
self .assertEqual (stats .highest_usage_l3_timestamp , None )
512
+
513
+ self .assertEqual (stats .highest_return_l1_value , Decimal ('1.100' ))
514
+ self .assertEqual (stats .highest_return_l2_value , None )
515
+ self .assertEqual (stats .highest_return_l3_value , None )
513
516
self .assertEqual (stats .highest_return_l1_timestamp , reading_timestamp )
514
517
self .assertEqual (stats .highest_return_l2_timestamp , None )
515
518
self .assertEqual (stats .highest_return_l3_timestamp , None )
516
519
520
+ self .assertEqual (stats .lowest_usage_l1_value , Decimal ('0.100' ))
521
+ self .assertEqual (stats .lowest_usage_l2_value , None )
522
+ self .assertEqual (stats .lowest_usage_l3_value , None )
523
+ self .assertEqual (stats .lowest_usage_l1_timestamp , reading_timestamp )
524
+ self .assertEqual (stats .lowest_usage_l2_timestamp , None )
525
+ self .assertEqual (stats .lowest_usage_l3_timestamp , None )
526
+
527
+ # Test a new low.
528
+ reading2 = DsmrReading .objects .create (
529
+ timestamp = reading_timestamp + timezone .timedelta (seconds = 10 ),
530
+ electricity_delivered_1 = 0 ,
531
+ electricity_returned_1 = 0 ,
532
+ electricity_delivered_2 = 0 ,
533
+ electricity_returned_2 = 0 ,
534
+ electricity_currently_delivered = 0.6 ,
535
+ electricity_currently_returned = 1.6 ,
536
+ phase_currently_delivered_l1 = 0.05 ,
537
+ phase_currently_returned_l1 = 1.0 ,
538
+ )
539
+ dsmr_stats .services .update_electricity_statistics (reading = reading2 )
540
+
541
+ stats = ElectricityStatistics .get_solo ()
542
+ self .assertEqual (stats .highest_usage_l1_value , Decimal ('0.100' ))
543
+ self .assertEqual (stats .highest_usage_l1_timestamp , reading_timestamp )
544
+ self .assertEqual (stats .highest_return_l1_value , Decimal ('1.100' ))
545
+ self .assertEqual (stats .highest_return_l1_timestamp , reading_timestamp )
546
+ self .assertEqual (stats .lowest_usage_l1_value , Decimal ('0.050' ))
547
+ self .assertEqual (stats .lowest_usage_l1_timestamp , reading2 .timestamp )
548
+
517
549
518
550
class TestServicesWithoutGas (TestServices ):
519
551
fixtures = ['dsmr_stats/electricity-consumption.json' ]
0 commit comments