def it_errors_out_if_with_invalid_week_end_date(spark): df = spark.create_df( [ (datetime.datetime(2020, 1, 2), datetime.datetime( 2019, 12, 29)), ], [("some_date", DateType(), True), ("expected", DateType(), True)], ) with pytest.raises(ValueError) as excinfo: df.withColumn("week_start_date", quinn.week_end_date(F.col("some_date"), "Friday")) assert ( excinfo.value.args[0] == "The day you entered 'Friday' is not valid. Here are the valid days: [Mon,Tue,Wed,Thu,Fri,Sat,Sun]" )
def it_defaults_to_saturday_week_end(spark): df = spark.create_df( [ # converts a Tuesday to the Saturday after (datetime.datetime(2020, 1, 2), datetime.datetime(2020, 1, 4)), # converts a Wednesday to the Saturday after (datetime.datetime(2020, 7, 15), datetime.datetime( 2020, 7, 18)), # doesn't change if the day is Saturday (datetime.datetime(2020, 7, 25), datetime.datetime( 2020, 7, 25)), (None, None), ], [("some_date", DateType(), True), ("expected", DateType(), True)], ) actual_df = df.withColumn("week_start_date", quinn.week_end_date(F.col("some_date"))) chispa.assert_column_equality(actual_df, "week_start_date", "expected")
def it_works_with_end_date_of_sunday(spark): df = spark.create_df( [ # converts a Thursday to the Sunday after (datetime.datetime(2020, 1, 2), datetime.datetime(2020, 1, 5)), # converts a Wednesday to the Sunday after (datetime.datetime(2020, 7, 15), datetime.datetime( 2020, 7, 19)), # doesn't change if the day in a Sunday (datetime.datetime(2020, 7, 19), datetime.datetime( 2020, 7, 19)), (None, None), ], [("some_date", DateType(), True), ("expected", DateType(), True)], ) actual_df = df.withColumn( "week_start_date", quinn.week_end_date(F.col("some_date"), "Sun")) chispa.assert_column_equality(actual_df, "week_start_date", "expected")