@@ -1904,6 +1904,25 @@ defmodule Ecto.RepoTest do
1904
1904
assert_received { :insert , % { source: "my_schema" , on_conflict: { ^ fields , [ ] , [ ] } } }
1905
1905
end
1906
1906
1907
+ test "includes conflict target in the field list given to :replace_all_except" do
1908
+ fields = [ :map , :z , :yyy , :x ]
1909
+ TestRepo . insert ( % MySchema { id: 1 } , on_conflict: { :replace_all_except , [ :array ] } , conflict_target: [ :id ] )
1910
+ assert_received { :insert , % { source: "my_schema" , on_conflict: { ^ fields , [ ] , [ :id ] } } }
1911
+ end
1912
+
1913
+ test "excludes conflict target from the field list given to :replace" do
1914
+ fields = [ :id , :map , :z , :x ]
1915
+ TestRepo . insert ( % MySchema { id: 1 } , on_conflict: { :replace , fields } , conflict_target: [ :id ] )
1916
+ expected_fields = fields -- [ :id ]
1917
+ assert_received { :insert , % { source: "my_schema" , on_conflict: { ^ expected_fields , [ ] , [ :id ] } } }
1918
+ end
1919
+
1920
+ test "excludes conflict target from :replace_all" do
1921
+ fields = [ :map , :array , :z , :yyy , :x ]
1922
+ TestRepo . insert ( % MySchema { id: 1 } , on_conflict: :replace_all , conflict_target: [ :id ] )
1923
+ assert_received { :insert , % { source: "my_schema" , on_conflict: { ^ fields , [ ] , [ :id ] } } }
1924
+ end
1925
+
1907
1926
test "converts keyword list into query" do
1908
1927
TestRepo . insert ( % MySchema { id: 1 } , on_conflict: [ set: [ x: "123" , y: "456" ] ] )
1909
1928
assert_received { :insert , % { source: "my_schema" , on_conflict: { query , [ "123" , "456" ] , [ ] } } }
0 commit comments