@@ -8,32 +8,40 @@ defmodule CodeCorps.Validators.TimeValidatorTest do
88 describe "validate_time_not_before/2" do
99 test "when the time happened before" do
1010 # set the time to 1 day before the previous (recorded) time
11- current_time = @ previous_time |> Timex . shift ( days: - 1 )
12- changeset = cast_times ( @ previous_time , current_time , :modified_at )
11+ new_time = @ previous_time |> Timex . shift ( days: - 1 )
12+ changeset = cast_times ( @ previous_time , new_time , :modified_at )
1313 changeset = changeset |> validate_time_not_before ( :modified_at )
1414 refute changeset . valid?
1515 end
1616
1717 test "when the time happened at the same time" do
18- current_time = @ previous_time
19- changeset = cast_times ( @ previous_time , current_time , :modified_at )
18+ new_time = @ previous_time
19+ changeset = cast_times ( @ previous_time , new_time , :modified_at )
20+ changeset = changeset |> validate_time_not_before ( :modified_at )
21+ assert changeset . valid?
22+ end
23+
24+ test "when the time happened at the same second but with microseconds of difference" do
25+ previous_time = @ previous_time |> Timex . shift ( milliseconds: 500 )
26+ new_time = previous_time |> truncate ( :second )
27+ changeset = cast_times ( previous_time , new_time , :modified_at )
2028 changeset = changeset |> validate_time_not_before ( :modified_at )
2129 assert changeset . valid?
2230 end
2331
2432 test "when the time happened after" do
2533 # set the time to 1 day after the previous (recorded) time
26- current_time = @ previous_time |> Timex . shift ( days: 1 )
27- changeset = cast_times ( @ previous_time , current_time , :modified_at )
34+ new_time = @ previous_time |> Timex . shift ( days: 1 )
35+ changeset = cast_times ( @ previous_time , new_time , :modified_at )
2836 changeset = changeset |> validate_time_not_before ( :modified_at )
2937 assert changeset . valid?
3038 end
3139 end
3240
33- defp cast_times ( previous_time , current_time , field ) do
41+ defp cast_times ( previous_time , new_time , field ) do
3442 data = Map . put ( % { } , field , previous_time )
3543 fields = Map . put ( % { } , field , :utc_datetime )
36- params = Map . put ( % { } , field , current_time )
44+ params = Map . put ( % { } , field , new_time )
3745 Ecto.Changeset . cast ( { data , fields } , params , [ field ] )
3846 end
3947end
0 commit comments