Ejemplo n.º 1
0
    def test_get_songs(self):
        sA = models.Song()
        sB = models.Song()
        songA = models.File(name="Song A")
        songB = models.File(name="Song B")
        songA.song = sA
        songB.song = sB
        session.add_all([songA, songB])
        session.commit()

        response = self.client.get("/api/songs",
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(len(data), 2)

        songA = data[0]
        sA = songA["file"]
        self.assertEqual(sA["file_name"], "Song A")
        self.assertEqual(sA["file_id"], 1)

        songB = data[1]
        sB = songB["file"]
        self.assertEqual(sB["file_name"], "Song B")
        self.assertEqual(sB["file_id"], 2)
Ejemplo n.º 2
0
    def test_delete_song(self):
        """ Deleting a single song from a populated database """
        songA = models.File(filename="Drones.mp3")
        songA_id = models.Song(file_id=1)
        songB = models.File(filename="Californication.mp3")
        songB_id = models.Song(file_id=2)

        session.add_all([songA, songB, songA_id, songB_id])
        session.commit()

        response = self.client.get("/api/songs/{}".format(songA.id),
                                   headers=[("Accept", "application/json")])

        session.delete(songA_id)
        session.delete(songA)
        session.commit()

        response = self.client.get("/api/songs/{}".format(songB.id))

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)
        files = session.query(models.File).all()
        self.assertEqual(len(files), 1)

        song = json.loads(response.data.decode("ascii"))
        print(song)
        self.assertEqual(song["file"]["filename"], "Californication.mp3")
