mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			129 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			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())
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |