def test_period_range():

    range = period_range(date(2013, 4, 1), date(2013, 4, 7))
    assert_that(range, only_contains(
        (date(2013, 4, 1), date(2013, 4, 7))
    ))

    another_range = period_range(date(2013, 4, 1), date(2013, 4, 21))
    assert_that(another_range, only_contains(
        (date(2013, 4, 1), date(2013, 4, 7)),
        (date(2013, 4, 8), date(2013, 4, 14)),
        (date(2013, 4, 15), date(2013, 4, 21)),
    ))
def test_period_range():

    range = period_range(date(2013, 4, 1), date(2013, 4, 7))
    assert_that(range, only_contains((date(2013, 4, 1), date(2013, 4, 7))))

    another_range = period_range(date(2013, 4, 1), date(2013, 4, 21))
    assert_that(
        another_range,
        only_contains(
            (date(2013, 4, 1), date(2013, 4, 7)),
            (date(2013, 4, 8), date(2013, 4, 14)),
            (date(2013, 4, 15), date(2013, 4, 21)),
        ))
示例#3
0
def run(config_path, start_date=None, end_date=None):
    try:
        config = load_json(config_path)

        logging.info("Configuration (%s): %s"
                     % (config_path, pretty_print(config)))

        # TODO: default dates should depend on the time period
        period_start = parse_date(start_date) or a_week_ago()
        period_end = parse_date(end_date) or a_week_ago()

        logging.info("Querying GA for data in the period: %s - %s"
                     % (str(period_start), str(period_end)))

        credentials = get_credentials()

        client = _create_client(credentials)

        mappings = config.get("mappings", {})

        documents = []

        for start, end in period_range(period_start, period_end):
            response = query_ga(client, config["query"], start, end)

            documents += [
                build_document(item, config["dataType"], start, mappings)
                for item in response
            ]

        if any(documents):
            send_data(documents, config["target"])
        else:
            logging.info("No data returned with current configuration")

    except HTTPError:
        logging.exception("Unable to send data to target")
        exit(-3)

    except GapyError:
        logging.exception("Unable to retrieve data from Google Analytics")
        exit(-2)

    except Exception as e:
        logging.exception(e)
        exit(-1)
def test_period_range_returns_the_containing_week_when_start_equals_end():
    range = period_range(date(2013, 4, 8), date(2013, 4, 8))
    assert_that(range, only_contains((date(2013, 4, 8), date(2013, 4, 14))))
def test_period_range_fails_when_end_is_before_start():
    list(period_range(date(2013, 4, 8), date(2013, 4, 1)))
def test_period_range_adjusts_dates():
    range = period_range(date(2013, 4, 3), date(2013, 4, 10))
    assert_that(
        range,
        only_contains((date(2013, 4, 1), date(2013, 4, 7)),
                      (date(2013, 4, 8), date(2013, 4, 14))))
def test_period_range_returns_the_containing_week_when_start_equals_end():
    range = period_range(date(2013, 4, 8), date(2013, 4, 8))
    assert_that(range, only_contains(
        (date(2013, 4, 8), date(2013, 4, 14))
    ))
def test_period_range_fails_when_end_is_before_start():
    list(period_range(date(2013, 4, 8), date(2013, 4, 1)))
def test_period_range_adjusts_dates():
    range = period_range(date(2013, 4, 3), date(2013, 4, 10))
    assert_that(range, only_contains(
        (date(2013, 4, 1), date(2013, 4, 7)),
        (date(2013, 4, 8), date(2013, 4, 14))
    ))