Skip to content

Commit

Permalink
element-hq/element-ios/issues/5114 - Made user identifier mandatory, …
Browse files Browse the repository at this point in the history
…defaulting maxSelections to 1 as per msc.
  • Loading branch information
stefanceriu committed Nov 24, 2021
1 parent b8759d6 commit 5c41239
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 17 deletions.
6 changes: 3 additions & 3 deletions MatrixSDK/Room/Polls/PollAggregator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public class PollAggregator {

pollBuilder = PollBuilder()

poll = pollBuilder.build(pollStartEventContent: self.pollStartEventContent, events: self.events)
poll = pollBuilder.build(pollStartEventContent: self.pollStartEventContent, events: self.events, currentUserIdentifier: session.myUserId)

reloadData()

Expand Down Expand Up @@ -103,10 +103,10 @@ public class PollAggregator {

self.events.append(event)

self.poll = self.pollBuilder.build(pollStartEventContent: self.pollStartEventContent, events: self.events)
self.poll = self.pollBuilder.build(pollStartEventContent: self.pollStartEventContent, events: self.events, currentUserIdentifier: self.session.myUserId)
} as Any

self.poll = self.pollBuilder.build(pollStartEventContent: self.pollStartEventContent, events: self.events)
self.poll = self.pollBuilder.build(pollStartEventContent: self.pollStartEventContent, events: self.events, currentUserIdentifier: self.session.myUserId)

self.delegate?.pollAggregatorDidEndLoading(self)

Expand Down
6 changes: 3 additions & 3 deletions MatrixSDK/Room/Polls/PollBuilder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
import Foundation

struct PollBuilder {
func build(pollStartEventContent: MXEventContentPollStart, events: [MXEvent], currentUserIdentifer: String? = nil) -> PollProtocol {
func build(pollStartEventContent: MXEventContentPollStart, events: [MXEvent], currentUserIdentifier: String) -> PollProtocol {

let poll = Poll()

poll.text = pollStartEventContent.question
poll.maxAllowedSelections = pollStartEventContent.maxSelections.uintValue
poll.maxAllowedSelections = max(1, pollStartEventContent.maxSelections.uintValue)
poll.kind = (pollStartEventContent.kind == kMXMessageContentKeyExtensiblePollKindUndisclosed ? .undisclosed : .disclosed)

var answerOptionIdentifiers = [String]()
Expand Down Expand Up @@ -95,7 +95,7 @@ struct PollBuilder {
}
}

if groupedUserAnswers.key == currentUserIdentifer {
if groupedUserAnswers.key == currentUserIdentifier {
currentUserAnswers = groupedUserAnswers.value
}

Expand Down
20 changes: 10 additions & 10 deletions MatrixSDKTests/MXPollBuilderTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class MXPollBuilderTest: XCTestCase {
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Alice", answerIdentifiers: ["1"]))!)
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", answerIdentifiers: ["1"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 7), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 7), events: events, currentUserIdentifier: "")
XCTAssertEqual(poll.maxAllowedSelections, 7)
XCTAssertEqual(poll.text, "Question")
XCTAssertEqual(poll.kind, .disclosed)
Expand All @@ -44,7 +44,7 @@ class MXPollBuilderTest: XCTestCase {
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 0, answerIdentifiers: ["1"]))!)
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 1, answerIdentifiers: []))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events, currentUserIdentifier: "")
XCTAssertEqual(poll.answerOptions.first?.count, 0)
XCTAssertEqual(poll.answerOptions.last?.count, 0)
}
Expand All @@ -54,7 +54,7 @@ class MXPollBuilderTest: XCTestCase {
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 0, answerIdentifiers: ["1"]))!)
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 1, answerIdentifiers: ["1", "2"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events, currentUserIdentifier: "")
XCTAssertEqual(poll.answerOptions.first?.count, 0)
XCTAssertEqual(poll.answerOptions.last?.count, 0)
}
Expand All @@ -64,7 +64,7 @@ class MXPollBuilderTest: XCTestCase {
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 0, answerIdentifiers: ["1"]))!)
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 1, answerIdentifiers: ["1", "2", "3"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events, currentUserIdentifier: "")
XCTAssertEqual(poll.answerOptions.first?.count, 0)
XCTAssertEqual(poll.answerOptions.last?.count, 0)
}
Expand All @@ -73,7 +73,7 @@ class MXPollBuilderTest: XCTestCase {
var events = [MXEvent]()
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", answerIdentifiers: ["1", "1", "1"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 100), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 100), events: events, currentUserIdentifier: "")
XCTAssertEqual(poll.answerOptions.first?.count, 1)
XCTAssertEqual(poll.answerOptions.last?.count, 0)
}
Expand All @@ -82,7 +82,7 @@ class MXPollBuilderTest: XCTestCase {
var events = [MXEvent]()
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", answerIdentifiers: ["1", "1", "2", "1", "2", "2", "1", "2"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 100), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 100), events: events, currentUserIdentifier: "")
XCTAssertEqual(poll.answerOptions.first?.count, 1)
XCTAssertEqual(poll.answerOptions.last?.count, 1)
}
Expand All @@ -95,7 +95,7 @@ class MXPollBuilderTest: XCTestCase {
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 1, answerIdentifiers: []))!) // Too few
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 3, answerIdentifiers: ["1", "2"]))!) // Too many

let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(), events: events, currentUserIdentifier: "")
XCTAssertEqual(poll.answerOptions.first?.count, 0)
XCTAssertEqual(poll.answerOptions.last?.count, 1)
}
Expand All @@ -111,7 +111,7 @@ class MXPollBuilderTest: XCTestCase {
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 10, answerIdentifiers: []))!)
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Alice", timestamp:10, answerIdentifiers: ["1", "2"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 10), events: events)
let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 10), events: events, currentUserIdentifier: "")

XCTAssert(poll.isClosed)

Expand All @@ -126,7 +126,7 @@ class MXPollBuilderTest: XCTestCase {
var events = [MXEvent]()
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", answerIdentifiers: ["1"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 7), events: events, currentUserIdentifer: "Bob")
let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 7), events: events, currentUserIdentifier: "Bob")
XCTAssertEqual(poll.answerOptions.first?.isCurrentUserSelection, true)
XCTAssertEqual(poll.answerOptions.last?.isCurrentUserSelection, false)
}
Expand All @@ -136,7 +136,7 @@ class MXPollBuilderTest: XCTestCase {
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 0, answerIdentifiers: ["1"]))!)
events.append(MXEvent(fromJSON: pollResponseEventWithSender("Bob", timestamp: 1, answerIdentifiers: ["2", "1"]))!)

let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 7), events: events, currentUserIdentifer: "Bob")
let poll = builder.build(pollStartEventContent: pollStartEventContent(maxSelections: 7), events: events, currentUserIdentifier: "Bob")
XCTAssertEqual(poll.answerOptions.first?.isCurrentUserSelection, true)
XCTAssertEqual(poll.answerOptions.last?.isCurrentUserSelection, true)
}
Expand Down
2 changes: 1 addition & 1 deletion MatrixSDKTests/MXPollRelationTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ - (void)testBobClosesPollWithOneAnswer
// Make sure that's still the case.
- (void)testNoPollRelationPagination
{
NSUInteger totalAnswers = 5;
NSUInteger totalAnswers = 100;

[self createScenarioForBob:^(MXSession *mxSession, MXRoom *room, XCTestExpectation *expectation, MXEvent *pollStartEvent, MXEventContentPollStart *pollStartContent) {
dispatch_group_t dispatchGroup = dispatch_group_create();
Expand Down

0 comments on commit 5c41239

Please sign in to comment.