Ejemplo n.º 3
0
    def test_get_songs(self):
        """ Getting songs from a populated database """
        fileA = models.File(name="test1.mp3")
        fileB = models.File(name="test2.mp3")

        songA = models.Song(file=fileA)
        songB = models.Song(file=fileB)

        session.add_all([fileA, fileB, songA, songB])
        session.commit()

        response = self.client.get("/api/songs",
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(len(data), 2)

        songA = data[0]
        self.assertEqual(songA['id'], 1)
        self.assertEqual(songA['file'], {
            'name': 'test1.mp3',
            'id': 1,
            'path': '/uploads/test1.mp3'
        })

        songB = data[1]
        self.assertEqual(songB['id'], 2)
        self.assertEqual(songB['file'], {
            'name': 'test2.mp3',
            'id': 2,
            'path': '/uploads/test2.mp3'
        })
Ejemplo n.º 4
0
    def test_get_songs(self):
        file_A = models.File(name='file_A.mp3')
        song_A = models.Song(file_=file_A)
        file_B = models.File(name='file_B.mp3')
        song_B = models.Song(file_=file_B)

        session.add_all([file_A, file_B, song_A, song_B])
        session.commit()

        response = self.client.get(
            '/api/songs',
            headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, 'application/json')

        data = json.loads(response.data.decode('ascii'))
        self.assertEqual(len(data), 2)

        response_song_A, response_song_B = data
        self.assertEqual(response_song_A['id'], song_A.id)
        self.assertEqual(response_song_A['file']['id'], song_A.file_.id)
        self.assertEqual(response_song_A['file']['name'], song_A.file_.name)
        self.assertEqual(response_song_B['id'], song_B.id)
        self.assertEqual(response_song_B['file']['id'], song_B.file_.id)
        self.assertEqual(response_song_B['file']['name'], song_B.file_.name)
Ejemplo n.º 5
0
    def test_get_songs(self):
        fileA = models.File(name='fileA.mp3')
        session.add(fileA)
        session.commit()
        songA = models.Song(file_id=fileA.id)
        session.add(songA)
        session.commit()
        fileB = models.File(name='fileB.mp3')
        session.add(fileB)
        session.commit()
        songB = models.Song(file_id=fileB.id)
        session.add(songB)
        session.commit()

        response = self.client.get('/api/songs',
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, 'application/json')

        data = json.loads(response.data.decode('ascii'))

        SongA, SongB = data
        self.assertEqual(SongA['id'], songA.id)
        self.assertEqual(SongA['file']['id'], songA.file_id)

        self.assertEqual(SongB['id'], songB.id)
        self.assertEqual(SongB['file']['id'], songB.file_id)
Ejemplo n.º 6
0
    def test_get_songs(self):
        """ Getting songs - success """
        #Add 2 Songs to DB with File Data
        file1 = models.File(filename="Awake.mp3")
        file2 = models.File(filename="Montana.mp3")
        song1 = models.Song(name="Awake", file=file1)
        song2 = models.Song(name="Montana", file=file2)
        
        session.add_all([song1, song2])
        session.commit()
        
        #query api
        response = self.client.get("/api/songs")
        print(response)
        
        #assert api response contains expected response
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")
        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(len(data), 2)
        
        #assert response contains expected songs/file
        song1 = data[0]
        print(song1)
        self.assertEqual(song1["songname"], "Awake")
        self.assertEqual(song1["file"]["filename"], "Awake.mp3")
        self.assertEqual(song1["file"]["id"], song1["id"])

        song2 = data[1]
        self.assertEqual(song2["songname"], "Montana")
        self.assertEqual(song2["file"]["filename"], "Montana.mp3")
        self.assertEqual(song2["file"]["id"], song2["id"])
Ejemplo n.º 7
0
    def test_edit_song(self):
        fileA = models.File(filename="testA.wav")
        fileB = models.File(filename="testB.wav")
        song = models.Song(file=fileA)

        session.add_all([fileA, fileB, song])
        session.commit()

        newfile = {"file": {"id": fileB.id}}
        data = newfile

        response = self.client.get("api/songs/{}".format(song.id),
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")
        songjson = json.loads(response.data.decode("ascii"))
        self.assertEqual(songjson["file"]["filename"], "testA.wav")

        response = self.client.put("/api/songs/{}".format(song.id),
                                   data=json.dumps(data),
                                   content_type="application/json",
                                   headers=[("Accept", "application/json")])
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")
        songjson = json.loads(response.data.decode("ascii"))
        self.assertEqual(songjson["file"]["filename"], "testB.wav")
        self.assertEqual(songjson["file"]["id"], fileB.id)
Ejemplo n.º 8
0
    def test_put_song(self):
        """ Updating a song """

        songA = models.Song()

        fileA = models.File(name="fileA")
        fileB = models.File(name="fileB")

        session.add_all([fileA, fileB])
        session.commit()

        songA.file_id = fileA.id

        session.add_all([songA])
        session.commit()

        data = {"file": {"id": fileB.id}}

        response = self.client.put("/api/songs/{}".format(songA.id),
                                   data=json.dumps(data),
                                   content_type="application/json",
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.mimetype, "application/json")
        self.assertEqual(
            urlparse(response.headers.get("Location")).path, "/api/songs")

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["file"]["id"], fileB.id)
Ejemplo n.º 9
0
    def test_get_songs(self):
        """ Getting songs from a populated database """
        fileA = models.File(filename='FileA')
        fileB = models.File(filename='FileB')

        session.add_all([fileA, fileB])
        session.commit()

        songA = models.Song(song_file_id=fileA.id)
        songB = models.Song(song_file_id=fileB.id)

        session.add_all([songA, songB])
        session.commit()

        response = self.client.get(
            "/api/songs",
            headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data)
        self.assertEqual(len(data), 2)

        songA = data[0]
        self.assertEqual(songA["id"], 1)
        self.assertEqual(songA["file"]["id"], 1)
        self.assertEqual(songA["file"]["name"], "FileA")

        songB = data[1]
        self.assertEqual(songB["id"], 2)
        self.assertEqual(songB["file"]["id"], 2)
        self.assertEqual(songB["file"]["name"], "FileB")
Ejemplo n.º 10
0
    def test_delete_song(self):
        # test deleting a song

        # populate db
        file_A = models.File(name='file_A.mp3')
        song_A = models.Song(file=file_A)
        file_B = models.File(name='file_B.mp3')
        song_B = models.Song(file=file_B)
        session.add_all([file_A, file_B, song_A, song_B])
        session.commit()

        response = self.client.delete("/api/songs/{}".format(song_A.id),
                                      content_type="application/json",
                                      headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["id"], 1)
        self.assertEqual(data["file"]["id"], 1)
        self.assertEqual(data["file"]["name"], "file_A.mp3")

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        files = session.query(models.File).all()
        self.assertEqual(len(files), 1)
        file = files[0]
        self.assertEqual(file.id, 2)
        self.assertEqual(file.name, 'file_B.mp3')
Ejemplo n.º 11
0
    def test_get_songs(self):
        # test getting all songs in db

        # populate db
        file_A = models.File(name='file_A.mp3')
        song_A = models.Song(file=file_A)
        file_B = models.File(name='file_B.mp3')
        song_B = models.Song(file=file_B)
        session.add_all([file_A, file_B, song_A, song_B])
        session.commit()

        response = self.client.get('/api/songs',
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, 'application/json')

        data = json.loads(response.data.decode('ascii'))
        self.assertEqual(len(data), 2)

        # store JSON structured data for each test
        response_song_A, response_song_B = data
        # assert tests for first song
        self.assertEqual(response_song_A['id'], song_A.id)
        self.assertEqual(response_song_A['file']['id'], song_A.file.id)
        self.assertEqual(response_song_A['file']['name'], song_A.file.name)
        # assert tests for second song
        self.assertEqual(response_song_B['id'], song_B.id)
        self.assertEqual(response_song_B['file']['id'], song_B.file.id)
        self.assertEqual(response_song_B['file']['name'], song_B.file.name)
Ejemplo n.º 12
0
    def test_get_songs(self):
        """ Getting songs from a populated database """

        songA = models.Song()
        songB = models.Song()

        fileA = models.File(name="fileA")
        fileB = models.File(name="fileB")

        session.add_all([fileA, fileB])
        session.commit()

        songA.file_id = fileA.id
        songB.file_id = fileB.id

        session.add_all([songA, songB])
        session.commit()

        response = self.client.get("/api/songs",
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(len(data), 2)

        songAR = data[0]
        self.assertEqual(songAR, songA.as_dictionary())

        songBR = data[1]
        self.assertEqual(songBR, songB.as_dictionary())
Ejemplo n.º 13
0
    def test_put_song(self):
        file_A = models.File(name='file_A.mp3')
        file_B = models.File(name='file_B.mp3')
        song_A = models.Song(file_=file_A)

        session.add_all([file_A, file_B, song_A])
        session.commit()

        data = {
            "file": {
                "id": file_B.id
            }
        }

        response = self.client.put(
            "/api/songs/{}".format(song_A.id),
            data=json.dumps(data),
            content_type="application/json",
            headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["id"], 1)
        self.assertEqual(data["file"]["id"], 2)
        self.assertEqual(data["file"]["name"], "file_B.mp3")

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        song = songs[0]
        self.assertEqual(song.id, 1)
        self.assertEqual(song.file_.id, 2)
        self.assertEqual(song.file_.name, "file_B.mp3")
Ejemplo n.º 14
0
    def test_delete(self):
        sA = models.Song()
        sB = models.Song()
        songA = models.File(name="Song A")
        songB = models.File(name="Song B")
        songA.song = sA
        songB.song = sB
        session.add_all([songA, songB])
        session.commit()

        response = self.client.get("/api/songs/{}".format(songA.song.id),
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))

        songA = data
        sA = songA["file"]
        self.assertEqual(sA["file_name"], "Song A")
        self.assertEqual(sA["file_id"], 1)

        response = self.client.delete("/api/songs/{}".format(sA["file_id"]),
                                      headers=[("Accept", "application/json")])

        response = self.client.get("/api/songs/{}".format(sA["file_id"]),
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 404)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["message"], "Could not find song with id 1")
Ejemplo n.º 15
0
    def test_get_songs(self):
        """ Getting songs from a populated database """

        #Create example files & songs
        fileA = models.File(name="SongA.mp3")
        fileB = models.File(name="SongB.mp3")
        songA = models.Song(file=fileA)
        songB = models.Song(file=fileB)
        session.add_all([fileA, fileB, songA, songB])
        session.commit()

        response = self.client.get("/api/songs",
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(len(data), 2)

        songA = data[0]
        self.assertEqual(songA["id"], 1)
        self.assertEqual(songA["file"]["id"], 1)
        self.assertEqual(songA["file"]["name"], "SongA.mp3")

        songB = data[1]
        self.assertEqual(songB["id"], 2)
        self.assertEqual(songB["file"]["id"], 2)
        self.assertEqual(songB["file"]["name"], "SongB.mp3")
Ejemplo n.º 16
0
    def test_delete_song(self):
        """ Deleting a song """
        fileA = models.File(name="test1.mp3")
        fileB = models.File(name="test2.mp3")

        songA = models.Song(file=fileA)
        songB = models.Song(file=fileB)

        session.add_all([fileA, fileB, songA, songB])
        session.commit()

        response = self.client.delete("/api/songs/{}".format(songB.id),
                                      headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["message"], "Deleted song 2")

        songs = session.query(models.Song).all()
        files = session.query(models.File).all()

        self.assertEqual(len(songs), 1)
        self.assertEqual(len(files), 2)
Ejemplo n.º 17
0
    def test_get_songs(self):
        """ Getting songs from a populated database """
        songA = models.File(filename="Drones.mp3")
        songA_id = models.Song(file_id=1)
        songB = models.File(filename="Californication.mp3")
        songB_id = models.Song(file_id=2)

        session.add_all([songA, songB, songA_id, songB_id])
        session.commit()

        response = self.client.get("/api/songs",
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(len(data), 2)

        songA = data[0]
        self.assertEqual(songA["file"]["filename"], "Drones.mp3")
        self.assertEqual(songA["id"], 1)

        songB = data[1]
        self.assertEqual(songB["file"]["filename"], "Californication.mp3")
        self.assertEqual(songB["id"], 2)
Ejemplo n.º 18
0
    def test_post_song(self):
        # test posting song into db

        file_A = models.File(name='file_A.mp3')
        session.add(file_A)
        session.commit()

        data = {"file": {"id": file_A.id}}

        response = self.client.post("/api/songs",
                                    data=json.dumps(data),
                                    content_type="application/json",
                                    headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["id"], 1)
        self.assertEqual(data["file"]["id"], 1)
        self.assertEqual(data["file"]["name"], "file_A.mp3")

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        song = songs[0]
        self.assertEqual(song.id, 1)
        self.assertEqual(song.file.id, 1)
        self.assertEqual(song.file.name, "file_A.mp3")
Ejemplo n.º 19
0
    def test_post_song(self):
        """ Posting a new song """
        fileA = models.File(filename='FileA')

        session.add(fileA)
        session.commit()

        song_payload = {
                        "file": {
                            "id": fileA.id
                            }
                        }

        response = self.client.post("/api/songs",
                                    data=json.dumps(song_payload),
                                    content_type="application/json",
                                    headers=[("Accept", "application/json")])
        print response.data
        print fileA.id
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.mimetype, "application/json")
        self.assertEqual(urlparse(response.headers.get(
            "Location")).path, "/api/songs")

        data = json.loads(response.data)
        self.assertEqual(data["id"], fileA.id)
        # self.assertEqual(data["song_file"], "techno")

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        song = songs[0]
        self.assertEqual(song.id, fileA.id)
Ejemplo n.º 20
0
    def test_post_song(self):
        """ Adding a new song """
        fileA = models.File(name="test-feb14.mp3")
        session.add(fileA)
        session.commit()

        data = {"file": {"id": 1}}

        response = self.client.post("/api/songs",
                                    data=json.dumps(data),
                                    content_type="application/json",
                                    headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.mimetype, "application/json")
        self.assertEqual(
            urlparse(response.headers.get("Location")).path, "/api/songs/1")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data['id'], 1)
        self.assertEqual(data['file']['name'], 'test-feb14.mp3')

        file = session.query(models.File).all()
        song = session.query(models.Song).all()
        self.assertEqual(len(file), 1)
        self.assertEqual(len(song), 1)
        file = file[0]
        song = song[0]
        print(file)
        self.assertEqual(file.id, 1)
        self.assertEqual(file.name, 'test-feb14.mp3')
        self.assertEqual(song.id, 1)
        self.assertEqual(song.file, file)
