@ -60,6 +60,7 @@ import static org.springframework.web.method.MvcAnnotationPredicates.*;
@@ -60,6 +60,7 @@ import static org.springframework.web.method.MvcAnnotationPredicates.*;
/ * *
* Unit tests for { @link RequestPartMethodArgumentResolver } .
* @author Rossen Stoyanchev
* @author Ilya Lukyanovich
* /
public class RequestPartMethodArgumentResolverTests {
@ -131,6 +132,15 @@ public class RequestPartMethodArgumentResolverTests {
@@ -131,6 +132,15 @@ public class RequestPartMethodArgumentResolverTests {
assertEquals ( "James" , actual . get ( 1 ) . getName ( ) ) ;
}
@Test
public void listPersonNotRequired ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) . notRequired ( ) ) . arg ( List . class , Person . class ) ;
MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ( ) ;
List < Person > actual = resolveArgument ( param , bodyBuilder ) ;
assertThat ( actual ) . isEmpty ( ) ;
}
@Test
public void monoPerson ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) ) . arg ( Mono . class , Person . class ) ;
@ -141,6 +151,15 @@ public class RequestPartMethodArgumentResolverTests {
@@ -141,6 +151,15 @@ public class RequestPartMethodArgumentResolverTests {
assertEquals ( "Jones" , actual . block ( ) . getName ( ) ) ;
}
@Test
public void monoPersonNotRequired ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) . notRequired ( ) ) . arg ( Mono . class , Person . class ) ;
MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ( ) ;
Mono < Person > actual = resolveArgument ( param , bodyBuilder ) ;
assertThat ( actual . block ( ) ) . isNull ( ) ;
}
@Test
public void fluxPerson ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) ) . arg ( Flux . class , Person . class ) ;
@ -154,6 +173,15 @@ public class RequestPartMethodArgumentResolverTests {
@@ -154,6 +173,15 @@ public class RequestPartMethodArgumentResolverTests {
assertEquals ( "James" , persons . get ( 1 ) . getName ( ) ) ;
}
@Test
public void fluxPersonNotRequired ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) . notRequired ( ) ) . arg ( Flux . class , Person . class ) ;
MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ( ) ;
Flux < Person > actual = resolveArgument ( param , bodyBuilder ) ;
assertThat ( actual . collectList ( ) . block ( ) ) . isEmpty ( ) ;
}
@Test
public void part ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) ) . arg ( Part . class ) ;
@ -177,6 +205,15 @@ public class RequestPartMethodArgumentResolverTests {
@@ -177,6 +205,15 @@ public class RequestPartMethodArgumentResolverTests {
assertEquals ( "{\"name\":\"James\"}" , partToUtf8String ( actual . get ( 1 ) ) ) ;
}
@Test
public void listPartNotRequired ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) . notRequired ( ) ) . arg ( List . class , Part . class ) ;
MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ( ) ;
List < Part > actual = resolveArgument ( param , bodyBuilder ) ;
assertThat ( actual ) . isEmpty ( ) ;
}
@Test
public void monoPart ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) ) . arg ( Mono . class , Part . class ) ;
@ -188,6 +225,15 @@ public class RequestPartMethodArgumentResolverTests {
@@ -188,6 +225,15 @@ public class RequestPartMethodArgumentResolverTests {
assertEquals ( "{\"name\":\"Jones\"}" , partToUtf8String ( part ) ) ;
}
@Test
public void monoPartNotRequired ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) . notRequired ( ) ) . arg ( Mono . class , Part . class ) ;
MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ( ) ;
Mono < Part > actual = resolveArgument ( param , bodyBuilder ) ;
assertThat ( actual . block ( ) ) . isNull ( ) ;
}
@Test
public void fluxPart ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) ) . arg ( Flux . class , Part . class ) ;
@ -201,6 +247,15 @@ public class RequestPartMethodArgumentResolverTests {
@@ -201,6 +247,15 @@ public class RequestPartMethodArgumentResolverTests {
assertEquals ( "{\"name\":\"James\"}" , partToUtf8String ( parts . get ( 1 ) ) ) ;
}
@Test
public void fluxPartNotRequired ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) . notRequired ( ) ) . arg ( Flux . class , Part . class ) ;
MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ( ) ;
Flux < Part > actual = resolveArgument ( param , bodyBuilder ) ;
assertThat ( actual . collectList ( ) . block ( ) ) . isEmpty ( ) ;
}
@Test
public void personRequired ( ) {
MethodParameter param = this . testMethod . annot ( requestPart ( ) ) . arg ( Person . class ) ;
@ -278,7 +333,13 @@ public class RequestPartMethodArgumentResolverTests {
@@ -278,7 +333,13 @@ public class RequestPartMethodArgumentResolverTests {
@RequestPart ( "name" ) Flux < Part > partFlux ,
@RequestPart ( "name" ) List < Part > partList ,
@RequestPart ( name = "anotherPart" , required = false ) Person anotherPerson ,
@RequestPart ( name = "name" , required = false ) Mono < Person > anotherPersonMono ,
@RequestPart ( name = "name" , required = false ) Flux < Person > anotherPersonFlux ,
@RequestPart ( name = "name" , required = false ) List < Person > anotherPersonList ,
@RequestPart ( name = "anotherPart" , required = false ) Part anotherPart ,
@RequestPart ( name = "name" , required = false ) Mono < Part > anotherPartMono ,
@RequestPart ( name = "name" , required = false ) Flux < Part > anotherPartFlux ,
@RequestPart ( name = "name" , required = false ) List < Part > anotherPartList ,
Person notAnnotated ) { }