diff --git a/jam-ui/cypress/e2e/jamtracks/jamtracks-page.cy.js b/jam-ui/cypress/e2e/jamtracks/jamtracks-page.cy.js new file mode 100644 index 000000000..d8f1e9501 --- /dev/null +++ b/jam-ui/cypress/e2e/jamtracks/jamtracks-page.cy.js @@ -0,0 +1,77 @@ +/// + +import makeFakeUser from '../../factories/user'; + +describe('JamTracks Page', () => { + beforeEach(() => { + const currentUser = makeFakeUser(); + cy.stubAuthenticate({ id: currentUser.id }); + cy.visit('/jamtracks'); + }); + + it('should display the JamTracks page', () => { + cy.get('.card-header h5').should('contain', 'Find JamTracks'); + }); + + it('should display the download link', () => { + cy.get('[data-testid=download-pdf]') + .invoke('attr', 'href') + .should('contain', 'https://s3.amazonaws.com/jamkazam-public/public/lists/all-jamkazam-jamtracks.pdf'); + }); + + it('should display the JamTracks search bar', () => { + cy.get('input[type="search"]').should('exist'); + }); + + describe.only('search artists', () => { + beforeEach(() => { + //http://www.jamkazam.local:3000/api/jamtracks/autocomplete?match=ac+&limit=5 + // cy.intercept('GET', /S+\/jamtracks\/autocomplete\?match=ac\S+/, { + // body: [{ artists: [{ original_artist: 'AC DC' }], songs: [] }] + // }).as('getJamTracksAutoComplete'); + cy.intercept('GET', /\S+\/jamtracks\?limit=100/, { fixture: 'jamtracks' }).as('getJamTracks'); + }); + + it('should display the JamTracks', () => { + cy.get('input[type="search"]').type('ba{enter}'); + cy.wait('@getJamTracks'); + cy.contains('Search Results: JamTracks including "ba"'); + cy.get('[data-testid=jamtracks-table] .track-name-col').should('contain', 'Back in Black by AC DC'); + cy.get('[data-testid=jamtracks-table] .track-tracks-col .jamtrack-track:visible').should('have.length', 6); + cy.get('[data-testid=jamtracks-table] .track-tracks-col').contains('Show all tracks').click(); + cy.get('[data-testid=jamtracks-table] .track-tracks-col .jamtrack-track:visible').should('have.length', 10); + cy.get('[data-testid=jamtracks-table] .track-tracks-col').contains('Show fewer tracks').click(); + cy.get('[data-testid=jamtracks-table] .track-tracks-col .jamtrack-track:visible').should('have.length', 6); + }); + }); + + // it('should display the JamTracks list', () => { + // cy.get('table').should('exist'); + // }); + + // it('should display the JamTracks pagination', () => { + // cy.get('button').contains('Next').should('exist'); + // }); + + // it('should display the JamTracks preview', () => { + // cy.get('table').find('tr').first().find('td').eq(1).find('button').click(); + // cy.get('table').find('tr').first().find('td').eq(1).find('button').should('contain', 'Preview'); + // }); + + // it('should display the JamTracks purchase button', () => { + // cy.get('table').find('tr').first().find('td').eq(2).find('button').click(); + // cy.get('table').find('tr').first().find('td').eq(2).find('button').should('contain', 'Add to Cart'); + // }); + + // it('should display the JamTracks artist search results', () => { + // cy.get('input[type="search"]').type('artist'); + // cy.get('ul').find('li').first().click(); + // cy.get('ul').should('not.exist'); + // }); + + // it('should display the JamTracks artist search results', () => { + // cy.get('input[type="search"]').type('artist'); + // cy.get('ul').find('li').first().click(); + // cy.get('ul').should('not.exist'); + // }); +}); diff --git a/jam-ui/cypress/fixtures/jamtracks.json b/jam-ui/cypress/fixtures/jamtracks.json new file mode 100644 index 000000000..1d54296b8 --- /dev/null +++ b/jam-ui/cypress/fixtures/jamtracks.json @@ -0,0 +1,191 @@ +{ + "next": null, + "count": 1, + "jamtracks": [ + { + "id": "1", + "name": "Back in Black", + "description": "This is a JamTrack audio file for use exclusively with the JamKazam service. This JamTrack is a high quality cover of the AC DC song \"Back in Black\".", + "recording_type": "Cover", + "original_artist": "AC DC", + "songwriter": null, + "publisher": null, + "sales_region": "Worldwide", + "price": "1.99", + "version": "0", + "duration": 221, + "year": null, + "plan_code": "jamtrack-acdc-backinblack", + "allow_free": true, + "download_price": "2.99", + "upgrade_price": "1.0", + "tracks": [ + { + "id": "103dea4d-f2a3-4414-8efe-d2ca378dda60", + "part": "Master Mix", + "instrument": { + "id": "computer", + "description": "Computer", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Master", + "position": 1000, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Master%20Mix-44100-preview-e9a5a63f34b4d523ee1842fff31f88ce.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Master%20Mix-44100-preview-25fcba7ace7086e3cb6b97d7e33ba72e.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Master%20Mix-44100-preview-9f0b072ed9f4b546e170fcdfb302137e.mp3" + }, + { + "id": "2755cbdd-0476-4f3b-9ba1-e2da561ddb4e", + "part": "Lead", + "instrument": { + "id": "voice", + "description": "Voice", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 1, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Vocal%20-%20Lead-44100-preview-d35c328fc3936dad9a79fe102dc72950.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Vocal%20-%20Lead-44100-preview-b97b37651eae352fae3b3060918c7bcb.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Vocal%20-%20Lead-44100-preview-d35c328fc3936dad9a79fe102dc72950.aac" + }, + { + "id": "0db7c4e1-5e8d-43fe-bd35-98acd8f68b26", + "part": "Drums", + "instrument": { + "id": "drums", + "description": "Drums", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 2, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Drums-44100-preview-03aadceb966caf40b96334bdd00234f6.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Drums-44100-preview-854914e3e0d6fdc5f0794325b0ecaead.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Drums-44100-preview-03aadceb966caf40b96334bdd00234f6.aac" + }, + { + "id": "2cc79ab6-dab8-4905-85e6-0df5f8e087f1", + "part": "Bass", + "instrument": { + "id": "bass guitar", + "description": "Bass Guitar", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 3, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Bass-44100-preview-61c334ac87f811bd010ed3a910764c2e.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Bass-44100-preview-4066dafd7b72e9993b0c0fe1dba2b332.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Bass-44100-preview-61c334ac87f811bd010ed3a910764c2e.aac" + }, + { + "id": "ed1d3487-3b32-442f-9c76-8a36fe3bb643", + "part": "Solo", + "instrument": { + "id": "electric guitar", + "description": "Electric Guitar", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 4, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Solo-44100-preview-e9fe8572a9ac1022762642cbd92b3c34.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Solo-44100-preview-5fb058042254206cfa9fb4dcb0310b2c.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Solo-44100-preview-e9fe8572a9ac1022762642cbd92b3c34.aac" + }, + { + "id": "f4ce7c91-7542-4e03-8fc2-68b31683d33e", + "part": "Rhythm 1", + "instrument": { + "id": "electric guitar", + "description": "Electric Guitar", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 5, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Rhythm%201-44100-preview-6b498479823d4131a01fa535817d5eab.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Rhythm%201-44100-preview-f4cbb31dbde3e1a3e6012730a7e0e10f.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Rhythm%201-44100-preview-6b498479823d4131a01fa535817d5eab.aac" + }, + { + "id": "2d96c7ec-59f1-4d56-8a7f-7f4c75a0ccef", + "part": "Rhythm 2", + "instrument": { + "id": "electric guitar", + "description": "Electric Guitar", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 6, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Rhythm%202-44100-preview-a626d7c632560f6737e1b6024141289e.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Rhythm%202-44100-preview-06a0e5af451f001f3465992efcd34ec0.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Rhythm%202-44100-preview-a626d7c632560f6737e1b6024141289e.aac" + }, + { + "id": "fce018ca-c897-4137-aa10-ef56a8e1831f", + "part": "Intro Scrapes", + "instrument": { + "id": "electric guitar", + "description": "Electric Guitar", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 7, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Intro%20Scrapes-44100-preview-0ddfaa7154e9ba35d05d60477d5dd3e9.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Intro%20Scrapes-44100-preview-f53ce3c5f9dcf81af51560f52635fbb0.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Intro%20Scrapes-44100-preview-0ddfaa7154e9ba35d05d60477d5dd3e9.aac" + }, + { + "id": "c9b3e0a8-4db0-4d0f-9769-398a6d56506e", + "part": "Main", + "instrument": { + "id": "electric guitar", + "description": "Electric Guitar", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 8, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Main-44100-preview-234a224f75a97d7ff8f55442ece6fcde.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Main-44100-preview-828c9691f5435dea1c90182fa2618c9b.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Electric%20Guitar%20-%20Main-44100-preview-234a224f75a97d7ff8f55442ece6fcde.aac" + }, + { + "id": "28c3df07-2a88-45a9-9ae6-3399a5d2eb20", + "part": "Sound FX", + "instrument": { + "id": "computer", + "description": "Computer", + "created_at": "2021-02-02T23:16:46.168Z", + "updated_at": "2021-02-02T23:16:46.168Z", + "popularity": 3 + }, + "track_type": "Track", + "position": 9, + "preview_mp3_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Sound%20Effects-44100-preview-6c859c73036cd55bceb65f19f2d2f2f3.mp3", + "preview_ogg_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Sound%20Effects-44100-preview-f840d8df4c7388f776477139025ee712.ogg", + "preview_aac_url": "https://jamkazam-dev-public.s3.amazonaws.com/jam_track_previews/AC%20DC/Back%20in%20Black/Back%20in%20Black%20Stem%20-%20Sound%20Effects-44100-preview-6c859c73036cd55bceb65f19f2d2f2f3.aac" + } + ], + "licensor": null, + "genres": ["Rock", "Pop"], + "added_cart": true, + "can_download": true, + "purchased": true + } + ] +} diff --git a/jam-ui/src/components/dashboard/JKDashboardMain.js b/jam-ui/src/components/dashboard/JKDashboardMain.js index 89656126d..4cb9ed532 100644 --- a/jam-ui/src/components/dashboard/JKDashboardMain.js +++ b/jam-ui/src/components/dashboard/JKDashboardMain.js @@ -286,7 +286,7 @@ function JKDashboardMain() { - + {/*Redirect*/} diff --git a/jam-ui/src/components/jamtracks/JKJamTrackArtists.js b/jam-ui/src/components/jamtracks/JKJamTrackArtists.js index 6b832b558..cfd5abbcf 100644 --- a/jam-ui/src/components/jamtracks/JKJamTrackArtists.js +++ b/jam-ui/src/components/jamtracks/JKJamTrackArtists.js @@ -31,7 +31,9 @@ const JKJamTrackArtists = ({ artists, showArtists, onSelect }) => { onClick={() => handleClick(artist)} className={index + 1 > 6 && !expanded ? 'd-none' : null} > - {artist.original_artist} + + {artist.original_artist} + ))} diff --git a/jam-ui/src/components/jamtracks/JKJamTrackPreview.js b/jam-ui/src/components/jamtracks/JKJamTrackPreview.js index c1c8d0913..08f24e0af 100644 --- a/jam-ui/src/components/jamtracks/JKJamTrackPreview.js +++ b/jam-ui/src/components/jamtracks/JKJamTrackPreview.js @@ -19,6 +19,7 @@ const JKJamTrackPreview = ({ jamTrack }) => { {(index + 1) % 3 === 0 &&
} + {(index + 1) === jamTrack.tracks.length && (index + 1) % 3 !== 0 &&
} ))} diff --git a/jam-ui/src/components/jamtracks/JKJamTrackTrack.js b/jam-ui/src/components/jamtracks/JKJamTrackTrack.js index 1a85163a4..d6e525d7d 100644 --- a/jam-ui/src/components/jamtracks/JKJamTrackTrack.js +++ b/jam-ui/src/components/jamtracks/JKJamTrackTrack.js @@ -104,7 +104,7 @@ const JKJamTrackTrack = ({ track }) => { }; return ( -
+
diff --git a/jam-ui/src/components/jamtracks/JKJamTracksAutoComplete.js b/jam-ui/src/components/jamtracks/JKJamTracksAutoComplete.js index 9a9bad88b..6bf110564 100644 --- a/jam-ui/src/components/jamtracks/JKJamTracksAutoComplete.js +++ b/jam-ui/src/components/jamtracks/JKJamTracksAutoComplete.js @@ -4,7 +4,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useTranslation } from 'react-i18next'; import { autocompleteJamTracks } from '../../helpers/rest'; -const JKJamTracksAutoComplete = ({ onSelect, onEnter, showDropdown, setShowDropdown, inputValue, setInputValue }) => { +const JKJamTracksAutoComplete = ({ onSelect, onEnter, showDropdown, setShowDropdown, inputValue, setInputValue, inputPlaceholder }) => { const [artists, setArtists] = useState([]); const [songs, setSongs] = useState([]); //const [showDropdown, setShowDropdown] = useState(false); @@ -99,8 +99,9 @@ const JKJamTracksAutoComplete = ({ onSelect, onEnter, showDropdown, setShowDropd onKeyDown={handleOnKeyDown} value={inputValue} innerRef={inputRef} - placeholder={t('new.invitations_filter_placeholder', { ns: 'sessions' })} + placeholder={inputPlaceholder} data-testid="autocomplete-text" + type="search" />
diff --git a/jam-ui/src/components/jamtracks/JKJamTracksFilter.js b/jam-ui/src/components/jamtracks/JKJamTracksFilter.js index 3c62a2ce2..a7ac4f0a1 100644 --- a/jam-ui/src/components/jamtracks/JKJamTracksFilter.js +++ b/jam-ui/src/components/jamtracks/JKJamTracksFilter.js @@ -132,12 +132,13 @@ const JKJamTracksFilter = () => { setShowDropdown={setShowDropdown} inputValue={autoCompleteInputValue} setInputValue={setAutoCompleteInputValue} + inputPlaceholder={t('search.search_input.placeholder')} /> Download JamTracks catalog as a{' '} - + PDF file diff --git a/jam-ui/src/components/jamtracks/JKJamTracksList.js b/jam-ui/src/components/jamtracks/JKJamTracksList.js index 5bdf4863c..5ef99c3e7 100644 --- a/jam-ui/src/components/jamtracks/JKJamTracksList.js +++ b/jam-ui/src/components/jamtracks/JKJamTracksList.js @@ -29,7 +29,7 @@ const JKJamTracksList = ({ selectedType, searchTerm, jamTracks, nextPage, onNext {jamTracks.length > 0 && ( - +
@@ -41,13 +41,13 @@ const JKJamTracksList = ({ selectedType, searchTerm, jamTracks, nextPage, onNext {jamTracks.map((jamTrack, index) => ( - - - diff --git a/jam-ui/src/i18n/locales/en/jamtracks.json b/jam-ui/src/i18n/locales/en/jamtracks.json index 67ccb4ec0..4bb43b51b 100644 --- a/jam-ui/src/i18n/locales/en/jamtracks.json +++ b/jam-ui/src/i18n/locales/en/jamtracks.json @@ -1,5 +1,9 @@ { "search": { - "page_title": "Find JamTracks" + "page_title": "Find JamTracks", + "search_input": { + "title": "Search", + "placeholder": "Search by artist, song, style, or keyword" + } } -} \ No newline at end of file +} diff --git a/jam-ui/src/routes.js b/jam-ui/src/routes.js index a1d3f4407..7f652e289 100644 --- a/jam-ui/src/routes.js +++ b/jam-ui/src/routes.js @@ -37,8 +37,8 @@ export const jamTrackRoutes = { exact: true, icon: 'record-vinyl', children: [ - { to: '/jamtracks', name: 'My JamTracks'}, - { to: '/jamtracks/search', name: 'Find JamTracks'}, + { to: '/jamtracks/my', name: 'My JamTracks'}, + { to: '/jamtracks', name: 'Find JamTracks'}, ] }
Song
+ {jamTrack.name} by {jamTrack.original_artist} + +