@@ -1786,6 +1786,157 @@ class CodeGenTest {
1786
1786
assertCompilesJava(result.javaDataTypes + result.javaInterfaces)
1787
1787
}
1788
1788
1789
+ @Test
1790
+ fun generateOnlyRequiredDataTypesForQuery () {
1791
+ val schema = """
1792
+ type Query {
1793
+ shows(showFilter: ShowFilter): [Video]
1794
+ people(personFilter: PersonFilter): [Person]
1795
+ }
1796
+
1797
+ union Video = Show | Movie
1798
+
1799
+ type Movie {
1800
+ title: String
1801
+ duration: Int
1802
+ related: Related
1803
+ }
1804
+
1805
+ type Related {
1806
+ video: Video
1807
+ }
1808
+
1809
+ type Show {
1810
+ title: String
1811
+ tags(from: Int, to: Int, sourceType: SourceType): [ShowTag]
1812
+ isLive(countryFilter: CountryFilter): Boolean
1813
+ }
1814
+
1815
+ enum ShouldNotInclude { YES, NO }
1816
+
1817
+ input NotUsed {
1818
+ field: String
1819
+ }
1820
+
1821
+ input ShowFilter {
1822
+ title: String
1823
+ showType: ShowType
1824
+ similarTo: SimilarityInput
1825
+ }
1826
+
1827
+ input SimilarityInput {
1828
+ tags: [String]
1829
+ }
1830
+
1831
+ enum ShowType {
1832
+ MOVIE, SERIES
1833
+ }
1834
+
1835
+ input CountryFilter {
1836
+ countriesToExclude: [String]
1837
+ }
1838
+
1839
+ enum SourceType { FOO, BAR }
1840
+
1841
+ type Person {
1842
+ name: String
1843
+ }
1844
+ """ .trimIndent()
1845
+
1846
+ val codeGenResult = CodeGen (
1847
+ CodeGenConfig (
1848
+ schemas = setOf (schema),
1849
+ packageName = basePackageName,
1850
+ includeQueries = setOf (" shows" ),
1851
+ generateDataTypes = false ,
1852
+ writeToFiles = false
1853
+ )
1854
+ ).generate()
1855
+
1856
+ assertThat(codeGenResult.javaDataTypes)
1857
+ .extracting(" typeSpec" ).extracting(" name" ).containsExactly(" ShowFilter" , " SimilarityInput" , " CountryFilter" )
1858
+ assertThat(codeGenResult.javaEnumTypes)
1859
+ .extracting(" typeSpec" ).extracting(" name" ).containsExactly(" ShowType" , " SourceType" )
1860
+ assertThat(codeGenResult.clientProjections).isEmpty()
1861
+
1862
+ assertCompilesJava(codeGenResult.javaDataTypes + codeGenResult.javaEnumTypes)
1863
+ }
1864
+
1865
+ @Test
1866
+ fun generateAllDataTypesForAllQueriesWhenSetToTrue () {
1867
+ val schema = """
1868
+ type Query {
1869
+ shows(showFilter: ShowFilter): [Video]
1870
+ people(personFilter: PersonFilter): [Person]
1871
+ }
1872
+
1873
+ union Video = Show | Movie
1874
+
1875
+ type Movie {
1876
+ title: String
1877
+ duration: Int
1878
+ related: Related
1879
+ }
1880
+
1881
+ type Related {
1882
+ video: Video
1883
+ }
1884
+
1885
+ type Show {
1886
+ title: String
1887
+ isLive(countryFilter: CountryFilter): Boolean
1888
+ }
1889
+
1890
+ enum ShouldNotInclude { YES, NO }
1891
+
1892
+ input NotUsed {
1893
+ field: String
1894
+ }
1895
+
1896
+ input ShowFilter {
1897
+ title: String
1898
+ showType: ShowType
1899
+ similarTo: SimilarityInput
1900
+ }
1901
+
1902
+ input SimilarityInput {
1903
+ tags: [String]
1904
+ }
1905
+
1906
+ enum ShowType {
1907
+ MOVIE, SERIES
1908
+ }
1909
+
1910
+ input CountryFilter {
1911
+ countriesToExclude: [String]
1912
+ }
1913
+
1914
+ enum SourceType { FOO, BAR }
1915
+
1916
+ type Person {
1917
+ name: String
1918
+ }
1919
+ """ .trimIndent()
1920
+
1921
+ val codeGenResult = CodeGen (
1922
+ CodeGenConfig (
1923
+ schemas = setOf (schema),
1924
+ packageName = basePackageName,
1925
+ includeQueries = setOf (" shows" ),
1926
+ generateDataTypes = true ,
1927
+ writeToFiles = false
1928
+ )
1929
+ ).generate()
1930
+
1931
+ assertThat(codeGenResult.javaDataTypes)
1932
+ .extracting(" typeSpec" ).extracting(" name" ).containsExactly(" Movie" , " Related" , " Show" , " Person" , " NotUsed" , " ShowFilter" , " SimilarityInput" , " CountryFilter" )
1933
+ assertThat(codeGenResult.javaEnumTypes)
1934
+ .extracting(" typeSpec" ).extracting(" name" ).containsExactly(" ShouldNotInclude" , " ShowType" , " SourceType" )
1935
+ assertThat(codeGenResult.clientProjections).isEmpty()
1936
+
1937
+ assertCompilesJava(codeGenResult.javaDataTypes + codeGenResult.javaEnumTypes + codeGenResult.javaInterfaces)
1938
+ }
1939
+
1789
1940
@Test
1790
1941
fun skipCodegenOnTypes () {
1791
1942
val schema = """
@@ -2690,6 +2841,7 @@ class CodeGenTest {
2690
2841
assertThat(searchResultPage.typeSpec.superinterfaces).extracting(" simpleName" ).containsExactly(" ISearchResultPage" )
2691
2842
assertThat(searchResultPage.typeSpec.fieldSpecs).extracting(" name" ).containsExactly(" items" )
2692
2843
parameterizedTypeName = searchResultPage.typeSpec.fieldSpecs[0 ].type as ParameterizedTypeName
2844
+ parameterizedTypeName = searchResultPage.typeSpec.fieldSpecs[0 ].type as ParameterizedTypeName
2693
2845
assertThat(parameterizedTypeName.rawType).extracting(" simpleName" ).isEqualTo(" List" )
2694
2846
assertThat(parameterizedTypeName.typeArguments[0 ]).extracting(" simpleName" ).isEqualTo(" SearchResult" )
2695
2847
0 commit comments