Skip to content

Commit

Permalink
Merge pull request #77 from pelias/fix-query-params
Browse files Browse the repository at this point in the history
Fix query params not appending when autocomplete delay set
  • Loading branch information
msmollin committed Apr 21, 2017
2 parents 4b3d8a8 + 2e19ce5 commit 487b0d0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
17 changes: 17 additions & 0 deletions pelias-ios-sdkTests/PeliasSearchManagerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,21 @@ class PeliasSearchManagerTests: XCTestCase {
}))
}

func testQueryParamsAppended() {
PeliasSearchManager.sharedInstance.autocompleteTimeDelay = 10.0
PeliasSearchManager.sharedInstance.urlQueryItems = [URLQueryItem.init(name: "query_item", value: "query_item_value")]
let point = GeoPoint.init(latitude: 40.0, longitude: 70.0)
let config = PeliasAutocompleteConfig.init(searchText: "test", focusPoint: point) { (response) in
//
}
_ = PeliasSearchManager.sharedInstance.autocompleteQuery(config)
_ = PeliasSearchManager.sharedInstance.autocompleteQuery(config)

let searchUrlStr = PeliasSearchManager.sharedInstance.queuedAutocompleteOp?.config.searchUrl().absoluteString
XCTAssertTrue((searchUrlStr?.contains("query_item=query_item_value"))!)
XCTAssertTrue((searchUrlStr?.contains("text=test"))!)
XCTAssertTrue((searchUrlStr?.contains("focus.point.lat=40.0"))!)
XCTAssertTrue((searchUrlStr?.contains("focus.point.lon=70.0"))!)
}

}
13 changes: 8 additions & 5 deletions src/PeliasSearchManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ public final class PeliasSearchManager {
self.operationQueue.cancelAllOperations()
self.autocompleteOperationQueue.cancelAllOperations()
}
fileprivate func executeOperation(_ config: APIConfigData) -> PeliasOperation {

fileprivate func createOperation(_ config: APIConfigData) -> PeliasOperation {
//Convert to mutable version, and append any query items we have waiting for us
var configData = config
if let urlQueryItems = urlQueryItems {
Expand All @@ -74,8 +74,11 @@ public final class PeliasSearchManager {
}
}
//Build a operation
let searchOp = PeliasOperation(config: configData)

return PeliasOperation(config: configData)
}

fileprivate func executeOperation(_ config: APIConfigData) -> PeliasOperation {
let searchOp = createOperation(config)
//Enqueue search object so it can begin processing
operationQueue.addOperation(searchOp)

Expand All @@ -89,7 +92,7 @@ public final class PeliasSearchManager {
return executeOperation(config)
}

let operation = PeliasOperation(config: config)
let operation = createOperation(config)
queuedAutocompleteOp = operation
// We may be executing an existing operation, so lets see if we have a timer
// Conceivably this could get called from multiple threads, in which case we should probably synchronize on the timer variable. We'll deal with that if it comes to that
Expand Down

0 comments on commit 487b0d0

Please sign in to comment.