1313# limitations under the License.
1414
1515from datetime import datetime
16+ from unittest import mock
1617from unittest .mock import MagicMock
1718
1819import grpc
1920import grpc_testing
2021import numpy as np
2122import pandas as pd
2223import pytest
24+ from freezegun import freeze_time
2325from google .protobuf .timestamp_pb2 import Timestamp
2426from pandas .util .testing import assert_frame_equal
2527
@@ -548,11 +550,16 @@ def _create_bq_spec(self, id, project, dataset):
548550 def test_ensure_valid_timestamp_in_dataframe_with_no_timestamp (
549551 self , mock_feast_client , dataframe , expected
550552 ):
551- timestamp_column = mock_feast_client ._ensure_valid_timestamp_in_dataframe (
553+ timestamp_column_created = mock_feast_client ._ensure_valid_timestamp_in_dataframe (
552554 dataframe
553555 )
554- pd .testing .assert_frame_equal (dataframe , expected , check_less_precise = 0 )
555- assert timestamp_column == "_event_timestamp"
556+ assert dataframe .columns .values .tolist () == expected .columns .values .tolist ()
557+ assert timestamp_column_created == "_event_timestamp"
558+ timestamp_second_difference = int (
559+ (expected ["_event_timestamp" ] - dataframe ["_event_timestamp" ]).mean ()
560+ / np .timedelta64 (1 , "s" )
561+ )
562+ assert timestamp_second_difference < 3
556563
557564 @pytest .mark .parametrize (
558565 "dataframe, expected" ,
@@ -674,9 +681,9 @@ def test_ensure_valid_timestamp_in_dataframe_with_invalid_timestamp_value(
674681 pd .DataFrame ({"entity_id" : [1 , 3 , 4 , 1 ], "feature_1" : [1 , 2 , 5 , 9 ]}),
675682 pd .DataFrame (
676683 {
677- "entity_id" : [1 , 3 ],
678- "feature_1" : [1 , 2 ],
679- "feature_2" : ["text" , np .NaN ],
684+ "entity_id" : [1 , 3 , 4 ],
685+ "feature_1" : [1 , 7 , np . NaN ],
686+ "feature_2" : ["text" , np .NaN , "text" ],
680687 }
681688 ),
682689 ],
@@ -692,29 +699,11 @@ def test_load_features_from_dataframe(self, mock_feast_client, dataframe):
692699
693700 @pytest .mark .parametrize (
694701 "dataframe" ,
695- [
696- pd .DataFrame ({"entity_id" : [1 , 3 , 4 , 1 ], "feature_1" : [1 , 2 , 5 , 9 ]}),
697- pd .DataFrame (
698- {
699- "entity_id" : [1 , 3 , 4 ],
700- "feature_1" : [1 , 7 , np .NaN ],
701- "feature_2" : ["text" , np .NaN , "text" ],
702- }
703- ),
704- ],
702+ [pd .DataFrame ({"entity_id" : [1 , 3 , 4 , 1 ], "feature_1" : [1 , 2 , 5 , 9 ]})],
705703 )
706- def test_load_features_from_dataframe_with_inconsiste (self , mock_feast_client , dataframe ):
707- mock_feast_client .load_features_from_dataframe (
708- dataframe = dataframe , entity_name = "entity" , entity_key_column = "entity_id"
709- )
710- mock_feast_client ._core_service_stub .ApplyEntity .assert_called_with (
711- EntitySpec (name = "entity" , description = "" , tags = [])
712- )
713- mock_feast_client ._core_service_stub .ApplyFeatures .assert_called ()
714-
715- def test_load_features_from_dataframe_with_non_existent_entity_key_column (self ):
716- dataframe = pd .DataFrame ({"entity_id" : [1 , 3 , 4 , 1 ], "feature_1" : [1 , 2 , 5 , 9 ]})
717- mock_feast_client = Client ()
704+ def test_load_features_from_dataframe_with_non_existent_entity_key_column (
705+ self , mock_feast_client , dataframe
706+ ):
718707 with pytest .raises (ValueError ):
719708 mock_feast_client .load_features_from_dataframe (
720709 dataframe = dataframe ,
0 commit comments