diff --git a/Sources/MeiliSearch/Async/Client+async.swift b/Sources/MeiliSearch/Async/Client+async.swift index d785cd18..6e2b41a1 100644 --- a/Sources/MeiliSearch/Async/Client+async.swift +++ b/Sources/MeiliSearch/Async/Client+async.swift @@ -71,7 +71,7 @@ extension MeiliSearch { /** See `waitForTask(taskUid:options:_:)` */ - public func waitForTask(taskUid: Int, options: WaitOptions? = nil) async throws -> Task { + public func waitForTask(taskUid: Int, options: WaitOptions? = nil) async throws -> MTask { try await withCheckedThrowingContinuation { continuation in self.waitForTask(taskUid: taskUid, options: options) { result in continuation.resume(with: result) @@ -82,7 +82,7 @@ extension MeiliSearch { /** See `waitForTask(task:options:_:)` */ - public func waitForTask(task: TaskInfo, options: WaitOptions? = nil) async throws -> Task { + public func waitForTask(task: TaskInfo, options: WaitOptions? = nil) async throws -> MTask { try await withCheckedThrowingContinuation { continuation in self.waitForTask(task: task, options: options) { result in continuation.resume(with: result) @@ -93,7 +93,7 @@ extension MeiliSearch { /** See `getTask(taskUid:_:)` */ - public func getTask(taskUid: Int) async throws -> Task { + public func getTask(taskUid: Int) async throws -> MTask { try await withCheckedThrowingContinuation { continuation in self.getTask(taskUid: taskUid) { result in continuation.resume(with: result) diff --git a/Sources/MeiliSearch/Async/Indexes+async.swift b/Sources/MeiliSearch/Async/Indexes+async.swift index d72a2b7d..7728198d 100644 --- a/Sources/MeiliSearch/Async/Indexes+async.swift +++ b/Sources/MeiliSearch/Async/Indexes+async.swift @@ -159,7 +159,7 @@ extension Indexes { /** See `getTask(taskUid:_:)` */ - public func getTask(taskUid: Int) async throws -> Task { + public func getTask(taskUid: Int) async throws -> MTask { try await withCheckedThrowingContinuation { continuation in self.getTask(taskUid: taskUid) { result in continuation.resume(with: result) diff --git a/Sources/MeiliSearch/Client.swift b/Sources/MeiliSearch/Client.swift index 5c21c221..acae016e 100755 --- a/Sources/MeiliSearch/Client.swift +++ b/Sources/MeiliSearch/Client.swift @@ -153,7 +153,7 @@ public struct MeiliSearch { public func waitForTask( taskUid: Int, options: WaitOptions? = nil, - _ completion: @escaping (Result + _ completion: @escaping (Result ) -> Void) { self.tasks.waitForTask(taskUid: taskUid, options: options, completion) } @@ -171,7 +171,7 @@ public struct MeiliSearch { public func waitForTask( task: TaskInfo, options: WaitOptions? = nil, - _ completion: @escaping (Result + _ completion: @escaping (Result ) -> Void) { self.tasks.waitForTask(taskUid: task.taskUid, options: options, completion) } @@ -188,7 +188,7 @@ public struct MeiliSearch { */ public func getTask( taskUid: Int, - _ completion: @escaping (Result) -> Void) { + _ completion: @escaping (Result) -> Void) { self.tasks.get(taskUid: taskUid, completion) } diff --git a/Sources/MeiliSearch/Indexes.swift b/Sources/MeiliSearch/Indexes.swift index 81450da1..883ef61d 100755 --- a/Sources/MeiliSearch/Indexes.swift +++ b/Sources/MeiliSearch/Indexes.swift @@ -515,7 +515,7 @@ public struct Indexes { */ public func getTask( taskUid: Int, - _ completion: @escaping (Result) -> Void) { + _ completion: @escaping (Result) -> Void) { self.tasks.get(taskUid: taskUid, completion) } diff --git a/Sources/MeiliSearch/Model/Key.swift b/Sources/MeiliSearch/Model/Key.swift index ea3bbcb4..bfc4f4a8 100644 --- a/Sources/MeiliSearch/Model/Key.swift +++ b/Sources/MeiliSearch/Model/Key.swift @@ -19,7 +19,7 @@ public struct Key: Codable, Equatable { /// An alphanumeric key value generated by Meilisearch by hashing the uid and the master key on API key creation. public let key: String /// An array of API actions permitted for the key. - public let actions: [String] + public let actions: [KeyAction] /// An array of strings (indexes names) the key is authorized to act on. public let indexes: [String] /// Date and time when the key will expire, represented in RFC 3339 format. @@ -29,3 +29,4 @@ public struct Key: Codable, Equatable { /// Date and time when the key was last updated, represented in RFC 3339 format. public let updatedAt: String } + diff --git a/Sources/MeiliSearch/Model/KeyAction.swift b/Sources/MeiliSearch/Model/KeyAction.swift new file mode 100644 index 00000000..dfe31b7f --- /dev/null +++ b/Sources/MeiliSearch/Model/KeyAction.swift @@ -0,0 +1,202 @@ +///Documentation: https://www.meilisearch.com/docs/reference/api/keys#actions +public enum KeyAction: Equatable, Codable { + case wildcard + case search + case documentsWildcard + case documentsAdd + case documentsGet + case documentsDelete + case indexesWildcard + case indexesCreate + case indexesGet + case indexesUpdate + case indexesDelete + case indexesSwap + case tasksWildcard + case tasksGet + case tasksCancel + case tasksDelete + case settingsWildcard + case settingsGet + case settingsUpdate + case statsGet + case dumpsCreate + case snapshotsCreate + case version + case keysGet + case keysCreate + case keysUpdate + case keysDelete + case unknown(String) + + public init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(String.self) + + self = KeyAction(rawValue) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + + try container.encode(self.value) + } +} + +public extension KeyAction { + init(_ value: String) { + self = switch value { + case "*": + .wildcard + case "search": + .search + case "documents.*": + .documentsWildcard + case "documents.add": + .documentsAdd + case "documents.get": + .documentsGet + case "documents.delete": + .documentsDelete + case "indexes.*": + .indexesWildcard + case "indexes.create": + .indexesCreate + case "indexes.get": + .indexesGet + case "indexes.update": + .indexesUpdate + case "indexes.delete": + .indexesDelete + case "indexes.swap": + .indexesSwap + case "tasks.*": + .tasksWildcard + case "tasks.get": + .tasksGet + case "tasks.cancel": + .tasksCancel + case "tasks.delete": + .tasksDelete + case "settings.*": + .settingsWildcard + case "settings.get": + .settingsGet + case "settings.update": + .settingsUpdate + case "stats.get": + .statsGet + case "dumps.create": + .dumpsCreate + case "snapshots.create": + .snapshotsCreate + case "version": + .version + case "keys.get": + .keysGet + case "keys.create": + .keysCreate + case "keys.update": + .keysUpdate + case "keys.delete": + .keysDelete + default: + .unknown(value) + } + } + + var value: String { + switch self { + case .wildcard: + "*" + case .search: + "search" + case .documentsWildcard: + "documents.*" + case .documentsAdd: + "documents.add" + case .documentsGet: + "documents.get" + case .documentsDelete: + "documents.delete" + case .indexesWildcard: + "indexes.*" + case .indexesCreate: + "indexes.create" + case .indexesGet: + "indexes.get" + case .indexesUpdate: + "indexes.update" + case .indexesDelete: + "indexes.delete" + case .indexesSwap: + "indexes.swap" + case .tasksWildcard: + "tasks.*" + case .tasksGet: + "tasks.get" + case .tasksCancel: + "tasks.cancel" + case .tasksDelete: + "tasks.delete" + case .settingsWildcard: + "settings.*" + case .settingsGet: + "settings.get" + case .settingsUpdate: + "settings.update" + case .statsGet: + "stats.get" + case .dumpsCreate: + "dumps.create" + case .snapshotsCreate: + "snapshots.create" + case .version: + "version" + case .keysGet: + "keys.get" + case .keysCreate: + "keys.create" + case .keysUpdate: + "keys.update" + case .keysDelete: + "keys.delete" + case .unknown(let string): + string + } + } +} + +extension KeyAction: CaseIterable { + public static var allCases: [KeyAction] { + [ + .wildcard, + .search, + .documentsWildcard, + .documentsAdd, + .documentsGet, + .documentsDelete, + .indexesWildcard, + .indexesCreate, + .indexesGet, + .indexesUpdate, + .indexesDelete, + .indexesSwap, + .tasksWildcard, + .tasksGet, + .tasksCancel, + .tasksDelete, + .settingsWildcard, + .settingsGet, + .settingsUpdate, + .statsGet, + .dumpsCreate, + .snapshotsCreate, + .version, + .keysGet, + .keysCreate, + .keysUpdate, + .keysDelete, + ] + } +} diff --git a/Sources/MeiliSearch/Model/KeyParams.swift b/Sources/MeiliSearch/Model/KeyParams.swift index 5afc3896..4190d8ff 100644 --- a/Sources/MeiliSearch/Model/KeyParams.swift +++ b/Sources/MeiliSearch/Model/KeyParams.swift @@ -14,7 +14,7 @@ public struct KeyParams: Codable, Equatable { /// A uuid v4 to identify the API key. If not specified, it is automatically generated by Meilisearch. public var uid: String? /// An array of API actions permitted for the key. - public let actions: [String] + public let actions: [KeyAction] /// An array of strings (indexes names) the key is authorized to act on. public let indexes: [String] /// Date and time when the key will expire, represented in RFC 3339 format. @@ -24,7 +24,7 @@ public struct KeyParams: Codable, Equatable { description: String? = nil, name: String? = nil, uid: String? = nil, - actions: [String], + actions: [KeyAction], indexes: [String], expiresAt: String? ) { diff --git a/Sources/MeiliSearch/Model/Task/Task.swift b/Sources/MeiliSearch/Model/Task/Task.swift index 8cadacb1..3d1f152f 100644 --- a/Sources/MeiliSearch/Model/Task/Task.swift +++ b/Sources/MeiliSearch/Model/Task/Task.swift @@ -4,7 +4,7 @@ import Foundation `Task` instances represent the current transaction status, use the `uid` value to verify the status of your transaction. */ -public struct Task: Decodable, Equatable { +public struct MTask: Decodable, Equatable { /// Unique ID for the current `Task`. public let uid: Int diff --git a/Sources/MeiliSearch/Model/Task/TaskDetails.swift b/Sources/MeiliSearch/Model/Task/TaskDetails.swift index b4d8a6c5..413edff2 100644 --- a/Sources/MeiliSearch/Model/Task/TaskDetails.swift +++ b/Sources/MeiliSearch/Model/Task/TaskDetails.swift @@ -1,6 +1,6 @@ import Foundation -public extension Task { +public extension MTask { enum Details: Equatable { case indexCreation(TaskIndexCreationDetails) case indexUpdate(TaskIndexUpdateDetails) diff --git a/Sources/MeiliSearch/Model/Task/TaskInfo.swift b/Sources/MeiliSearch/Model/Task/TaskInfo.swift index 05861e89..ff8bc455 100644 --- a/Sources/MeiliSearch/Model/Task/TaskInfo.swift +++ b/Sources/MeiliSearch/Model/Task/TaskInfo.swift @@ -12,7 +12,7 @@ public struct TaskInfo: Codable, Equatable { public let indexUid: String? /// Returns if the task has been successful or not. - public let status: Task.Status + public let status: MTask.Status /// Type of the task. public let type: TaskType @@ -26,7 +26,7 @@ public struct TaskInfo: Codable, Equatable { @discardableResult @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) - public func wait(on client: MeiliSearch, options: WaitOptions? = nil) async throws -> Task { + public func wait(on client: MeiliSearch, options: WaitOptions? = nil) async throws -> MTask { try await client.waitForTask(task: self, options: options) } } diff --git a/Sources/MeiliSearch/Model/Task/TaskStatus.swift b/Sources/MeiliSearch/Model/Task/TaskStatus.swift index b55f2dc3..fc7b2553 100644 --- a/Sources/MeiliSearch/Model/Task/TaskStatus.swift +++ b/Sources/MeiliSearch/Model/Task/TaskStatus.swift @@ -1,6 +1,6 @@ import Foundation -public extension Task { +public extension MTask { enum Status: String, Codable, Equatable { /// When a task was successfully enqueued and is waiting to be processed. case enqueued diff --git a/Sources/MeiliSearch/Model/Task/TasksResults.swift b/Sources/MeiliSearch/Model/Task/TasksResults.swift index 64e039b2..6d699dcd 100644 --- a/Sources/MeiliSearch/Model/Task/TasksResults.swift +++ b/Sources/MeiliSearch/Model/Task/TasksResults.swift @@ -5,7 +5,7 @@ import Foundation */ public struct TasksResults: Decodable, Equatable { /// Results list containing objects of `Task`. - public let results: [Task] + public let results: [MTask] /// Integer value used to retrieve the next batch of tasks. public let next: Int? /// Integer value representing the first `uid` of the first task returned. diff --git a/Sources/MeiliSearch/QueryParameters/CancelTasksQuery.swift b/Sources/MeiliSearch/QueryParameters/CancelTasksQuery.swift index 4cef573c..4ab062dd 100644 --- a/Sources/MeiliSearch/QueryParameters/CancelTasksQuery.swift +++ b/Sources/MeiliSearch/QueryParameters/CancelTasksQuery.swift @@ -7,7 +7,7 @@ public class CancelTasksQuery: Queryable { /// List of strings with all the types the response should contain. public let types: [TaskType] /// List of strings with all the statuses the response should contain. - public let statuses: [Task.Status] + public let statuses: [MTask.Status] /// Filter tasks response by a particular list of index Uids strings public let indexUids: [String] /// Filter tasks based on a list of task's uids. @@ -22,7 +22,7 @@ public class CancelTasksQuery: Queryable { public let afterStartedAt: Date? init( - types: [TaskType]? = nil, statuses: [Task.Status]? = nil, + types: [TaskType]? = nil, statuses: [MTask.Status]? = nil, indexUids: [String]? = nil, uids: [Int]? = nil, beforeEnqueuedAt: Date? = nil, afterEnqueuedAt: Date? = nil, beforeStartedAt: Date? = nil, afterStartedAt: Date? = nil diff --git a/Sources/MeiliSearch/QueryParameters/DeleteTasksQuery.swift b/Sources/MeiliSearch/QueryParameters/DeleteTasksQuery.swift index b720bc06..c7137f66 100644 --- a/Sources/MeiliSearch/QueryParameters/DeleteTasksQuery.swift +++ b/Sources/MeiliSearch/QueryParameters/DeleteTasksQuery.swift @@ -7,7 +7,7 @@ public class DeleteTasksQuery: Queryable { /// List of strings with all the types the response should contain. public let types: [TaskType] /// List of strings with all the statuses the response should contain. - public let statuses: [Task.Status] + public let statuses: [MTask.Status] /// Filter tasks response by a particular list of index Uids strings public let indexUids: [String] /// Filter tasks based on a list of task's uids. @@ -28,7 +28,7 @@ public class DeleteTasksQuery: Queryable { public let afterFinishedAt: Date? init( - statuses: [Task.Status]? = nil, types: [TaskType]? = nil, + statuses: [MTask.Status]? = nil, types: [TaskType]? = nil, indexUids: [String]? = nil, uids: [Int]? = nil, canceledBy: [Int]? = nil, beforeEnqueuedAt: Date? = nil, afterEnqueuedAt: Date? = nil, beforeStartedAt: Date? = nil, afterStartedAt: Date? = nil, diff --git a/Sources/MeiliSearch/QueryParameters/TasksQuery.swift b/Sources/MeiliSearch/QueryParameters/TasksQuery.swift index d8eda862..5a9241e4 100644 --- a/Sources/MeiliSearch/QueryParameters/TasksQuery.swift +++ b/Sources/MeiliSearch/QueryParameters/TasksQuery.swift @@ -15,7 +15,7 @@ public class TasksQuery: Queryable { /// List of strings with all the types the response should contain. private var types: [TaskType] /// List of strings with all the statuses the response should contain. - private var statuses: [Task.Status] + private var statuses: [MTask.Status] /// Filter tasks response by a particular list of index Uids strings var indexUids: [String] /// Filter tasks based on a list of task's uids. @@ -37,7 +37,7 @@ public class TasksQuery: Queryable { init( limit: Int? = nil, from: Int? = nil, next: Int? = nil, - statuses: [Task.Status]? = nil, types: [TaskType]? = nil, + statuses: [MTask.Status]? = nil, types: [TaskType]? = nil, indexUids: [String]? = nil, uids: [Int]? = nil, canceledBy: [Int]? = nil, beforeEnqueuedAt: Date? = nil, afterEnqueuedAt: Date? = nil, afterFinishedAt: Date? = nil, beforeStartedAt: Date? = nil, diff --git a/Sources/MeiliSearch/Tasks.swift b/Sources/MeiliSearch/Tasks.swift index 624884c9..ac947817 100644 --- a/Sources/MeiliSearch/Tasks.swift +++ b/Sources/MeiliSearch/Tasks.swift @@ -20,18 +20,18 @@ struct Tasks { // Get on client func get( taskUid: Int, - _ completion: @escaping (Result) -> Void) { + _ completion: @escaping (Result) -> Void) { get(path: "/tasks/\(taskUid)", completion) } private func get ( path: String, - _ completion: @escaping (Result) -> Void) { + _ completion: @escaping (Result) -> Void) { self.request.get(api: path) { result in switch result { case .success(let data): do { - let task: Result = try Constants.resultDecoder(data: data) + let task: Result = try Constants.resultDecoder(data: data) completion(task) } catch { completion(.failure(error)) @@ -90,11 +90,11 @@ struct Tasks { _ taskUid: Int, _ options: WaitOptions, _ startingDate: Date, - _ completion: @escaping (Result) -> Void) { + _ completion: @escaping (Result) -> Void) { self.get(taskUid: taskUid) { result in switch result { case .success(let status): - if status.status == Task.Status.succeeded || status.status == Task.Status.failed { + if status.status == MTask.Status.succeeded || status.status == MTask.Status.failed { completion(.success(status)) } else if 0 - startingDate.timeIntervalSinceNow > options.timeOut { completion(.failure(MeiliSearch.Error.timeOut(timeOut: options.timeOut))) @@ -111,9 +111,9 @@ struct Tasks { // wait for task using task structure func waitForTask( - task: Task, + task: MTask, options: WaitOptions? = nil, - _ completion: @escaping (Result) -> Void) { + _ completion: @escaping (Result) -> Void) { waitForTask(taskUid: task.uid, options: options, completion) } @@ -121,7 +121,7 @@ struct Tasks { func waitForTask( taskUid: Int, options: WaitOptions? = nil, - _ completion: @escaping (Result) -> Void) { + _ completion: @escaping (Result) -> Void) { do { let currentDate = Date() let waitOptions = options ?? WaitOptions() diff --git a/Tests/MeiliSearchIntegrationTests/DocumentsTests.swift b/Tests/MeiliSearchIntegrationTests/DocumentsTests.swift index ff95cb18..188018f0 100755 --- a/Tests/MeiliSearchIntegrationTests/DocumentsTests.swift +++ b/Tests/MeiliSearchIntegrationTests/DocumentsTests.swift @@ -64,7 +64,7 @@ class DocumentsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("documentAdditionOrUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .documentAdditionOrUpdate(let details) = task.details { XCTAssertEqual(8, details.indexedDocuments) XCTAssertEqual(8, details.receivedDocuments) @@ -99,7 +99,7 @@ class DocumentsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("documentAdditionOrUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -129,7 +129,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(task: task) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentAdditionOrUpdate", task.type.description) self.index.getDocuments(params: DocumentsQuery(limit: 1, offset: 1, fields: ["id", "title"])) { (result: Result, Swift.Error>) in @@ -190,7 +190,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(task: task) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentAdditionOrUpdate", task.type.description) self.index.getDocument(10 ) { (result: Result) in @@ -233,7 +233,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(task: task) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentAdditionOrUpdate", task.type.description) self.index.getDocument("10" ) { (result: Result) in @@ -278,7 +278,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(task: task) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentAdditionOrUpdate", task.type.description) expectation.fulfill() case .failure: @@ -321,7 +321,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(taskUid: task.taskUid) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentDeletion", task.type.description) deleteExpectation.fulfill() case .failure: @@ -363,7 +363,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(task: task) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentDeletion", task.type.description) if case .documentDeletion(let details) = task.details { // It's possible for this to number to be greater than 8 (the number of documents we have inserted) due @@ -415,7 +415,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(task: task) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentDeletion", task.type.description) deleteExpectation.fulfill() case .failure: @@ -460,7 +460,7 @@ class DocumentsTests: XCTestCase { self.client.waitForTask(task: task) { result in switch result { case .success(let task): - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) XCTAssertEqual("documentDeletion", task.type.description) deleteExpectation.fulfill() case .failure: diff --git a/Tests/MeiliSearchIntegrationTests/DumpsTests.swift b/Tests/MeiliSearchIntegrationTests/DumpsTests.swift index fc5db922..e47967b5 100644 --- a/Tests/MeiliSearchIntegrationTests/DumpsTests.swift +++ b/Tests/MeiliSearchIntegrationTests/DumpsTests.swift @@ -25,7 +25,7 @@ class DumpsTests: XCTestCase { self.client.createDump { result in switch result { case .success(let dumpTask): - XCTAssertEqual(dumpTask.status, Task.Status.enqueued) + XCTAssertEqual(dumpTask.status, MTask.Status.enqueued) expectation.fulfill() case .failure(let error): dump(error) diff --git a/Tests/MeiliSearchIntegrationTests/IndexesTests.swift b/Tests/MeiliSearchIntegrationTests/IndexesTests.swift index 47ed1195..21bd88b3 100644 --- a/Tests/MeiliSearchIntegrationTests/IndexesTests.swift +++ b/Tests/MeiliSearchIntegrationTests/IndexesTests.swift @@ -57,7 +57,7 @@ class IndexesTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("indexCreation", task.type.description) - XCTAssertEqual(task.status, Task.Status.succeeded) + XCTAssertEqual(task.status, MTask.Status.succeeded) createExpectation.fulfill() case .failure(let error): dump(error) @@ -93,7 +93,7 @@ class IndexesTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("indexCreation", task.type.description) - XCTAssertEqual(task.status, Task.Status.succeeded) + XCTAssertEqual(task.status, MTask.Status.succeeded) createExpectation.fulfill() case .failure(let error): dump(error) @@ -111,7 +111,7 @@ class IndexesTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("indexCreation", task.type.description) - XCTAssertEqual(task.status, Task.Status.failed) + XCTAssertEqual(task.status, MTask.Status.failed) if let error = task.error { XCTAssertEqual(error.code, "index_already_exists") } else { @@ -221,7 +221,7 @@ class IndexesTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("indexUpdate", task.type.description) - XCTAssertEqual(task.status, Task.Status.succeeded) + XCTAssertEqual(task.status, MTask.Status.succeeded) if case .indexUpdate(let details) = task.details, let primaryKey = details.primaryKey { XCTAssertEqual("random", primaryKey) } else { @@ -307,7 +307,7 @@ class IndexesTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("indexDeletion", task.type.description) - XCTAssertEqual(task.status, Task.Status.succeeded) + XCTAssertEqual(task.status, MTask.Status.succeeded) deleteException.fulfill() case .failure(let error): dump(error) diff --git a/Tests/MeiliSearchIntegrationTests/KeysTests.swift b/Tests/MeiliSearchIntegrationTests/KeysTests.swift index c2e301b7..85392928 100644 --- a/Tests/MeiliSearchIntegrationTests/KeysTests.swift +++ b/Tests/MeiliSearchIntegrationTests/KeysTests.swift @@ -47,7 +47,7 @@ class KeysTests: XCTestCase { func testGetKeys() { let keyExpectation = XCTestExpectation(description: "Get a list of keys") - self.client.createKey(KeyParams(actions: ["*"], indexes: ["*"], expiresAt: nil)) { result in + self.client.createKey(KeyParams(actions: [.wildcard], indexes: ["*"], expiresAt: nil)) { result in switch result { case .success: self.client.getKeys { result in @@ -74,7 +74,7 @@ class KeysTests: XCTestCase { func testGetKey() { let keyExpectation = XCTestExpectation(description: "Get one key") - self.client.createKey(KeyParams(actions: ["*"], indexes: ["*"], expiresAt: nil)) { result in + self.client.createKey(KeyParams(actions: [.wildcard], indexes: ["*"], expiresAt: nil)) { result in switch result { case .success(let createdKey): self.client.getKey(keyOrUid: createdKey.uid) { result in @@ -105,7 +105,7 @@ class KeysTests: XCTestCase { func testCreateKey() { let keyExpectation = XCTestExpectation(description: "Create a key") - let keyParams = KeyParams(description: "Custom", actions: ["*"], indexes: ["*"], expiresAt: nil) + let keyParams = KeyParams(description: "Custom", actions: [.wildcard], indexes: ["*"], expiresAt: nil) self.client.createKey(keyParams) { result in switch result { case .success(let key): @@ -127,7 +127,7 @@ class KeysTests: XCTestCase { func testCreateKeyWithOptionalUid() { let keyExpectation = XCTestExpectation(description: "Create a key") let uid = UUID().uuidString.lowercased() - let keyParams = KeyParams(uid: uid, actions: ["*"], indexes: ["*"], expiresAt: nil) + let keyParams = KeyParams(uid: uid, actions: [.wildcard], indexes: ["*"], expiresAt: nil) self.client.createKey(keyParams) { result in switch result { @@ -154,7 +154,7 @@ class KeysTests: XCTestCase { formatter.dateFormat = "yyyy-MM-dd" let someDateTime = formatter.string(from: Date.distantFuture) - let keyParams = KeyParams(description: "Custom", actions: ["*"], indexes: ["*"], expiresAt: someDateTime) + let keyParams = KeyParams(description: "Custom", actions: [.wildcard], indexes: ["*"], expiresAt: someDateTime) self.client.createKey(keyParams) { result in switch result { case .success(let key): @@ -171,11 +171,55 @@ class KeysTests: XCTestCase { } self.wait(for: [keyExpectation], timeout: TESTS_TIME_OUT) } + + //is expected to fail + func testCreateKeyWithEnumCase() { + let keyExpectation = XCTestExpectation(description: "Create a key") + let formatter = DateFormatter() + formatter.dateFormat = "yyyy-MM-dd" + let someDateTime = formatter.string(from: Date.distantFuture) + + let keyParams = KeyParams(description: "Custom", actions: KeyAction.allCases, indexes: ["*"], expiresAt: someDateTime) + self.client.createKey(keyParams) { result in + switch result { + case .success(let key): + XCTAssertEqual(key.description, keyParams.description) + XCTAssertEqual(key.actions, keyParams.actions) + XCTAssertEqual(key.actions, keyParams.actions) + XCTAssertEqual(key.indexes, keyParams.indexes) + XCTAssertNotNil(key.expiresAt) + keyExpectation.fulfill() + case .failure(let error): + print(error.localizedDescription) + dump(error) + XCTFail("Failed to create a key") + keyExpectation.fulfill() + } + } + self.wait(for: [keyExpectation], timeout: TESTS_TIME_OUT) + } + + func testCreateKeyWithUnsupportedEnumCase() { + let formatter = DateFormatter() + formatter.dateFormat = "yyyy-MM-dd" + let someDateTime = formatter.string(from: Date.distantFuture) + + let keyParams = KeyParams(description: "Custom", actions: [.unknown("anyUnknownValue")], indexes: ["*"], expiresAt: someDateTime) + self.client.createKey(keyParams) { result in + switch result { + case .success: + XCTFail("should have failed") + case .failure(let error): + XCTAssertTrue(error.localizedDescription.contains("Unknown value `anyUnknownValue` at `.actions[0]`:")) + dump(error) + } + } + } func testUpdateKey() { let keyExpectation = XCTestExpectation(description: "Update a key") - let keyParams = KeyParams(description: "Custom", name: "old name", actions: ["*"], indexes: ["index"], expiresAt: nil) + let keyParams = KeyParams(description: "Custom", name: "old name", actions: [.wildcard], indexes: ["index"], expiresAt: nil) self.client.createKey(keyParams) { result in switch result { case .success(let key): @@ -206,7 +250,7 @@ class KeysTests: XCTestCase { func testDeleteKey() { let keyExpectation = XCTestExpectation(description: "Delete a key") - let keyParams = KeyParams(description: "Custom", actions: ["*"], indexes: ["*"], expiresAt: nil) + let keyParams = KeyParams(description: "Custom", actions: [.wildcard], indexes: ["*"], expiresAt: nil) self.client.createKey(keyParams) { result in switch result { case .success(let key): diff --git a/Tests/MeiliSearchIntegrationTests/SettingsTests.swift b/Tests/MeiliSearchIntegrationTests/SettingsTests.swift index 6446a54a..8ca256f4 100644 --- a/Tests/MeiliSearchIntegrationTests/SettingsTests.swift +++ b/Tests/MeiliSearchIntegrationTests/SettingsTests.swift @@ -136,7 +136,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newFilterableAttributes, details.filterableAttributes) } else { @@ -169,7 +169,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -218,7 +218,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newDisplayedAttributes, details.displayedAttributes) } else { @@ -251,7 +251,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -299,7 +299,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newDistinctAttribute, details.distinctAttribute) } else { @@ -331,7 +331,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -385,7 +385,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newRankingRules, details.rankingRules) } else { @@ -418,7 +418,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -471,7 +471,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newSearchableAttributes, details.searchableAttributes) } else { @@ -504,7 +504,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -561,7 +561,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newTypoTolerance, details.typoTolerance) } else { @@ -594,7 +594,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -648,7 +648,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newSeparatorTokens, details.separatorTokens) } else { @@ -681,7 +681,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -735,7 +735,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newNonSeparatorTokens, details.nonSeparatorTokens) } else { @@ -768,7 +768,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -822,7 +822,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newDictionary.sorted(), details.dictionary?.sorted()) } else { @@ -855,7 +855,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -905,7 +905,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newPaginationSettings, details.pagination) } else { @@ -938,7 +938,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -1038,7 +1038,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newStopWords, details.stopWords) } else { @@ -1072,7 +1072,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(emptyStopWords, details.stopWords) } else { @@ -1106,7 +1106,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(nilStopWords, details.stopWords) } else { @@ -1139,7 +1139,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -1194,7 +1194,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newSynonyms, details.synonyms) } else { @@ -1228,7 +1228,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newSynonyms, details.synonyms) } else { @@ -1263,7 +1263,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(newSynonyms, details.synonyms) } else { @@ -1296,7 +1296,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) @@ -1373,7 +1373,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(expectedSettingResult.rankingRules, details.rankingRules) XCTAssertEqual(expectedSettingResult.searchableAttributes, details.searchableAttributes) @@ -1408,7 +1408,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(expectedSettingResult.rankingRules, details.rankingRules) } else { @@ -1474,7 +1474,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) if case .settingsUpdate(let details) = task.details { XCTAssertEqual(expectedSettingResult.rankingRules, details.rankingRules) XCTAssertEqual(expectedSettingResult.searchableAttributes, details.searchableAttributes) @@ -1516,7 +1516,7 @@ class SettingsTests: XCTestCase { switch result { case .success(let task): XCTAssertEqual("settingsUpdate", task.type.description) - XCTAssertEqual(Task.Status.succeeded, task.status) + XCTAssertEqual(MTask.Status.succeeded, task.status) expectation.fulfill() case .failure(let error): dump(error) diff --git a/Tests/MeiliSearchIntegrationTests/SnapshotsTests.swift b/Tests/MeiliSearchIntegrationTests/SnapshotsTests.swift index 8a5a403c..d41a19ec 100644 --- a/Tests/MeiliSearchIntegrationTests/SnapshotsTests.swift +++ b/Tests/MeiliSearchIntegrationTests/SnapshotsTests.swift @@ -25,7 +25,7 @@ class SnapshotsTests: XCTestCase { self.client.createSnapshot { result in switch result { case .success(let snapshotTask): - XCTAssertEqual(snapshotTask.status, Task.Status.enqueued) + XCTAssertEqual(snapshotTask.status, MTask.Status.enqueued) expectation.fulfill() case .failure(let error): dump(error) diff --git a/Tests/MeiliSearchIntegrationTests/Utils.swift b/Tests/MeiliSearchIntegrationTests/Utils.swift index 5fb0384c..52f1e44c 100644 --- a/Tests/MeiliSearchIntegrationTests/Utils.swift +++ b/Tests/MeiliSearchIntegrationTests/Utils.swift @@ -25,13 +25,13 @@ public func currentHost() -> String { public func waitForTask( _ client: MeiliSearch, _ uid: String, - _ task: Task, - _ completion: @escaping (Result) -> Void) { + _ task: MTask, + _ completion: @escaping (Result) -> Void) { func request() { client.index(uid).getTask(taskUid: task.uid) { result in switch result { case .success(let taskRes): - if taskRes.status == Task.Status.succeeded || taskRes.status == Task.Status.failed { + if taskRes.status == MTask.Status.succeeded || taskRes.status == MTask.Status.failed { completion(.success(taskRes)) return } @@ -46,7 +46,7 @@ public func waitForTask( request() } -public func createGenericIndex(client: MeiliSearch, uid: String, _ completion: @escaping (Result) -> Void) { +public func createGenericIndex(client: MeiliSearch, uid: String, _ completion: @escaping (Result) -> Void) { client.deleteIndex(uid) { result in switch result { case .success: @@ -71,7 +71,7 @@ public func createGenericIndex(client: MeiliSearch, uid: String, _ completion: @ } } -public func deleteIndex(client: MeiliSearch, uid: String, _ completion: @escaping (Result) -> Void) { +public func deleteIndex(client: MeiliSearch, uid: String, _ completion: @escaping (Result) -> Void) { client.deleteIndex(uid) { result in switch result { case .success(let task): @@ -90,12 +90,12 @@ public func deleteIndex(client: MeiliSearch, uid: String, _ completion: @escapin } } -public func addDocuments(client: MeiliSearch, uid: String, primaryKey: String?, _ completion: @escaping (Result) -> Void) { +public func addDocuments(client: MeiliSearch, uid: String, primaryKey: String?, _ completion: @escaping (Result) -> Void) { let movie = Movie(id: 1, title: "test", comment: "test movie") addDocuments(client: client, uid: uid, dataset: [movie], primaryKey: primaryKey, completion) } -public func addDocuments(client: MeiliSearch, uid: String, dataset: [T], primaryKey: String?, _ completion: @escaping (Result) -> Void) { +public func addDocuments(client: MeiliSearch, uid: String, dataset: [T], primaryKey: String?, _ completion: @escaping (Result) -> Void) { let jsonEncoder = JSONEncoder() let documents: Data diff --git a/Tests/MeiliSearchUnitTests/KeyParamsTests.swift b/Tests/MeiliSearchUnitTests/KeyParamsTests.swift index 2b07a691..3c9191df 100644 --- a/Tests/MeiliSearchUnitTests/KeyParamsTests.swift +++ b/Tests/MeiliSearchUnitTests/KeyParamsTests.swift @@ -8,12 +8,12 @@ class KeyParamsTests: XCTestCase { description: "The default search key", name: "Default Search Key", uid: "74c9c733-3368-4738-bbe5-1d18a5fecb37", - actions: ["action1"], + actions: [.documentsAdd], indexes: ["index1"], expiresAt: "2021-08-11T10:00:00Z" ) - XCTAssertEqual(keyParams.actions, ["action1"]) + XCTAssertEqual(keyParams.actions, [.documentsAdd]) XCTAssertEqual(keyParams.indexes, ["index1"]) XCTAssertEqual(keyParams.expiresAt, "2021-08-11T10:00:00Z") XCTAssertEqual(keyParams.description, "The default search key") @@ -22,9 +22,19 @@ class KeyParamsTests: XCTestCase { } func testCompactInitializer() { - let keyParams = KeyParams(actions: ["action1"], indexes: ["index1"], expiresAt: nil) + let keyParams = KeyParams(actions: [.documentsAdd], indexes: ["index1"], expiresAt: nil) - XCTAssertEqual(keyParams.actions, ["action1"]) + XCTAssertEqual(keyParams.actions, [.documentsAdd]) + XCTAssertEqual(keyParams.indexes, ["index1"]) + XCTAssertNil(keyParams.expiresAt) + XCTAssertNil(keyParams.description) + XCTAssertNil(keyParams.name) + XCTAssertNil(keyParams.uid) + } + + func testEnumInitializer() { + let keyParams = KeyParams(actions: [.unknown("action1")], indexes: ["index1"], expiresAt: nil) + XCTAssertEqual(keyParams.actions, [.unknown("action1")]) XCTAssertEqual(keyParams.indexes, ["index1"]) XCTAssertNil(keyParams.expiresAt) XCTAssertNil(keyParams.description) diff --git a/Tests/MeiliSearchUnitTests/KeysTests.swift b/Tests/MeiliSearchUnitTests/KeysTests.swift index 83df748f..24048595 100644 --- a/Tests/MeiliSearchUnitTests/KeysTests.swift +++ b/Tests/MeiliSearchUnitTests/KeysTests.swift @@ -31,4 +31,18 @@ class KeysTests: XCTestCase { let requestQuery = self.session.nextDataTask.request?.url?.query XCTAssertEqual(requestQuery, "limit=2&offset=10") } + + func testEnumActions() { + let key = Key(uid: "uid", + name: "name", + description: "some description", + key: "any", + actions: [.documentsAdd, .unknown("unsupported")], + indexes: ["index1"], + expiresAt: nil, + createdAt: "2021-08-11T10:00:00Z", + updatedAt: "2021-08-11T10:00:00Z") + + XCTAssertEqual(key.actions, [.documentsAdd, .unknown("unsupported")]) + } } diff --git a/docker-compose.yml b/docker-compose.yml index ab90f7b0..51cf0801 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services: meilisearch: image: getmeili/meilisearch:latest ports: - - "7700" + - "7700:7700" environment: - MEILI_MASTER_KEY=masterKey - MEILI_NO_ANALYTICS=true