Skip to content

Commit

Permalink
Merge pull request #1097 from dhis2/v40-backport/fix-back-slash
Browse files Browse the repository at this point in the history
fix: remove extra slash in download links (v40)
  • Loading branch information
kabaros authored Sep 12, 2023
2 parents 396abfb + aed4e98 commit bd576d1
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 2 deletions.
24 changes: 23 additions & 1 deletion .github/workflows/dhis2-verify-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,31 @@ jobs:
- name: Lint
run: yarn lint

test:
runs-on: ubuntu-latest
needs: lint
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12.x

- uses: actions/cache@v2
id: yarn-cache
with:
path: '**/node_modules'
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

- name: Test
run: yarn d2-app-scripts test --coverage

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1

publish:
runs-on: ubuntu-latest
needs: [build, lint]
needs: [build, lint, test]
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- uses: actions/checkout@v2
Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,10 @@
},
"resolutions": {
"@dhis2/ui": "^8.12.2"
},
"jest": {
"collectCoverageFrom": [
"src/**/*.js"
]
}
}
6 changes: 5 additions & 1 deletion src/components/DownloadAs/use-hrefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,12 @@ const useHrefs = ({ endpoint, fileTypes, queryStr }) => {
// based on query params, but older endpoints only take a timestamp
queryStr = queryStr || `t=${timestamp}`

// removing leading slash for endpoint to make sure it works whether it's configured with slash or not
const sanitisedEndpoint = endpoint?.replace(/^\//, '')
const endpointUrl = `${baseUrl}/api/${apiVersion}/${sanitisedEndpoint}`

return fileTypes.reduce((acc, type) => {
const downloadUrl = `${baseUrl}/api/${apiVersion}/${endpoint}.${type}?${queryStr}`
const downloadUrl = `${endpointUrl}.${type}?${queryStr}`
acc[type] = downloadUrl
return acc
}, {})
Expand Down
59 changes: 59 additions & 0 deletions src/components/DownloadAs/use-hrefs.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import useHrefs from './use-hrefs.js'

jest.mock('@dhis2/app-runtime', () => ({
useConfig: () => ({
baseUrl: 'https://debug.dhis2.org/dev',
apiVersion: '41',
}),
}))

describe('use-hrefs', () => {
const mockDate = 1694516945008

beforeEach(() => {
jest.spyOn(Date, 'now').mockReturnValueOnce(mockDate)
})

it('should generate correct urls', () => {
const result = useHrefs({
endpoint: '/dataAnalysis/validationRules/report',
fileTypes: ['pdf', 'xls', 'csv'],
queryStr: undefined,
})
expect(result.csv).toMatch(
`https://debug.dhis2.org/dev/api/41/dataAnalysis/validationRules/report.csv?t=${mockDate}`
)
expect(result.pdf).toEqual(
`https://debug.dhis2.org/dev/api/41/dataAnalysis/validationRules/report.pdf?t=${mockDate}`
)
expect(result.xls).toEqual(
`https://debug.dhis2.org/dev/api/41/dataAnalysis/validationRules/report.xls?t=${mockDate}`
)
})
it('should generate correct urls even if endpoint does not start with slash', () => {
const result = useHrefs({
endpoint: 'dataAnalysis/validationRules/report',
fileTypes: ['pdf', 'xls', 'csv'],
queryStr: undefined,
})
expect(result.csv).toMatch(
`https://debug.dhis2.org/dev/api/41/dataAnalysis/validationRules/report.csv?t=${mockDate}`
)
expect(result.pdf).toEqual(
`https://debug.dhis2.org/dev/api/41/dataAnalysis/validationRules/report.pdf?t=${mockDate}`
)
expect(result.xls).toEqual(
`https://debug.dhis2.org/dev/api/41/dataAnalysis/validationRules/report.xls?t=${mockDate}`
)
})
it('should generate correct urls even when passed query string', () => {
const result = useHrefs({
endpoint: 'dataAnalysis/validationRules/report',
fileTypes: ['pdf', 'xls', 'csv'],
queryStr: 'locale=fr',
})
expect(result.csv).toMatch(
'https://debug.dhis2.org/dev/api/41/dataAnalysis/validationRules/report.csv?locale=fr'
)
})
})

0 comments on commit bd576d1

Please sign in to comment.