@@ -17,7 +17,7 @@ public function testCanBeInstantiated(): void
1717 static ::assertInstanceOf (ResolveAcfPostsManualSelectionLanguage::class, $ this ->getSut ());
1818 }
1919
20- #[TestDox('addHooks() registers the ACF post object query filter when Polylang is active ' )]
20+ #[TestDox('addHooks() registers the ACF post object query filters when Polylang is active ' )]
2121 public function testAddHooksRegistersFilterWhenPolylangIsActive (): void
2222 {
2323 $ wpService = new FakeWpService ([
@@ -32,7 +32,11 @@ public function testAddHooksRegistersFilterWhenPolylangIsActive(): void
3232 $ sut ->addHooks ();
3333
3434 static ::assertSame (
35- [['acf/fields/post_object/query/name=posts_data_posts ' , [$ sut , 'makeManualPostsFieldLanguageAgnostic ' ], 20 , 3 ]],
35+ [
36+ ['acf/fields/post_object/query/name=posts_data_posts ' , [$ sut , 'makeManualPostsFieldLanguageAgnostic ' ], 20 , 3 ],
37+ ['acf/fields/post_object/query/key=field_571dfc6ff8115 ' , [$ sut , 'makeManualPostsFieldLanguageAgnostic ' ], 20 , 3 ],
38+ ['acf/acf_get_posts/args ' , [$ sut , 'makeManualPostsFieldLoadLanguageAgnostic ' ], 20 , 1 ],
39+ ],
3640 $ wpService ->methodCalls ['addFilter ' ],
3741 );
3842 }
@@ -75,6 +79,105 @@ public function testMakeManualPostsFieldLanguageAgnosticSetsEmptyLangForManualFi
7579 static ::assertSame ('' , $ result ['lang ' ]);
7680 }
7781
82+ #[TestDox('makeManualPostsFieldLanguageAgnostic() sets empty lang when field key matches manual field ' )]
83+ public function testMakeManualPostsFieldLanguageAgnosticSetsEmptyLangForManualFieldKey (): void
84+ {
85+ $ sut = $ this ->getSut (
86+ static fn (): bool => true ,
87+ );
88+
89+ $ args = [
90+ 'post_type ' => ['post ' , 'evenemang ' ],
91+ 'lang ' => 'sv ' ,
92+ ];
93+
94+ $ field = [
95+ 'key ' => 'field_571dfc6ff8115 ' ,
96+ ];
97+
98+ $ result = $ sut ->makeManualPostsFieldLanguageAgnostic ($ args , $ field , 13018 );
99+
100+ static ::assertSame ('' , $ result ['lang ' ]);
101+ }
102+
103+ #[TestDox('makeManualPostsFieldLoadLanguageAgnostic() sets empty lang when loading selected values for manual posts field ' )]
104+ public function testMakeManualPostsFieldLoadLanguageAgnosticSetsEmptyLangForManualField (): void
105+ {
106+ $ sut = $ this ->getSut (
107+ static fn (): bool => true ,
108+ static fn (): array => [
109+ [
110+ 'function ' => 'get_posts ' ,
111+ 'args ' => [
112+ [407 ],
113+ ['key ' => 'field_571dfc6ff8115 ' ],
114+ ],
115+ ],
116+ ],
117+ );
118+
119+ $ args = [
120+ 'post__in ' => [407 ],
121+ 'lang ' => 'sv ' ,
122+ ];
123+
124+ $ result = $ sut ->makeManualPostsFieldLoadLanguageAgnostic ($ args );
125+
126+ static ::assertSame ('' , $ result ['lang ' ]);
127+ }
128+
129+ #[TestDox('makeManualPostsFieldLoadLanguageAgnostic() leaves args unchanged for unrelated field context ' )]
130+ public function testMakeManualPostsFieldLoadLanguageAgnosticLeavesArgsUnchangedForUnrelatedField (): void
131+ {
132+ $ sut = $ this ->getSut (
133+ static fn (): bool => true ,
134+ static fn (): array => [
135+ [
136+ 'function ' => 'get_posts ' ,
137+ 'args ' => [
138+ [407 ],
139+ ['key ' => 'field_571dfcd6b5cf9 ' ],
140+ ],
141+ ],
142+ ],
143+ );
144+
145+ $ args = [
146+ 'post__in ' => [407 ],
147+ 'lang ' => 'sv ' ,
148+ ];
149+
150+ $ result = $ sut ->makeManualPostsFieldLoadLanguageAgnostic ($ args );
151+
152+ static ::assertSame ($ args , $ result );
153+ }
154+
155+ #[TestDox('makeManualPostsFieldLoadLanguageAgnostic() leaves args unchanged when Polylang is unavailable ' )]
156+ public function testMakeManualPostsFieldLoadLanguageAgnosticLeavesArgsUnchangedWhenPolylangUnavailable (): void
157+ {
158+ $ sut = $ this ->getSut (
159+ static fn (): bool => false ,
160+ static fn (): array => [
161+ [
162+ 'function ' => 'get_posts ' ,
163+ 'args ' => [
164+ [407 ],
165+ ['key ' => 'field_571dfc6ff8115 ' ],
166+ ],
167+ ],
168+ ],
169+ );
170+
171+ $ args = [
172+ 'post__in ' => [407 ],
173+ 'lang ' => 'sv ' ,
174+ ];
175+
176+ $ result = $ sut ->makeManualPostsFieldLoadLanguageAgnostic ($ args );
177+
178+ static ::assertSame ($ args , $ result );
179+ }
180+
78181 #[TestDox('makeManualPostsFieldLanguageAgnostic() leaves args unchanged for other fields ' )]
79182 public function testMakeManualPostsFieldLanguageAgnosticLeavesOtherFieldsUnchanged (): void
80183 {
@@ -124,13 +227,16 @@ public function testMakeManualPostsFieldLanguageAgnosticLeavesArgsUnchangedWhenP
124227 *
125228 * @return ResolveAcfPostsManualSelectionLanguage
126229 */
127- private function getSut (?Closure $ polylangIsActiveResolver = null ): ResolveAcfPostsManualSelectionLanguage
128- {
230+ private function getSut (
231+ ?Closure $ polylangIsActiveResolver = null ,
232+ ?Closure $ callStackResolver = null ,
233+ ): ResolveAcfPostsManualSelectionLanguage {
129234 return new ResolveAcfPostsManualSelectionLanguage (
130235 new FakeWpService ([
131236 'addFilter ' => true ,
132237 ]),
133238 $ polylangIsActiveResolver ,
239+ $ callStackResolver ,
134240 );
135241 }
136242}
0 commit comments