Ejemplo n.º 21
0
    def test_post_song(self):
        "post a song for file in DB - success"
        
        #add a song file to the DB for the test
        file = models.File(filename="Plains.mp3")
        session.add(file)
        session.commit()
        
        print(file.id)
        print(file.filename)
        
        data = {
            "songname": "Plains",
            "file": {
                "file": file.id
            }
        }
        
        #query api
        response = self.client.get("/api/songs")
        print(response)

        #assert api response contains expected response
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")
        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(len(data), 1)
        
        #assert response contains expected songs/file
        song1 = data[0]
        print(song1)
        self.assertEqual(song1["songname"], "Plains")
        self.assertEqual(song1["file"]["filename"], "Plains.mp3")
        self.assertEqual(song1["file"]["id"], song1["id"])
Ejemplo n.º 22
0
    def test_delete_song(self):
        """ Delete a song """
        data = {}

        song = models.Song()
        file = models.File(name="file")

        session.add_all([file])
        session.commit()

        song.file_id = file.id

        session.add_all([song])
        session.commit()

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        response = self.client.delete("/api/songs/{}".format(song.id),
                                      data=json.dumps(data),
                                      content_type="application/json",
                                      headers=[("Accept", "application/json")])

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 0)
Ejemplo n.º 23
0
    def test_edit_song(self):
        #Editing an existing song
        file = models.File(name="Example.mp3")
        song = models.Song(file=file)
        session.add(song)
        session.commit()

        data = {
            "name": "Edited.mp3",
        }

        response = self.client.put("/api/songs/{}".format(song.id),
                                   data=json.dumps(data),
                                   content_type="application/json",
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")
        self.assertEqual(
            urlparse(response.headers.get("Location")).path,
            "/api/songs/{}".format(song.id))

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["id"], 1)
        self.assertEqual(data["file"]["name"], "Edited.mp3")

        # Assert that there is only one song in the database
        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        # Assert that the name was changed
        song = songs[0]
        self.assertEqual(file.name, "Edited.mp3")
