Skip to content

Commit

Permalink
Merge pull request #4728 from wikimedia/tests-image-recs-API
Browse files Browse the repository at this point in the history
[Image recs] Add tests to image recs API calls
  • Loading branch information
tonisevener authored Feb 1, 2024
2 parents 0a66e6e + c25f140 commit cb72e62
Show file tree
Hide file tree
Showing 9 changed files with 684 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ public final class WKGrowthTasksDataController {
"formatversion": "2",
"format": "json",
"prop":"growthimagesuggestiondata",
"pageids" : pipeEncodedPageIds
"pageids" : pipeEncodedPageIds,
"gisdtasktype": "image-recommendation"
]

guard let url = URL.mediaWikiAPIURL(project: project) else {
Expand All @@ -88,7 +89,7 @@ public final class WKGrowthTasksDataController {

// MARK: Private methods

private func getImageSuggestions(from response: WKImageRecommendationAPIResponse) -> [WKImageRecommendation.Page] {
fileprivate func getImageSuggestions(from response: WKImageRecommendationAPIResponse) -> [WKImageRecommendation.Page] {
var recommendationsPerPage:[WKImageRecommendation.Page] = []

for page in response.query.pages {
Expand All @@ -105,7 +106,7 @@ public final class WKGrowthTasksDataController {

}

func getGrowthAPIImageSuggestions(for page: WKImageRecommendationAPIResponse.Page) -> [WKImageRecommendation.GrowthImageSuggestionData] {
fileprivate func getGrowthAPIImageSuggestions(for page: WKImageRecommendationAPIResponse.Page) -> [WKImageRecommendation.GrowthImageSuggestionData] {
var suggestions: [WKImageRecommendation.GrowthImageSuggestionData] = []

for item in page.growthimagesuggestiondata {
Expand All @@ -120,7 +121,7 @@ public final class WKGrowthTasksDataController {
return suggestions
}

func getImageSuggestionData(from suggestion: WKImageRecommendationAPIResponse.GrowthImageSuggestionData) -> [WKImageRecommendation.ImageSuggestion] {
fileprivate func getImageSuggestionData(from suggestion: WKImageRecommendationAPIResponse.GrowthImageSuggestionData) -> [WKImageRecommendation.ImageSuggestion] {
var images: [WKImageRecommendation.ImageSuggestion] = []

for image in suggestion.images {
Expand All @@ -136,13 +137,13 @@ public final class WKGrowthTasksDataController {
return images
}

func getMetadataObject(from image: WKImageRecommendationAPIResponse.ImageMetadata) -> WKImageRecommendation.ImageMetadata {
fileprivate func getMetadataObject(from image: WKImageRecommendationAPIResponse.ImageMetadata) -> WKImageRecommendation.ImageMetadata {
let metadata = WKImageRecommendation.ImageMetadata(descriptionUrl: image.descriptionUrl, thumbUrl: image.thumbUrl, fullUrl: image.fullUrl, originalWidth: image.originalWidth, originalHeight: image.originalHeight, mediaType: image.mediaType, description: image.description, author: image.author, license: image.license, date: image.date, caption: image.caption, categories: image.categories, reason: image.reason, contentLanguageName: image.contentLanguageName)

return metadata
}

private func getTaskPages(from response: WKGrowthTaskAPIResponse) -> [WKGrowthTask.Page] {
fileprivate func getTaskPages(from response: WKGrowthTaskAPIResponse) -> [WKGrowthTask.Page] {
var pages: [WKGrowthTask.Page] = []

for page in response.query.pages {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,7 @@ internal struct WKImageRecommendationAPIResponse: Codable {
let categories: [String]
let reason: String
let contentLanguageName: String
let sectionNumber: String?
let sectionTitle: String?
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public struct WKImageRecommendation {
let author: String
let license: String
let date: String
let caption:String?
let caption: String?
let categories: [String]
let reason: String
let contentLanguageName: String
Expand Down
288 changes: 288 additions & 0 deletions WKData/Sources/WKDataMocks/Resources/growth-task-get.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,288 @@
{
"batchcomplete":true,
"continue":{
"ggtoffset":10,
"continue":"ggtoffset||"
},
"growthtasks":{
"totalCount":17234,
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
}
},
"query":{
"pages":[
{
"pageid":35571,
"ns":0,
"title":"Novela (právo)",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":6,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"unmj7838n633gn0gr9egdg64orsok59e"
},
{
"pageid":136265,
"ns":0,
"title":"Překlep",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":0,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"inqsetig09sa37g2frgid17p78p3nt4v"
},
{
"pageid":303931,
"ns":0,
"title":"Modal jazz",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":4,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"27rv2nb74oh4guqf7t94r73eg31aksa8"
},
{
"pageid":754975,
"ns":0,
"title":"Mistrovství světa v moderní gymnastice",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":5,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"j2lbv6l6tevlfccu1te4uucu5u6dmn33"
},
{
"pageid":819393,
"ns":0,
"title":"Korherrova zpráva",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":7,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"egg75hq87m2tunthqdc0p50r0j7moeni"
},
{
"pageid":824001,
"ns":0,
"title":"Armeniakon",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":8,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"lprhfojv3755nc9f3p6fb8ud8n8f4kne"
},
{
"pageid":1069254,
"ns":0,
"title":"Filmová filharmonie",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":3,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"hroe8jo6tocq2jog9nsmbpi2d6qgg8kn"
},
{
"pageid":1262811,
"ns":0,
"title":"Partnerství veřejného a soukromého sektoru",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":1,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"q0c1ju2dg361695g4f1a7c82q38sti8e"
},
{
"pageid":1537517,
"ns":0,
"title":"Zpětný ráz",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":2,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"5dig0u2t336lomh18nk561a371u8qfk9"
},
{
"pageid":1766988,
"ns":0,
"title":"Žalm 3",
"tasktype":"image-recommendation",
"difficulty":"medium",
"order":9,
"qualityGateIds":[
"dailyLimit"
],
"qualityGateConfig":{
"image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"section-image-recommendation":{
"dailyLimit":false,
"dailyCount":0
},
"link-recommendation":{
"dailyLimit":false,
"dailyCount":0
}
},
"token":"840i7rfivml95vr50ranamugrvnvn5on"
}
]
}
}
Loading

0 comments on commit cb72e62

Please sign in to comment.