Skip to content

Commit

Permalink
Fix LibraryTests for new backer dashboard queries
Browse files Browse the repository at this point in the history
  • Loading branch information
amy-at-kickstarter committed Apr 11, 2024
1 parent dce72f6 commit c5b8b11
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ final class FetchProjectsEnvelope_FetchBackerProjectsQueryDataTests: XCTestCase
XCTAssertEqual(env.projects.first?.name, "Moonrise Cafe (home of Heart Cakes)")
XCTAssertEqual(env.totalCount, 4)
}

func testFetchProjectsEnvelope_withValidBackedProjectsData_Success() {
let envProducer = FetchProjectsEnvelope
.fetchProjectsEnvelope(from: FetchBackerProjectsQueryDataTemplate.valid.backedProjectsData)
Expand All @@ -29,5 +29,4 @@ final class FetchProjectsEnvelope_FetchBackerProjectsQueryDataTests: XCTestCase
XCTAssertEqual(env.projects.first?.name, "Zan's Late Pledge Campaign")
XCTAssertEqual(env.totalCount, 59)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,25 @@ public enum FetchBackerProjectsQueryDataTemplate {
var savedProjectsData: GraphAPI.FetchMySavedProjectsQuery.Data {
switch self {
case .valid:
let json = resultsMap(fromFile: "FetchMySavedProjectsQuery")
let json = self.resultsMap(fromFile: "FetchMySavedProjectsQuery")
return try! GraphAPI.FetchMySavedProjectsQuery.Data(
jsonObject: json as JSONObject,
variables: ["withStoredCards":false]
variables: ["withStoredCards": false]
)
}
}

var backedProjectsData: GraphAPI.FetchMyBackedProjectsQuery.Data {
switch self {
case .valid:
let json = resultsMap(fromFile: "FetchMyBackedProjectsQuery")
let json = self.resultsMap(fromFile: "FetchMyBackedProjectsQuery")
return try! GraphAPI.FetchMyBackedProjectsQuery.Data(
jsonObject: json as JSONObject,
variables: ["withStoredCards":false]
variables: ["withStoredCards": false]
)
}
}


private func resultsMap(fromFile resource: String) -> [String: Any?] {
/*
These are very large response object, so load it from a file instead of putting it inline here.
Expand Down
38 changes: 27 additions & 11 deletions Library/ViewModels/BackerDashboardProjectsViewModelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,21 @@ internal final class BackerDashboardProjectsViewModelTests: TestCase {
let projects = (1...3).map { .template |> Project.lens.id .~ $0 }
let projectsWithNewProject = (1...4).map { .template |> Project.lens.id .~ $0 }
let projectsWithNewestProject = (1...5).map { .template |> Project.lens.id .~ $0 }
let env = .template |> DiscoveryEnvelope.lens.projects .~ projects
let env2 = .template |> DiscoveryEnvelope.lens.projects .~ projectsWithNewProject
let env3 = .template |> DiscoveryEnvelope.lens.projects .~ projectsWithNewestProject

withEnvironment(apiService: MockService(fetchDiscoveryResponse: env), currentUser: .template) {
let env = FetchProjectsEnvelope(type: .backed, projects: projects, hasNextPage: true, totalCount: 5)
let env2 = FetchProjectsEnvelope(
type: .backed,
projects: projectsWithNewProject,
hasNextPage: true,
totalCount: 5
)
let env3 = FetchProjectsEnvelope(
type: .backed,
projects: projectsWithNewestProject,
hasNextPage: false,
totalCount: 5
)

withEnvironment(apiService: MockService(fetchBackerBackedProjectsResponse: env), currentUser: .template) {
self.vm.inputs.configureWith(projectsType: .backed, sort: .endingSoon)
self.vm.inputs.viewWillAppear(false)
self.vm.inputs.currentUserUpdated()
Expand Down Expand Up @@ -65,7 +75,10 @@ internal final class BackerDashboardProjectsViewModelTests: TestCase {
let updatedUser = User.template |> \.stats.backedProjectsCount .~ 1

// Come back after backing a project.
withEnvironment(apiService: MockService(fetchDiscoveryResponse: env2), currentUser: updatedUser) {
withEnvironment(
apiService: MockService(fetchBackerBackedProjectsResponse: env2),
currentUser: updatedUser
) {
self.vm.inputs.currentUserUpdated()
self.vm.inputs.viewWillAppear(false)

Expand All @@ -79,7 +92,10 @@ internal final class BackerDashboardProjectsViewModelTests: TestCase {
}

// Refresh.
withEnvironment(apiService: MockService(fetchDiscoveryResponse: env3), currentUser: updatedUser) {
withEnvironment(
apiService: MockService(fetchBackerBackedProjectsResponse: env3),
currentUser: updatedUser
) {
self.vm.inputs.refresh()

self.isRefreshing.assertValues([true, false, true, false, true])
Expand All @@ -94,9 +110,9 @@ internal final class BackerDashboardProjectsViewModelTests: TestCase {
}

func testNoProjects() {
let env = .template |> DiscoveryEnvelope.lens.projects .~ []
let env = FetchProjectsEnvelope(type: .saved, projects: [], hasNextPage: false, totalCount: 0)

withEnvironment(apiService: MockService(fetchDiscoveryResponse: env), currentUser: .template) {
withEnvironment(apiService: MockService(fetchBackerSavedProjectsResponse: env), currentUser: .template) {
self.vm.inputs.configureWith(projectsType: .saved, sort: .endingSoon)
self.vm.inputs.viewWillAppear(false)

Expand Down Expand Up @@ -126,9 +142,9 @@ internal final class BackerDashboardProjectsViewModelTests: TestCase {
func testProjectCellTapped() {
let project = Project.template
let projects = (1...3).map { .template |> Project.lens.id .~ $0 }
let env = .template |> DiscoveryEnvelope.lens.projects .~ projects
let env = FetchProjectsEnvelope(type: .backed, projects: projects, hasNextPage: false, totalCount: 3)

withEnvironment(apiService: MockService(fetchDiscoveryResponse: env), currentUser: .template) {
withEnvironment(apiService: MockService(fetchBackerBackedProjectsResponse: env), currentUser: .template) {
self.vm.inputs.configureWith(projectsType: .backed, sort: .endingSoon)
self.vm.inputs.viewWillAppear(false)

Expand Down

0 comments on commit c5b8b11

Please sign in to comment.