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
49 changes: 0 additions & 49 deletions __test__/projects/CachingProjectDataSource.test.ts

This file was deleted.

102 changes: 102 additions & 0 deletions __test__/projects/CachingProjectListDataSource.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
import { ProjectSummary, CachingProjectListDataSource } from "@/features/projects/domain"

const projects: ProjectSummary[] = [{
id: "acme-foo",
name: "foo",
displayName: "Foo",
owner: "acme",
ownerUrl: "https://github.com/acme"
}]

test("It returns cached projects when cache is populated", async () => {
let didCallDataSource = false
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
didCallDataSource = true
return projects
}
},
repository: {
async get() {
return projects
},
async set() {},
async delete() {}
}
})
const result = await sut.getProjectList()
expect(result).toEqual(projects)
expect(didCallDataSource).toBe(false)
})

test("It fetches and caches projects when cache is empty", async () => {
let cachedProjects: ProjectSummary[] | undefined
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
return projects
}
},
repository: {
async get() {
return undefined
},
async set(value) {
cachedProjects = value
},
async delete() {}
}
})
const result = await sut.getProjectList()
expect(result).toEqual(projects)
expect(cachedProjects).toEqual(projects)
})

test("It treats an empty cached list as a valid cache hit and does not call the data source", async () => {
let didCallDataSource = false
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
didCallDataSource = true
return []
}
},
repository: {
async get() {
return []
},
async set() {},
async delete() {}
}
})
const result = await sut.getProjectList()
expect(result).toEqual([])
expect(didCallDataSource).toBe(false)
})

test("It bypasses cache and refreshes when refresh=true", async () => {
let didCallDataSource = false
let cachedProjects: ProjectSummary[] | undefined
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
didCallDataSource = true
return projects
}
},
repository: {
async get() {
return projects
},
async set(value) {
cachedProjects = value
},
async delete() {}
}
})
const result = await sut.getProjectList({ refresh: true })
expect(result).toEqual(projects)
expect(didCallDataSource).toBe(true)
expect(cachedProjects).toEqual(projects)
})
125 changes: 0 additions & 125 deletions __test__/projects/FilteringGitHubRepositoryDataSource.test.ts

This file was deleted.

Loading
Loading