Skip to content
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: 2 additions & 1 deletion Fakes/Fakes/Networking.generated.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1611,7 +1611,8 @@ extension Networking.SiteVisitStatsItem {
public static func fake() -> Networking.SiteVisitStatsItem {
.init(
period: .fake(),
visitors: .fake()
visitors: .fake(),
views: .fake()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1936,14 +1936,17 @@ extension Networking.SiteVisitStats {
extension Networking.SiteVisitStatsItem {
public func copy(
period: CopiableProp<String> = .copy,
visitors: CopiableProp<Int> = .copy
visitors: CopiableProp<Int> = .copy,
views: CopiableProp<Int> = .copy
) -> Networking.SiteVisitStatsItem {
let period = period ?? self.period
let visitors = visitors ?? self.visitors
let views = views ?? self.views

return Networking.SiteVisitStatsItem(
period: period,
visitors: visitors
visitors: visitors,
views: views
)
}
}
Expand Down
10 changes: 6 additions & 4 deletions Networking/Networking/Model/Stats/SiteVisitStats.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ public struct SiteVisitStats: Decodable, GeneratedCopiable, GeneratedFakeable {
let rawData: [[AnyCodable]] = try container.decode([[AnyCodable]].self, forKey: .data)
let rawDataContainers = rawData.map({ MIContainer(data: $0.map({ $0.value }), fieldNames: fieldNames) })
let items = rawDataContainers.map({ SiteVisitStatsItem(period: $0.fetchStringValue(for: ItemFieldNames.period),
visitors: $0.fetchIntValue(for: ItemFieldNames.visitors)) })
visitors: $0.fetchIntValue(for: ItemFieldNames.visitors),
views: $0.fetchIntValue(for: ItemFieldNames.views)) })

self.init(siteID: siteID, date: date, granularity: granularity, items: items)
}
Expand Down Expand Up @@ -79,11 +80,12 @@ extension SiteVisitStats: Equatable {
//
private extension SiteVisitStats {

/// Defines all of the possbile fields for a SiteVisitStatsItem.
/// Defines all of the possible fields for a SiteVisitStatsItem.
///
enum ItemFieldNames: String {
case period = "period"
case visitors = "visitors"
case period
case visitors
case views
}
}

Expand Down
9 changes: 6 additions & 3 deletions Networking/Networking/Model/Stats/SiteVisitStatsItem.swift
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
import Foundation
import Codegen

/// Represents an single site visit stat for a specific period.
/// Represents a single site visit stat for a specific period.
///
public struct SiteVisitStatsItem: Equatable, GeneratedCopiable, GeneratedFakeable {
public let period: String
public let visitors: Int
public let views: Int

/// SiteVisitStatsItem struct initializer.
///
public init(period: String, visitors: Int) {
public init(period: String, visitors: Int, views: Int) {
self.period = period
self.visitors = visitors
self.views = views
}
}

Expand All @@ -21,6 +23,7 @@ public struct SiteVisitStatsItem: Equatable, GeneratedCopiable, GeneratedFakeabl
extension SiteVisitStatsItem: Comparable {
public static func < (lhs: SiteVisitStatsItem, rhs: SiteVisitStatsItem) -> Bool {
return lhs.period < rhs.period ||
(lhs.period == rhs.period && lhs.visitors < rhs.visitors)
(lhs.period == rhs.period && lhs.visitors < rhs.visitors) ||
(lhs.period == rhs.period && lhs.visitors == rhs.visitors && lhs.views < rhs.views)
}
}
3 changes: 2 additions & 1 deletion Networking/Networking/Remote/SiteStatsRemote.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class SiteStatsRemote: Remote {
let parameters = [ParameterKeys.unit: unit.rawValue,
ParameterKeys.date: dateFormatter.string(from: latestDateToInclude),
ParameterKeys.quantity: String(quantity),
ParameterKeys.statFields: ParameterValues.visitors]
ParameterKeys.statFields: "\(ParameterValues.visitors),\(ParameterValues.views)"]
let request = DotcomRequest(wordpressApiVersion: .mark1_1, method: .get, path: path, parameters: parameters)
let mapper = SiteVisitStatsMapper(siteID: siteID)
enqueue(request, mapper: mapper, completion: completion)
Expand All @@ -52,5 +52,6 @@ private extension SiteStatsRemote {

enum ParameterValues {
static let visitors: String = "visitors"
static let views: String = "views"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@ class SiteVisitStatsMapperTests: XCTestCase {
let sampleItem1 = dayStats.items![0]
XCTAssertEqual(sampleItem1.period, "2018-07-26")
XCTAssertEqual(sampleItem1.visitors, 101)
XCTAssertEqual(sampleItem1.views, 202)

let sampleItem2 = dayStats.items![11]
XCTAssertEqual(sampleItem2.period, "2018-08-06")
XCTAssertEqual(sampleItem2.visitors, 2)
XCTAssertEqual(sampleItem2.views, 4)
}

/// Verifies that all of the week unit SiteVisitStats fields are parsed correctly.
Expand All @@ -47,10 +49,12 @@ class SiteVisitStatsMapperTests: XCTestCase {
let sampleItem1 = weekStats.items![0]
XCTAssertEqual(sampleItem1.period, "2018W05W21")
XCTAssertEqual(sampleItem1.visitors, 4)
XCTAssertEqual(sampleItem1.views, 8)

let sampleItem2 = weekStats.items![11]
XCTAssertEqual(sampleItem2.period, "2018W08W06")
XCTAssertEqual(sampleItem2.visitors, 123123123)
XCTAssertEqual(sampleItem2.views, 246246246)
}

/// Verifies that all of the month unit SiteVisitStats fields are parsed correctly.
Expand All @@ -70,10 +74,12 @@ class SiteVisitStatsMapperTests: XCTestCase {
let sampleItem1 = monthStats.items![0]
XCTAssertEqual(sampleItem1.period, "2017-09-01")
XCTAssertEqual(sampleItem1.visitors, 224)
XCTAssertEqual(sampleItem1.views, 448)

let sampleItem2 = monthStats.items![10]
XCTAssertEqual(sampleItem2.period, "2018-07-01")
XCTAssertEqual(sampleItem2.visitors, 6)
XCTAssertEqual(sampleItem2.views, 12)
}

/// Verifies that all of the year unit SiteVisitStats fields are parsed correctly.
Expand All @@ -93,10 +99,12 @@ class SiteVisitStatsMapperTests: XCTestCase {
let sampleItem1 = yearStats.items![0]
XCTAssertEqual(sampleItem1.period, "2014-01-01")
XCTAssertEqual(sampleItem1.visitors, 1145)
XCTAssertEqual(sampleItem1.views, 2290)

let sampleItem2 = yearStats.items![3]
XCTAssertEqual(sampleItem2.period, "2017-01-01")
XCTAssertEqual(sampleItem2.visitors, 144)
XCTAssertEqual(sampleItem2.views, 288)
}
}

Expand Down
13 changes: 13 additions & 0 deletions Networking/NetworkingTests/Responses/site-visits-day.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,55 +3,68 @@
"unit": "day",
"fields": [
"period",
"views",
"visitors"
],
"data": [
[
"2018-07-26",
202,
101
],
[
"2018-07-27",
0,
0
],
[
"2018-07-28",
0,
0
],
[
"2018-07-29",
0,
0
],
[
"2018-07-30",
0,
0
],
[
"2018-07-31",
2,
1
],
[
"2018-08-01",
0,
0
],
[
"2018-08-02",
2,
1
],
[
"2018-08-03",
0,
0
],
[
"2018-08-04",
0,
0
],
[
"2018-08-05",
0,
0
],
[
"2018-08-06",
4,
2
]
]
Expand Down
13 changes: 13 additions & 0 deletions Networking/NetworkingTests/Responses/site-visits-month.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,55 +3,68 @@
"unit": "month",
"fields": [
"period",
"views",
"visitors"
],
"data": [
[
"2017-09-01",
448,
224
],
[
"2017-10-01",
14,
7
],
[
"2017-11-01",
24,
12
],
[
"2017-12-01",
6,
3
],
[
"2018-01-01",
6,
3
],
[
"2018-02-01",
10,
5
],
[
"2018-03-01",
12,
6
],
[
"2018-04-01",
26,
13
],
[
"2018-05-01",
14,
7
],
[
"2018-06-01",
10,
5
],
[
"2018-07-01",
12,
6
],
[
"2018-08-01",
2,
1
]
]
Expand Down
13 changes: 13 additions & 0 deletions Networking/NetworkingTests/Responses/site-visits-week.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,55 +3,68 @@
"unit": "week",
"fields": [
"period",
"views",
"visitors"
],
"data": [
[
"2018W05W21",
8,
4
],
[
"2018W05W28",
0,
0
],
[
"2018W06W04",
2,
1
],
[
"2018W06W11",
2,
1
],
[
"2018W06W18",
4,
2
],
[
"2018W06W25",
2,
1
],
[
"2018W07W02",
4,
2
],
[
"2018W07W09",
4,
2
],
[
"2018W07W16",
4,
2
],
[
"2018W07W23",
6,
3
],
[
"2018W07W30",
200,
100
],
[
"2018W08W06",
246246246,
123123123
]
]
Expand Down
6 changes: 6 additions & 0 deletions Networking/NetworkingTests/Responses/site-visits-year.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,33 @@
"unit": "year",
"fields": [
"period",
"views",
"visitors"
],
"data": [
[
"2014-01-01",
2290,
1145
],
[
"2015-01-01",
3258,
1629
],
[
"2016-01-01",
744,
372
],
[
"2017-01-01",
288,
144
],
[
"2018-01-01",
92,
46
]
]
Expand Down
Loading