@@ -33,11 +33,25 @@ def _create_match_rule(self, field_ids_data, overwrite=True):
3333 self .env ["spp.import.match.fields" ].create (data )
3434 return match
3535
36- def test_load_no_usable_rules (self ):
37- """When no usable rules exist , load() passes through to super() ."""
36+ def test_load_no_context_passes_through (self ):
37+ """When import_match_ids not in context , load() passes through to default Odoo import ."""
3838 result = self .env ["res.partner" ].load (
3939 ["name" , "email" ],
40- [["NoRuleTest99xyz" , "norule@test.com" ]],
40+ [["NoCtxTest99xyz" , "noctx@test.com" ]],
41+ )
42+ self .assertFalse (result ["messages" ])
43+ partner = self .env ["res.partner" ].search ([("name" , "=" , "NoCtxTest99xyz" )])
44+ self .assertEqual (len (partner ), 1 )
45+
46+ def test_load_no_usable_rules (self ):
47+ """When import_match_ids in context but no usable rules, load() passes through."""
48+ result = (
49+ self .env ["res.partner" ]
50+ .with_context (import_match_ids = [])
51+ .load (
52+ ["name" , "email" ],
53+ [["NoRuleTest99xyz" , "norule@test.com" ]],
54+ )
4155 )
4256 self .assertFalse (result ["messages" ])
4357 partner = self .env ["res.partner" ].search ([("name" , "=" , "NoRuleTest99xyz" )])
@@ -46,10 +60,14 @@ def test_load_no_usable_rules(self):
4660 def test_load_match_overwrite_true (self ):
4761 """Match found + overwrite=True -> record updated."""
4862 partner = self .env ["res.partner" ].create ({"name" : "OverwriteTrue99xyz" , "email" : "old@test.com" })
49- self ._create_match_rule ([{"field_id" : self .name_field .id }], overwrite = True )
50- result = self .env ["res.partner" ].load (
51- ["name" , "email" ],
52- [["OverwriteTrue99xyz" , "new@test.com" ]],
63+ match = self ._create_match_rule ([{"field_id" : self .name_field .id }], overwrite = True )
64+ result = (
65+ self .env ["res.partner" ]
66+ .with_context (import_match_ids = [match .id ])
67+ .load (
68+ ["name" , "email" ],
69+ [["OverwriteTrue99xyz" , "new@test.com" ]],
70+ )
5371 )
5472 self .assertFalse (result ["messages" ])
5573 partner .invalidate_recordset ()
@@ -58,20 +76,28 @@ def test_load_match_overwrite_true(self):
5876 def test_load_match_overwrite_false (self ):
5977 """Match found + overwrite=False -> record skipped."""
6078 partner = self .env ["res.partner" ].create ({"name" : "OverwriteFalse99xyz" , "email" : "original@test.com" })
61- self ._create_match_rule ([{"field_id" : self .name_field .id }], overwrite = False )
62- self .env ["res.partner" ].load (
63- ["name" , "email" ],
64- [["OverwriteFalse99xyz" , "changed@test.com" ]],
79+ match = self ._create_match_rule ([{"field_id" : self .name_field .id }], overwrite = False )
80+ (
81+ self .env ["res.partner" ]
82+ .with_context (import_match_ids = [match .id ])
83+ .load (
84+ ["name" , "email" ],
85+ [["OverwriteFalse99xyz" , "changed@test.com" ]],
86+ )
6587 )
6688 partner .invalidate_recordset ()
6789 self .assertEqual (partner .email , "original@test.com" )
6890
6991 def test_load_no_match_creates_record (self ):
7092 """No match found -> new record created."""
71- self ._create_match_rule ([{"field_id" : self .name_field .id }])
72- result = self .env ["res.partner" ].load (
73- ["name" , "email" ],
74- [["BrandNewPartner99xyz" , "brandnew@test.com" ]],
93+ match = self ._create_match_rule ([{"field_id" : self .name_field .id }])
94+ result = (
95+ self .env ["res.partner" ]
96+ .with_context (import_match_ids = [match .id ])
97+ .load (
98+ ["name" , "email" ],
99+ [["BrandNewPartner99xyz" , "brandnew@test.com" ]],
100+ )
75101 )
76102 self .assertFalse (result ["messages" ])
77103 partner = self .env ["res.partner" ].search ([("name" , "=" , "BrandNewPartner99xyz" )])
@@ -81,13 +107,17 @@ def test_load_no_match_creates_record(self):
81107 def test_load_multiple_records_mixed (self ):
82108 """Mix of matched and new records in one import."""
83109 self .env ["res.partner" ].create ({"name" : "ExistingMixed99xyz" , "email" : "existing@test.com" })
84- self ._create_match_rule ([{"field_id" : self .name_field .id }], overwrite = True )
85- result = self .env ["res.partner" ].load (
86- ["name" , "email" ],
87- [
88- ["ExistingMixed99xyz" , "updated@test.com" ],
89- ["NewMixed99xyz" , "newmixed@test.com" ],
90- ],
110+ match = self ._create_match_rule ([{"field_id" : self .name_field .id }], overwrite = True )
111+ result = (
112+ self .env ["res.partner" ]
113+ .with_context (import_match_ids = [match .id ])
114+ .load (
115+ ["name" , "email" ],
116+ [
117+ ["ExistingMixed99xyz" , "updated@test.com" ],
118+ ["NewMixed99xyz" , "newmixed@test.com" ],
119+ ],
120+ )
91121 )
92122 self .assertFalse (result ["messages" ])
93123 existing = self .env ["res.partner" ].search ([("name" , "=" , "ExistingMixed99xyz" )])
@@ -117,11 +147,15 @@ def test_load_with_import_match_ids_context(self):
117147
118148 def test_load_appends_id_field (self ):
119149 """Auto-appends 'id' when not in fields list."""
120- self ._create_match_rule ([{"field_id" : self .name_field .id }])
150+ match = self ._create_match_rule ([{"field_id" : self .name_field .id }])
121151 fields = ["name" , "email" ]
122- self .env ["res.partner" ].load (
123- fields ,
124- [["AppendIdTest99xyz" , "appendid@test.com" ]],
152+ (
153+ self .env ["res.partner" ]
154+ .with_context (import_match_ids = [match .id ])
155+ .load (
156+ fields ,
157+ [["AppendIdTest99xyz" , "appendid@test.com" ]],
158+ )
125159 )
126160 self .assertIn ("id" , fields )
127161
0 commit comments