Ejemplo n.º 24
0
    def test_post_file(self):
        fileA = models.File(filename="testA.wav")
        session.add(fileA)
        session.commit()

        fileA_post = {"file": {"id": fileA.id}}
        # data = fileA.as_dictionary()
        data = fileA_post

        response = self.client.post("api/songs",
                                    data=json.dumps(data),
                                    content_type="application/json",
                                    headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.mimetype, "application/json")
        self.assertEqual(
            urlparse(response.headers.get("Location")).path, "/api/songs/1")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["id"], 1)
        self.assertEqual(data["file"]["filename"], "testA.wav")

        songs = session.query(models.Song).all()
        self.assertEqual(len(songs), 1)

        song = songs[0]
        self.assertEqual(song.file.filename, "testA.wav")
Ejemplo n.º 25
0
    def test_delete_file(self):
        fileA = models.File(filename="testA.wav")
        songA = models.Song(file=fileA)
        session.add_all([fileA, songA])
        session.commit()

        # 1st, see if song was successfully posted
        response = self.client.get("api/songs/{}".format(songA.id),
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        # Now test DELETE
        response = self.client.delete("/api/songs/{}".format(songA.id),
                                      headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        # Try GET to check if 404
        response = self.client.get("api/songs/{}".format(songA.id),
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 404)
        self.assertEqual(response.mimetype, "application/json")
Ejemplo n.º 26
0
    def test_get_song(self):
        """ Getting a single song from a populated database """
        fileA = models.File(name="SongA.mp3")
        songA = models.Song(file=fileA)
        fileB = models.File(name="SongB.mp3")
        songB = models.Song(file=fileB)
        session.add_all([fileA, fileB, songA, songB])
        session.commit()

        response = self.client.get("/api/songs/{}".format(songB.id),
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, "application/json")

        data = json.loads(response.data.decode("ascii"))
        self.assertEqual(data["file"]["name"], "SongB.mp3")
Ejemplo n.º 27
0
    def testGetSongs(self):
        """ Get a list of all the songs from a populated DB """

        # Create testing data
        # Create a couple of sample files
        fileA = models.File(name="BornThisWay.mp3")
        fileB = models.File(name="PokerFace.mp3")
        # Add them to the session and commit
        session.add_all([fileA, fileB])
        session.commit()
        # Create a couple of songs from the files
        songA = models.Song(file_id=fileA.id)
        songB = models.Song(file_id=fileB.id)
        # And add/commit
        session.add_all([songA, songB])
        session.commit()

        # Go to the page and get the response from the server, store it here
        # This is the part actually being tested
        response = self.client.get(
            "/api/songs",
            headers=[("Accept", "application/json")],
        )

        # This is the actual test
        # Was the request to the endpoint successful?
        self.assertEqual(response.status_code, 200)
        # Did the request return a JSON object?
        self.assertEqual(response.mimetype, "application/json")
        # Decode the data using json.loads
        data = json.loads(response.data)
        # Verify that two songs have been returned
        self.assertEqual(len(data), 2)
        # Verify the contents of both songs as correct
        songA = data[0]
        self.assertEqual(songA["id"], 1)
        fileA = songA["file"]
        self.assertEqual(fileA["name"], "BornThisWay.mp3")
        songB = data[1]
        self.assertEqual(songB["id"], 2)
        fileB = songB["file"]
        self.assertEqual(fileB["name"], "PokerFace.mp3")
Ejemplo n.º 28
0
    def test_delete_song(self):
        """ delete songs from database """

        fileA = models.File(name="Shady_Grove.mp3")

        session.add(fileA)
        session.commit()

        response = self.client.delete("/api/songs/{}".format(fileA.id),
                                      content_type="application/json",
                                      headers=[("Accept", "application/json")])
        self.assertEqual(response.status_code, 204)
Ejemplo n.º 29
0
    def test_post_song(self):
        """ Test POSTing a song to the database"""
        # Add test files to 'files' table
        fileA = models.File(filename='love_song.mp3')
        fileB = models.File(filename='another_song.mp3')
        session.add_all([fileA, fileB])
        session.commit()

        # Post a song to the database
        data = {'file': {'id': fileA.id}}

        response = self.client.post('/api/songs',
                                    data=json.dumps(data),
                                    content_type='application/json',
                                    headers=[('Accept', 'application/json')])

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.mimetype, 'application/json')

        data = json.loads(response.data.decode('ascii'))
        self.assertEqual(data['file']['name'], 'love_song.mp3')
        self.assertEqual(data['file']['id'], fileA.id)
Ejemplo n.º 30
0
    def test_get_song(self):
        # test for getting one song

        # populate db
        file_A = models.File(name='file_A.mp3')
        song_A = models.Song(file=file_A)
        file_B = models.File(name='file_B.mp3')
        song_B = models.Song(file=file_B)
        session.add_all([file_A, file_B, song_A, song_B])
        session.commit()

        response = self.client.get('/api/songs/{}'.format(song_B.id),
                                   headers=[("Accept", "application/json")])

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.mimetype, 'application/json')

        song = json.loads(response.data.decode('ascii'))

        self.assertEqual(song['id'], song_B.id)
        self.assertEqual(song['file']['id'], song_B.file.id)
        self.assertEqual(song['file']['name'], song_B.file.name)