def test_update_files_2(self, mock_blog_model):

        db.init_app(app)
        db.create_all()
        file_upload = FileUpload()
        file_upload.init_app(app, db)

        new_file = FileStorage(
            stream=open(self.my_video_update, "rb"),
            filename="my_video_updated.mp4",
            content_type="video/mpeg",
        )

        model = mock_blog_model(**self.attrs)

        assert model.my_video__file_name == "my_video.mp4"
        assert model.my_video__mime_type == "video/mpeg"
        assert model.my_video__file_type == "mp4"

        result = file_upload.update_files(
            model,
            files={"my_video": new_file},
        )

        assert result.my_video__file_name == "my_video_updated.mp4"
        assert result.my_video__mime_type == "mp4"
        assert result.my_video__file_type == "video/mpeg"
 def test_get_file_url(self, mock_blog_model):
     db.init_app(app)
     db.create_all()
     file_upload = FileUpload()
     file_upload.init_app(app, db)
     m = mock_blog_model(**self.attrs)
     with app.test_request_context():
         url = file_upload.get_file_url(m, filename="my_video")
         assert url == "http://localhost/static/blogs/1/my_video.mp4"
    def test_add_file_urls_to_models(self, create_app, mock_blog_model,
                                     mock_news_model):
        db.init_app(app)
        db.create_all()
        file_upload = FileUpload()
        file_upload.init_app(app, db)

        blog1 = mock_blog_model(
            name="hello",
            my_video__file_name="my_video.mp4",
            my_video__mime_type="video/mpeg",
            my_video__file_type="mp4",
            my_placeholder__file_name="my_placeholder1.png",
            my_placeholder__mime_type="image/png",
            my_placeholder__file_type="png",
        )
        blog2 = mock_blog_model(
            name="hello2",
            my_video__file_name="my_video2.mp4",
            my_video__mime_type="video/mpeg",
            my_video__file_type="mp4",
            my_placeholder__file_name="my_placeholder2.png",
            my_placeholder__mime_type="image/png",
            my_placeholder__file_type="png",
        )

        mock_news_model(title="news_1", blog_id=1)

        db.session.add_all([
            blog1, blog2,
            mock_news_model(
                title="news_1",
                blog_id=1,
                news_video__file_name="news_video1.mp4",
                news_video__mime_type="video/mpeg",
                news_video__file_type="mp4",
                news_image__file_name="news_image.png",
                news_image__mime_type="image/png",
                news_image__file_type="png",
            ),
            mock_news_model(
                title="news_2",
                blog_id=1,
                news_video__file_name="news_video2.mp4",
                news_video__mime_type="video/mpeg",
                news_video__file_type="mp4",
                news_image__file_name="news_image.png",
                news_image__mime_type="image/png",
                news_image__file_type="png",
            )
        ])

        db.session.commit()

        rv = create_app.get("/blogs")
        assert "200" in rv.status

        assert rv.get_json()["results"][
            "my_video_url"] == "http://localhost/static/blogs/1/my_video.mp4"
        assert rv.get_json()["results"][
            "my_video_url_2"] == "http://localhost/static/blogs/2/my_video2.mp4"
        assert rv.get_json()["results"][
            "my_placeholder_url"] == "http://localhost/static/blogs/1/my_placeholder1.png"
        assert rv.get_json()["results"][
            "my_placeholder_url_2"] == "http://localhost/static/blogs/2/my_placeholder2.png"
        assert rv.get_json()["results"][
            "news_image_url"] == "http://localhost/static/news/1/news_image.png"
        assert rv.get_json()["results"][
            "news_image_url_2"] == "http://localhost/static/news/2/news_image.png"
        assert rv.get_json()["results"][
            "news_video_url"] == "http://localhost/static/news/1/news_video1.mp4"
        assert rv.get_json()["results"][
            "news_video_url_2"] == "http://localhost/static/news/2/news_video2.mp4"
    def test_init_app(self, create_app, mock_blog_model, flask_app):

        file_upload = FileUpload()
        file_upload.init_app(flask_app, db)
        assert isinstance(file_upload.app, Flask)