session-ios/SessionMessagingKitTests/Open Groups/Models/RoomPollInfoSpec.swift

129 lines
5.6 KiB
Swift

// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import Quick
import Nimble
@testable import SessionMessagingKit
class RoomPollInfoSpec: QuickSpec {
override class func spec() {
// MARK: - a RoomPollInfo
describe("a RoomPollInfo") {
// MARK: -- when initializing with a room
context("when initializing with a room") {
// MARK: ---- copies all the relevant values across
it("copies all the relevant values across") {
let room: OpenGroupAPI.Room = OpenGroupAPI.Room(
token: "testToken",
name: "testName",
roomDescription: nil,
infoUpdates: 123,
messageSequence: 0,
created: 0,
activeUsers: 234,
activeUsersCutoff: 0,
imageId: nil,
pinnedMessages: nil,
admin: true,
globalAdmin: true,
admins: [],
hiddenAdmins: nil,
moderator: true,
globalModerator: true,
moderators: [],
hiddenModerators: nil,
read: true,
defaultRead: true,
defaultAccessible: true,
write: true,
defaultWrite: true,
upload: true,
defaultUpload: true
)
let roomPollInfo: OpenGroupAPI.RoomPollInfo = OpenGroupAPI.RoomPollInfo(room: room)
expect(roomPollInfo.token).to(equal(room.token))
expect(roomPollInfo.activeUsers).to(equal(room.activeUsers))
expect(roomPollInfo.admin).to(equal(room.admin))
expect(roomPollInfo.globalAdmin).to(equal(room.globalAdmin))
expect(roomPollInfo.moderator).to(equal(room.moderator))
expect(roomPollInfo.globalModerator).to(equal(room.globalModerator))
expect(roomPollInfo.read).to(equal(room.read))
expect(roomPollInfo.defaultRead).to(equal(room.defaultRead))
expect(roomPollInfo.defaultAccessible).to(equal(room.defaultAccessible))
expect(roomPollInfo.write).to(equal(room.write))
expect(roomPollInfo.defaultWrite).to(equal(room.defaultWrite))
expect(roomPollInfo.upload).to(equal(room.upload))
expect(roomPollInfo.defaultUpload).to(equal(room.defaultUpload))
expect(roomPollInfo.details).to(equal(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 roomPollInfoJson: String = """
{
"token": "testToken",
"active_users": 0,
"read": true,
"default_read": true,
"default_accessible": true,
"write": true,
"default_write": true,
"upload": true,
"default_upload": true,
"details": null
}
"""
let roomData: Data = roomPollInfoJson.data(using: .utf8)!
let result: OpenGroupAPI.RoomPollInfo = try! JSONDecoder().decode(OpenGroupAPI.RoomPollInfo.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 roomPollInfoJson: String = """
{
"token": "testToken",
"active_users": 0,
"admin": true,
"global_admin": true,
"moderator": true,
"global_moderator": true,
"read": true,
"default_read": true,
"default_accessible": true,
"write": true,
"default_write": true,
"upload": true,
"default_upload": true,
"details": null
}
"""
let roomData: Data = roomPollInfoJson.data(using: .utf8)!
let result: OpenGroupAPI.RoomPollInfo = try! JSONDecoder().decode(OpenGroupAPI.RoomPollInfo.self, from: roomData)
expect(result.admin).to(beTrue())
expect(result.globalAdmin).to(beTrue())
expect(result.moderator).to(beTrue())
expect(result.globalModerator).to(beTrue())
}
}
}
}
}