Beispiel #1
0
def test_traffic_source_detail_5():
    report = rt.TrafficSourceDetail()
    assert report.name == "Traffic sources (detailed)"
    d = ["insightTrafficSourceDetail"]
    f = {"insightTrafficSourceType": "ADVERTISING"}
    m = data.LOCATION_AND_TRAFFIC_METRICS
    s = [f"-{o}" for o in data.LOCATION_AND_TRAFFIC_SORT_OPTIONS]
    report.validate(d, f, m, s, 25)
Beispiel #2
0
def test_traffic_source_detail_1():
    report = rt.TrafficSourceDetail()
    assert report.name == "Traffic sources (detailed)"
    d = ["insightTrafficSourceDetail"]
    f = {
        "insightTrafficSourceType": "ADVERTISING",
        "country": "US",
        "video": "fn849bng984b",
        "liveOrOnDemand": "LIVE",
    }
    m = data.LOCATION_AND_TRAFFIC_METRICS
    s = [f"-{o}" for o in data.LOCATION_AND_TRAFFIC_SORT_OPTIONS]
    report.validate(d, f, m, s, 25)
Beispiel #3
0
def test_traffic_source_detail_invalid_source():
    report = rt.TrafficSourceDetail()
    assert report.name == "Traffic sources (detailed)"
    d = ["insightTrafficSourceDetail"]
    f = {"insightTrafficSourceType": "ANNOTATION"}
    m = data.LOCATION_AND_TRAFFIC_METRICS
    s = [f"-{o}" for o in data.LOCATION_AND_TRAFFIC_SORT_OPTIONS]

    with pytest.raises(errors.UnsupportedFilterValue) as exc:
        report.validate(d, f, m, s, 25)
    assert (
        str(exc.value) ==
        "unsupported value for filter 'insightTrafficSourceType' for selected report type: 'ANNOTATION'"
    )
Beispiel #4
0
def test_traffic_source_detail_2():
    report = rt.TrafficSourceDetail()
    assert report.name == "Traffic sources (detailed)"
    d = ["insightTrafficSourceDetail"]
    f = {
        "insightTrafficSourceType": "ADVERTISING",
        "province": "US-OH",
        "group": "fn849bng984b",
        "liveOrOnDemand": "LIVE",
        "subscribedStatus": "SUBSCRIBED",
    }
    m = data.LOCATION_AND_TRAFFIC_METRICS
    s = [f"-{o}" for o in data.LOCATION_AND_TRAFFIC_SORT_OPTIONS]
    report.validate(d, f, m, s, 25)
Beispiel #5
0
    def determine_report_type(self) -> ReportType:
        curated = self.filters.get("isCurated", "0") == "1"

        if "adType" in self.dimensions:
            return rt.AdPerformance()

        if "sharingService" in self.dimensions:
            return rt.EngagementAndContentSharing()

        if "elapsedVideoTimeRatio" in self.dimensions:
            return rt.AudienceRetention()

        if "playlist" in self.dimensions:
            return rt.TopPlaylists()

        if "insightPlaybackLocationType" in self.dimensions:
            if curated:
                return rt.PlaybackLocationPlaylist()
            return rt.PlaybackLocation()

        if "insightPlaybackLocationDetail" in self.dimensions:
            if curated:
                return rt.PlaybackLocationDetailPlaylist()
            return rt.PlaybackLocationDetail()

        if "insightTrafficSourceType" in self.dimensions:
            if curated:
                return rt.TrafficSourcePlaylist()
            return rt.TrafficSource()

        if "insightTrafficSourceDetail" in self.dimensions:
            if curated:
                return rt.TrafficSourceDetailPlaylist()
            return rt.TrafficSourceDetail()

        if "ageGroup" in self.dimensions or "gender" in self.dimensions:
            if curated:
                return rt.ViewerDemographicsPlaylist()
            return rt.ViewerDemographics()

        if "deviceType" in self.dimensions:
            if "operatingSystem" in self.dimensions:
                if curated:
                    return rt.DeviceTypeAndOperatingSystemPlaylist()
                return rt.DeviceTypeAndOperatingSystem()
            if curated:
                return rt.DeviceTypePlaylist()
            return rt.DeviceType()

        if "operatingSystem" in self.dimensions:
            if curated:
                return rt.OperatingSystemPlaylist()
            return rt.OperatingSystem()

        if "video" in self.dimensions:
            if "province" in self.filters:
                return rt.TopVideosUS()
            if "subscribedStatus" not in self.filters:
                return rt.TopVideosRegional()
            if "province" not in self.filters and "youtubeProduct" not in self.filters:
                return rt.TopVideosSubscribed()
            if "averageViewPercentage" in self.metrics:
                return rt.TopVideosYouTubeProduct()
            return rt.TopVideosPlaybackDetail()

        if "country" in self.dimensions:
            if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
                return rt.PlaybackDetailsLiveGeographyBased()
            if curated:
                return rt.GeographyBasedActivityPlaylist()
            if ("subscribedStatus" in self.dimensions
                    or "subscribedStatus" in self.filters
                    or "youtubeProduct" in self.dimensions
                    or "youtubeProduct" in self.filters):
                return rt.PlaybackDetailsViewPercentageGeographyBased()
            return rt.GeographyBasedActivity()

        if "province" in self.dimensions:
            if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
                return rt.PlaybackDetailsLiveGeographyBasedUS()
            if curated:
                return rt.GeographyBasedActivityUSPlaylist()
            if ("subscribedStatus" in self.dimensions
                    or "subscribedStatus" in self.filters
                    or "youtubeProduct" in self.dimensions
                    or "youtubeProduct" in self.filters):
                return rt.PlaybackDetailsViewPercentageGeographyBasedUS()
            return rt.GeographyBasedActivityUS()

        if "youtubeProduct" in self.dimensions or "youtubeProduct" in self.filters:
            if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
                return rt.PlaybackDetailsLiveTimeBased()
            return rt.PlaybackDetailsViewPercentageTimeBased()

        if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
            return rt.PlaybackDetailsLiveTimeBased()

        if "subscribedStatus" in self.dimensions:
            if "province" in self.filters:
                return rt.PlaybackDetailsSubscribedStatusUS()
            return rt.PlaybackDetailsSubscribedStatus()

        if "day" in self.dimensions or "month" in self.dimensions:
            if curated:
                return rt.TimeBasedActivityPlaylist()
            if "province" in self.filters:
                return rt.TimeBasedActivityUS()
            return rt.TimeBasedActivity()

        if curated:
            return rt.BasicUserActivityPlaylist()
        if "province" in self.filters:
            return rt.BasicUserActivityUS()
        return rt.BasicUserActivity()