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

77 lines
2.9 KiB
Swift

// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import Quick
import Nimble
@testable import SessionMessagingKit
class OpenGroupSpec: QuickSpec {
// MARK: - Spec
override func spec() {
describe("an Open Group") {
context("when initializing") {
it("generates the id") {
let openGroup: OpenGroup = OpenGroup(
server: "server",
room: "room",
publicKey: "1234",
name: "name",
groupDescription: nil,
imageID: nil,
infoUpdates: 0
)
expect(openGroup.id).to(equal("server.room"))
}
}
context("when NSCoding") {
// Note: Unit testing NSCoder is horrible so we won't do it - wait until we refactor it to Codable
it("successfully encodes and decodes") {
let openGroupToEncode: OpenGroup = OpenGroup(
server: "server",
room: "room",
publicKey: "1234",
name: "name",
groupDescription: "desc",
imageID: "image",
infoUpdates: 1
)
let encodedData: Data = try! NSKeyedArchiver.archivedData(withRootObject: openGroupToEncode, requiringSecureCoding: false)
let openGroup: OpenGroup? = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(encodedData) as? OpenGroup
expect(openGroup).toNot(beNil())
expect(openGroup?.id).to(equal("server.room"))
expect(openGroup?.server).to(equal("server"))
expect(openGroup?.room).to(equal("room"))
expect(openGroup?.publicKey).to(equal("1234"))
expect(openGroup?.name).to(equal("name"))
expect(openGroup?.groupDescription).to(equal("desc"))
expect(openGroup?.imageID).to(equal("image"))
expect(openGroup?.infoUpdates).to(equal(1))
}
}
context("when describing") {
it("includes relevant information") {
let openGroup: OpenGroup = OpenGroup(
server: "server",
room: "room",
publicKey: "1234",
name: "name",
groupDescription: nil,
imageID: nil,
infoUpdates: 0
)
expect(openGroup.description)
.to(equal("name (Server: server, Room: room)"))
}
}
}
}
}