Skip to content

Commit 3045936

Browse files
committed
chore: Handle optional forecasts
1 parent 2b6619b commit 3045936

File tree

2 files changed

+212
-1
lines changed

2 files changed

+212
-1
lines changed

custom_components/octopus_energy/api_client/fan_club.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class FanClubStatusItem(BaseModel):
2525
discountSource: str
2626
current: DiscountPeriod
2727
historic: List[DiscountPeriod]
28-
forecast: ForecastInfo
28+
forecast: ForecastInfo | None
2929

3030

3131
class FanClubResponse(BaseModel):

tests/unit/api_client/test_fan_club.py

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,5 +404,216 @@ def test_when_valid_dictionary_returned_then_it_can_be_parsed_into_fan_club_obje
404404
# Act
405405
result = FanClubResponse.parse_obj(data)
406406

407+
# Assert
408+
assert result is not None
409+
410+
def test_when_forecast_is_none_then_it_can_be_parsed_into_fan_club_object():
411+
# Arrange
412+
data = {
413+
"fanClubStatus": [
414+
{
415+
"discountSource": "#1 Fan: Market Weighton - Carr Farm",
416+
"current": {
417+
"startAt": "2023-11-19T22:08:00.300415+00:00",
418+
"discount": "0.500"
419+
},
420+
"historic": [
421+
{
422+
"startAt": "2023-11-19T21:30:00+00:00",
423+
"discount": "0.500"
424+
},
425+
{
426+
"startAt": "2023-11-19T21:00:00+00:00",
427+
"discount": "0.500"
428+
},
429+
{
430+
"startAt": "2023-11-19T20:30:00+00:00",
431+
"discount": "0.500"
432+
},
433+
{
434+
"startAt": "2023-11-19T20:00:00+00:00",
435+
"discount": "0.500"
436+
},
437+
{
438+
"startAt": "2023-11-19T19:30:00+00:00",
439+
"discount": "0.200"
440+
},
441+
{
442+
"startAt": "2023-11-19T19:00:00+00:00",
443+
"discount": "0.200"
444+
},
445+
{
446+
"startAt": "2023-11-19T18:30:00+00:00",
447+
"discount": "0.200"
448+
},
449+
{
450+
"startAt": "2023-11-19T18:00:00+00:00",
451+
"discount": "0.200"
452+
},
453+
{
454+
"startAt": "2023-11-19T17:30:00+00:00",
455+
"discount": "0.200"
456+
},
457+
{
458+
"startAt": "2023-11-19T17:00:00+00:00",
459+
"discount": "0.200"
460+
},
461+
{
462+
"startAt": "2023-11-19T16:30:00+00:00",
463+
"discount": "0.200"
464+
},
465+
{
466+
"startAt": "2023-11-19T16:00:00+00:00",
467+
"discount": "0.200"
468+
},
469+
{
470+
"startAt": "2023-11-19T15:30:00+00:00",
471+
"discount": "0.200"
472+
},
473+
{
474+
"startAt": "2023-11-19T15:00:00+00:00",
475+
"discount": "0.200"
476+
},
477+
{
478+
"startAt": "2023-11-19T14:30:00+00:00",
479+
"discount": "0.200"
480+
},
481+
{
482+
"startAt": "2023-11-19T14:00:00+00:00",
483+
"discount": "0.200"
484+
},
485+
{
486+
"startAt": "2023-11-19T13:30:00+00:00",
487+
"discount": "0.200"
488+
},
489+
{
490+
"startAt": "2023-11-19T13:00:00+00:00",
491+
"discount": "0.200"
492+
},
493+
{
494+
"startAt": "2023-11-19T12:30:00+00:00",
495+
"discount": "0.200"
496+
},
497+
{
498+
"startAt": "2023-11-19T12:00:00+00:00",
499+
"discount": "0.200"
500+
},
501+
{
502+
"startAt": "2023-11-19T11:30:00+00:00",
503+
"discount": "0.200"
504+
},
505+
{
506+
"startAt": "2023-11-19T11:00:00+00:00",
507+
"discount": "0.500"
508+
},
509+
{
510+
"startAt": "2023-11-19T10:30:00+00:00",
511+
"discount": "0.500"
512+
},
513+
{
514+
"startAt": "2023-11-19T10:00:00+00:00",
515+
"discount": "0.500"
516+
},
517+
{
518+
"startAt": "2023-11-19T09:30:00+00:00",
519+
"discount": "0.500"
520+
},
521+
{
522+
"startAt": "2023-11-19T09:00:00+00:00",
523+
"discount": "0.500"
524+
},
525+
{
526+
"startAt": "2023-11-19T08:30:00+00:00",
527+
"discount": "0.500"
528+
},
529+
{
530+
"startAt": "2023-11-19T08:00:00+00:00",
531+
"discount": "0.500"
532+
},
533+
{
534+
"startAt": "2023-11-19T07:30:00+00:00",
535+
"discount": "0.200"
536+
},
537+
{
538+
"startAt": "2023-11-19T07:00:00+00:00",
539+
"discount": "0.500"
540+
},
541+
{
542+
"startAt": "2023-11-19T06:30:00+00:00",
543+
"discount": "0.200"
544+
},
545+
{
546+
"startAt": "2023-11-19T06:00:00+00:00",
547+
"discount": "0.200"
548+
},
549+
{
550+
"startAt": "2023-11-19T05:30:00+00:00",
551+
"discount": "0.500"
552+
},
553+
{
554+
"startAt": "2023-11-19T05:00:00+00:00",
555+
"discount": "0.500"
556+
},
557+
{
558+
"startAt": "2023-11-19T04:30:00+00:00",
559+
"discount": "0.200"
560+
},
561+
{
562+
"startAt": "2023-11-19T04:00:00+00:00",
563+
"discount": "0.500"
564+
},
565+
{
566+
"startAt": "2023-11-19T03:30:00+00:00",
567+
"discount": "0.500"
568+
},
569+
{
570+
"startAt": "2023-11-19T03:00:00+00:00",
571+
"discount": "0.500"
572+
},
573+
{
574+
"startAt": "2023-11-19T02:30:00+00:00",
575+
"discount": "0.500"
576+
},
577+
{
578+
"startAt": "2023-11-19T02:00:00+00:00",
579+
"discount": "0.500"
580+
},
581+
{
582+
"startAt": "2023-11-19T01:30:00+00:00",
583+
"discount": "0.500"
584+
},
585+
{
586+
"startAt": "2023-11-19T01:00:00+00:00",
587+
"discount": "0.500"
588+
},
589+
{
590+
"startAt": "2023-11-19T00:30:00+00:00",
591+
"discount": "0.500"
592+
},
593+
{
594+
"startAt": "2023-11-19T00:00:00+00:00",
595+
"discount": "0.500"
596+
},
597+
{
598+
"startAt": "2023-11-18T23:30:00+00:00",
599+
"discount": "0.500"
600+
},
601+
{
602+
"startAt": "2023-11-18T23:00:00+00:00",
603+
"discount": "0.200"
604+
},
605+
{
606+
"startAt": "2023-11-18T22:30:00+00:00",
607+
"discount": "0.200"
608+
}
609+
],
610+
"forecast": None
611+
}
612+
]
613+
}
614+
615+
# Act
616+
result = FanClubResponse.parse_obj(data)
617+
407618
# Assert
408619
assert result is not None

0 commit comments

Comments
 (0)