Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EP-404] QA Phase 1 Fix User Properties #1417

Merged
merged 6 commits into from
Apr 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions KsApi/models/User.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public struct User {
public struct Stats {
public var backedProjectsCount: Int?
public var createdProjectsCount: Int?
public var draftProjectsCount: Int?
public var memberProjectsCount: Int?
public var starredProjectsCount: Int?
public var unansweredSurveysCount: Int?
Expand Down Expand Up @@ -303,6 +304,7 @@ extension User.Stats: Decodable {
enum CodingKeys: String, CodingKey {
case backedProjectsCount = "backed_projects_count"
case createdProjectsCount = "created_projects_count"
case draftProjectsCount = "draft_projects_count"
case memberProjectsCount = "member_projects_count"
case starredProjectsCount = "starred_projects_count"
case unansweredSurveysCount = "unanswered_surveys_count"
Expand All @@ -315,6 +317,7 @@ extension User.Stats: EncodableType {
var result: [String: Any] = [:]
result["backed_projects_count"] = self.backedProjectsCount
result["created_projects_count"] = self.createdProjectsCount
result["draft_projects_count"] = self.draftProjectsCount
result["member_projects_count"] = self.memberProjectsCount
result["starred_projects_count"] = self.starredProjectsCount
result["unanswered_surveys_count"] = self.unansweredSurveysCount
Expand Down
2 changes: 2 additions & 0 deletions KsApi/models/UserTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ final class UserTests: XCTestCase {
"small": "http://www.kickstarter.com/small.jpg"
],
"backed_projects_count": 2,
"draft_projects_count": 4,
"weekly_newsletter": false,
"promo_newsletter": false,
"happening_newsletter": false,
Expand Down Expand Up @@ -48,6 +49,7 @@ final class UserTests: XCTestCase {
XCTAssertEqual(false, user?.isAdmin)
XCTAssertEqual("http://www.kickstarter.com/small.jpg", user?.avatar.small)
XCTAssertEqual(2, user?.stats.backedProjectsCount)
XCTAssertEqual(4, user?.stats.draftProjectsCount)
XCTAssertEqual(false, user?.newsletters.weekly)
XCTAssertEqual(false, user?.newsletters.promo)
XCTAssertEqual(false, user?.newsletters.happening)
Expand Down
47 changes: 37 additions & 10 deletions KsApi/models/lenses/User.StatsLenses.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,51 @@ extension User.Stats {
public static let backedProjectsCount = Lens<User.Stats, Int?>(
view: { $0.backedProjectsCount },
set: { User.Stats(
backedProjectsCount: $0, createdProjectsCount: $1.createdProjectsCount,
memberProjectsCount: $1.memberProjectsCount, starredProjectsCount: $1.starredProjectsCount,
unansweredSurveysCount: $1.unansweredSurveysCount, unreadMessagesCount: $1.unreadMessagesCount
backedProjectsCount: $0,
createdProjectsCount: $1.createdProjectsCount,
draftProjectsCount: $1.draftProjectsCount,
memberProjectsCount: $1.memberProjectsCount,
starredProjectsCount: $1.starredProjectsCount,
unansweredSurveysCount: $1.unansweredSurveysCount,
unreadMessagesCount: $1.unreadMessagesCount
) }
)

public static let draftProjectsCount = Lens<User.Stats, Int?>(
view: { $0.draftProjectsCount },
set: { User.Stats(
backedProjectsCount: $1.backedProjectsCount,
createdProjectsCount: $1.createdProjectsCount,
draftProjectsCount: $0,
memberProjectsCount: $1.memberProjectsCount,
starredProjectsCount: $1.starredProjectsCount,
unansweredSurveysCount: $1.unansweredSurveysCount,
unreadMessagesCount: $1.unreadMessagesCount
) }
)

public static let createdProjectsCount = Lens<User.Stats, Int?>(
view: { $0.createdProjectsCount },
set: { User.Stats(
backedProjectsCount: $1.backedProjectsCount, createdProjectsCount: $0,
memberProjectsCount: $1.memberProjectsCount, starredProjectsCount: $1.starredProjectsCount,
unansweredSurveysCount: $1.unansweredSurveysCount, unreadMessagesCount: $1.unreadMessagesCount
backedProjectsCount: $1.backedProjectsCount,
createdProjectsCount: $0,
draftProjectsCount: $1.draftProjectsCount,
memberProjectsCount: $1.memberProjectsCount,
starredProjectsCount: $1.starredProjectsCount,
unansweredSurveysCount: $1.unansweredSurveysCount,
unreadMessagesCount: $1.unreadMessagesCount
) }
)

public static let memberProjectsCount = Lens<User.Stats, Int?>(
view: { $0.memberProjectsCount },
set: { User.Stats(
backedProjectsCount: $1.backedProjectsCount,
createdProjectsCount: $1.createdProjectsCount, memberProjectsCount: $0,
starredProjectsCount: $1.starredProjectsCount, unansweredSurveysCount: $1.unansweredSurveysCount,
createdProjectsCount: $1.createdProjectsCount,
draftProjectsCount: $1.draftProjectsCount,
memberProjectsCount: $0,
starredProjectsCount: $1.starredProjectsCount,
unansweredSurveysCount: $1.unansweredSurveysCount,
unreadMessagesCount: $1.unreadMessagesCount
) }
)
Expand All @@ -34,8 +58,11 @@ extension User.Stats {
view: { $0.starredProjectsCount },
set: { User.Stats(
backedProjectsCount: $1.backedProjectsCount,
createdProjectsCount: $1.createdProjectsCount, memberProjectsCount: $1.memberProjectsCount,
starredProjectsCount: $0, unansweredSurveysCount: $1.unansweredSurveysCount,
createdProjectsCount: $1.createdProjectsCount,
draftProjectsCount: $1.draftProjectsCount,
memberProjectsCount: $1.memberProjectsCount,
starredProjectsCount: $0,
unansweredSurveysCount: $1.unansweredSurveysCount,
unreadMessagesCount: $1.unreadMessagesCount
) }
)
Expand Down
4 changes: 4 additions & 0 deletions KsApi/models/lenses/UserLenses.swift
Original file line number Diff line number Diff line change
Expand Up @@ -519,6 +519,10 @@ extension Lens where Whole == User, Part == User.Stats {
return User.lens.stats .. User.Stats.lens.createdProjectsCount
}

public var draftProjectsCount: Lens<User, Int?> {
return User.lens.stats .. User.Stats.lens.draftProjectsCount
}

public var memberProjectsCount: Lens<User, Int?> {
return User.lens.stats .. User.Stats.lens.memberProjectsCount
}
Expand Down
1 change: 1 addition & 0 deletions KsApi/models/templates/User.StatsTemplates.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ extension User.Stats {
internal static let template = User.Stats(
backedProjectsCount: nil,
createdProjectsCount: nil,
draftProjectsCount: nil,
memberProjectsCount: nil,
starredProjectsCount: nil,
unansweredSurveysCount: nil,
Expand Down
9 changes: 7 additions & 2 deletions Library/Tracking/KSRAnalytics.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1810,9 +1810,14 @@ private func userProperties(for user: User?, config _: Config?, _ prefix: String
var props: [String: Any] = [:]

props["backed_projects_count"] = user?.stats.backedProjectsCount
props["created_projects_count"] = user?.stats.createdProjectsCount
// the product/insights team definition of created_projects_count is the sum of createdProjectsCount and draftProjectsCount
props["created_projects_count"] = (user?.stats.createdProjectsCount ?? 0) +
singhhari marked this conversation as resolved.
Show resolved Hide resolved
(user?.stats
.draftProjectsCount ??
0)
props["is_admin"] = user?.isAdmin
props["launched_projects_count"] = user?.stats.memberProjectsCount
props["launched_projects_count"] = user?.stats
.createdProjectsCount // product and insights defines launched_projects_count as only the createdProjectsCount
props["uid"] = user?.id
props["watched_projects_count"] = user?.stats.starredProjectsCount
props["facebook_connected"] = user?.facebookConnected
Expand Down
12 changes: 6 additions & 6 deletions Library/Tracking/KSRAnalyticsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1774,8 +1774,8 @@ final class KSRAnalyticsTests: TestCase {
|> User.lens.location .~ Location.usa
|> User.lens.facebookConnected .~ true
|> User.lens.stats.starredProjectsCount .~ 2
|> User.lens.stats.createdProjectsCount .~ 3
|> User.lens.stats.memberProjectsCount .~ 6
|> User.lens.stats.createdProjectsCount .~ 7
|> User.lens.stats.draftProjectsCount .~ 8
|> User.lens.id .~ 10
|> User.lens.isAdmin .~ false

Expand All @@ -1792,17 +1792,17 @@ final class KSRAnalyticsTests: TestCase {

XCTAssertEqual(10, dataLakeClientProps?["user_uid"] as? Int)
XCTAssertEqual(5, dataLakeClientProps?["user_backed_projects_count"] as? Int)
XCTAssertEqual(3, dataLakeClientProps?["user_created_projects_count"] as? Int)
XCTAssertEqual(15, dataLakeClientProps?["user_created_projects_count"] as? Int)
XCTAssertEqual(false, dataLakeClientProps?["user_is_admin"] as? Bool)
XCTAssertEqual(6, dataLakeClientProps?["user_launched_projects_count"] as? Int)
XCTAssertEqual(7, dataLakeClientProps?["user_launched_projects_count"] as? Int)
XCTAssertEqual(2, dataLakeClientProps?["user_watched_projects_count"] as? Int)
XCTAssertEqual(true, dataLakeClientProps?["user_facebook_connected"] as? Bool)

XCTAssertEqual(10, segmentClientProps?["user_uid"] as? Int)
XCTAssertEqual(5, segmentClientProps?["user_backed_projects_count"] as? Int)
XCTAssertEqual(3, segmentClientProps?["user_created_projects_count"] as? Int)
XCTAssertEqual(15, segmentClientProps?["user_created_projects_count"] as? Int)
XCTAssertEqual(false, segmentClientProps?["user_is_admin"] as? Bool)
XCTAssertEqual(6, segmentClientProps?["user_launched_projects_count"] as? Int)
XCTAssertEqual(7, segmentClientProps?["user_launched_projects_count"] as? Int)
XCTAssertEqual(2, segmentClientProps?["user_watched_projects_count"] as? Int)
XCTAssertEqual(true, segmentClientProps?["user_facebook_connected"] as? Bool)
}
Expand Down