// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import Foundation import Quick import Nimble @testable import SessionMessagingKit class RoomSpec: QuickSpec { override class func spec() { // MARK: - a Room describe("a Room") { // MARK: -- when decoding context("when decoding") { // MARK: ---- defaults admin and moderator values to false if omitted it("defaults admin and moderator values to false if omitted") { let roomJson: String = """ { "token": "testToken", "name": "testName", "description": "testDescription", "info_updates": 0, "message_sequence": 0, "created": 1, "active_users": 0, "active_users_cutoff": 0, "image_id": 0, "pinned_messages": [], "admins": [], "hidden_admins": [], "moderators": [], "hidden_moderators": [], "read": true, "default_read": true, "default_accessible": true, "write": true, "default_write": true, "upload": true, "default_upload": true } """ let roomData: Data = roomJson.data(using: .utf8)! let result: OpenGroupAPI.Room = try! JSONDecoder().decode(OpenGroupAPI.Room.self, from: roomData) expect(result.admin).to(beFalse()) expect(result.globalAdmin).to(beFalse()) expect(result.moderator).to(beFalse()) expect(result.globalModerator).to(beFalse()) } // MARK: ---- sets the admin and moderator values when provided it("sets the admin and moderator values when provided") { let roomJson: String = """ { "token": "testToken", "name": "testName", "description": "testDescription", "info_updates": 0, "message_sequence": 0, "created": 1, "active_users": 0, "active_users_cutoff": 0, "image_id": 0, "pinned_messages": [], "admin": true, "global_admin": true, "admins": [], "hidden_admins": [], "moderator": true, "global_moderator": true, "moderators": [], "hidden_moderators": [], "read": true, "default_read": true, "default_accessible": true, "write": true, "default_write": true, "upload": true, "default_upload": true } """ let roomData: Data = roomJson.data(using: .utf8)! let result: OpenGroupAPI.Room = try! JSONDecoder().decode(OpenGroupAPI.Room.self, from: roomData) expect(result.admin).to(beTrue()) expect(result.globalAdmin).to(beTrue()) expect(result.moderator).to(beTrue()) expect(result.globalModerator).to(beTrue()) } } } } }