def test_badParameterEndDateString(self): start_date = datetime(2018, 10, 5, 12, 0, 0) client = SrpEnergyClient(self.accountid, self.username, self.password) with self.assertRaises(ValueError): client.usage(start_date, '20181001')
def test_bad_crendentials(self): start_date = datetime(2018, 9, 19, 0, 0, 0) end_date = datetime(2018, 9, 19, 23, 0, 0) client = SrpEnergyClient('a', 'b', 'c') with self.assertRaises(TypeError): client.usage(start_date, end_date)
def test_badParameterStartDateAfterNow(self): start_date = datetime.now() + timedelta(days=10) end_date = datetime(2018, 10, 5, 12, 0, 0) client = SrpEnergyClient(self.accountid, self.username, self.password) with self.assertRaises(ValueError): client.usage(start_date, end_date)
def test_bad_parameter_end_date_string(): """Test end date is date.""" with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_ACCOUNT_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime(2018, 10, 5, 12, 0, 0) with pytest.raises(ValueError): client.usage(start_date, "20181001")
def test_error_usage_payload(): """Test error with invalid usage payload.""" with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_BAD_ACCOUNT_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime(2018, 9, 19, 0, 0, 0) end_date = datetime(2018, 9, 19, 23, 0, 0) with pytest.raises(Exception): client.usage(start_date, end_date)
def test_bad_parameter_start_date_after_now(): """Test start date is not after Now.""" with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_ACCOUNT_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime.now() + timedelta(days=10) end_date = datetime.now() + timedelta(days=15) with pytest.raises(ValueError): client.usage(start_date, end_date)
def test_getUsage(self): start_date = datetime(2018, 10, 1, 6, 0, 0) end_date = datetime(2018, 10, 5, 12, 0, 0) client = SrpEnergyClient(self.accountid, self.username, self.password) usage = client.usage(start_date, end_date) self.assertEqual(len(usage), 120)
def test_latestDayUsageKw(self): start_date = datetime(2018, 9, 19, 0, 0, 0) end_date = datetime(2018, 9, 19, 23, 0, 0) client = SrpEnergyClient(self.accountid, self.username, self.password) usage = client.usage(start_date, end_date) self.assertEqual(len(usage), 24) date, hour, isodate, kwh, cost = usage[-1] self.assertEqual(kwh, '0.4') self.assertEqual(cost, '0.09')
def test_get_usage(): """Test usage.""" with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_ACCOUNT_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime(2018, 10, 1, 6, 0, 0) end_date = datetime(2018, 10, 5, 12, 0, 0) usage = client.usage(start_date, end_date) assert len(usage) == 3
def test_daily_aggregation_tou(): """Test that hourly roll up matches SRP Daily.""" # "dailyReadList": [{ # "day": "2018-06-28T07:00:00Z", # "date": "2018-06-28T07:00:00Z", # "meterReadDate": "2018-06-29T00:00:00-07:00", # "superOffPeakKwh": 0.0, # "shoulderKwh": 0.0, # "offPeakKwh": 61.0, # "onPeakKwh": 39.0, # "totalKwh": 0.0, # "onPeakCost": 9.33, # "offPeakCost": 5.51, # "shoulderCost": 0.0, # "superOffPeakCost": 0.0, # "totalCost": 0.0, # "dailyCost": 14.84 # } with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_ACCOUNT_TOU_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime(2020, 6, 28, 0, 0, 0) end_date = datetime(2020, 6, 28, 23, 0, 0) usage = client.usage(start_date, end_date, True) total_kwh = 0 total_cost = 0 for line in usage: _date, _hour, _isodate, kwh, cost = line total_kwh = total_kwh + kwh total_cost = total_cost + cost assert len(usage) == 24 assert total_kwh == 123 assert total_cost == 8.92
def test_latest_day_usage_kw(): """Test Latest Day Usage for kwh.""" with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_ACCOUNT_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime(2018, 9, 19, 0, 0, 0) end_date = datetime(2018, 9, 19, 23, 0, 0) usage = client.usage(start_date, end_date) assert len(usage) == 3 _date, _hour, _isodate, kwh, cost = usage[-1] assert kwh == 0.4 assert cost == 0.08
def test_time_of_use_winter_on_peak_usage(): """Test Time of Use for winter on Peak Usage for kwh.""" with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_ACCOUNT_TOU_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime(2019, 12, 19, 0, 0, 0) end_date = datetime(2019, 12, 19, 23, 0, 0) usage = client.usage(start_date, end_date, True) assert len(usage) == 3 _date, _hour, _isodate, kwh, cost = usage[0] assert kwh == 2.5 assert cost == 0.24
def test_date_timezone_error(): """Test error with invalid usage payload.""" with patch(PATCH_GET) as session_get, patch(PATCH_POST) as session_post: session_post.return_value = MOCK_LOGIN_RESPONSE session_get.side_effect = get_mock_requests(ROUTES) client = SrpEnergyClient(TEST_ACCOUNT_ID, TEST_USER_NAME, TEST_PASSWORD) start_date = datetime.now(timezone.utc) + timedelta(days=-1) end_date = datetime.now(timezone.utc) usage = client.usage(start_date, end_date) assert len(usage) == 3 _date, _hour, _isodate, kwh, cost = usage[-1] assert kwh == 0.4 assert cost == 0.08