@@ -1904,6 +1904,25 @@ defmodule Ecto.RepoTest do
19041904 assert_received { :insert , % { source: "my_schema" , on_conflict: { ^ fields , [ ] , [ ] } } }
19051905 end
19061906
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+
19071926 test "converts keyword list into query" do
19081927 TestRepo . insert ( % MySchema { id: 1 } , on_conflict: [ set: [ x: "123" , y: "456" ] ] )
19091928 assert_received { :insert , % { source: "my_schema" , on_conflict: { query , [ "123" , "456" ] , [ ] } } }
0 commit comments