def test_create_summary(): order_params = { "size": 1000, "order_id_range": 70, "customer_id_range": 20000, "datetime_range": 1095, "start_date": "2017-01-01" } orders = helpers.orders_mock_generator(**order_params) order_line_params = { "size": 10000, "product_id_range": 10000, "order_id_range": 70, "price_range": [6.0, 5000.0] } order_lines = helpers.order_lines_mock_generator(**order_line_params) output_dataframe = create_summary(orders, order_lines) expected_dataframe = pd.DataFrame({ 'ProductId': np.array([8652, 3083, 615, 526, 4076]), 'TotalRevenue': np.array([ 21212.549591, 20723.342060, 16072.759135, 8999.519248, 14749.578349 ]), 'AverageCheck': np.array( [7070.849864, 6907.780687, 5357.586378, 4499.759624, 7374.789174]), }) pdt.assert_frame_equal(output_dataframe, expected_dataframe)
def test_unique_orderid(): order_params = { "size": 1000, "order_id_range": 70, "customer_id_range": 20000, "datetime_range": 1095, "start_date": "2017-01-01" } orders = helpers.orders_mock_generator(**order_params) order_line_params = { "size": 1000, "product_id_range": 10000, "order_id_range": 70, "price_range": [6.0, 5000.0] } order_lines = helpers.order_lines_mock_generator(**order_line_params) full_df = helpers.combine_dataframes(orders, order_lines, 'DateTime', '1M', 'OrderId') topn = helpers.most_popular(full_df, 5) output_uniques = helpers.unique_orderid(full_df, topn) expected_uniques = np.array([2, 2, 1, 1, 1]) npt.assert_array_equal(output_uniques, expected_uniques)
def test_sum_price(): order_params = { "size": 1000, "order_id_range": 70, "customer_id_range": 20000, "datetime_range": 1095, "start_date": "2017-01-01" } orders = helpers.orders_mock_generator(**order_params) order_line_params = { "size": 1000, "product_id_range": 10000, "order_id_range": 70, "price_range": [6.0, 5000.0] } order_lines = helpers.order_lines_mock_generator(**order_line_params) full_df = helpers.combine_dataframes(orders, order_lines, 'DateTime', '1M', 'OrderId') topn = helpers.most_popular(full_df, 5) output_list = [helpers.sum_price(full_df, 'ProductId', x) for x in topn] expected_list = [ 9884.248749578293, 11618.180478452077, 5120.931623720911, 6616.692310380738, 11896.544905964982 ] npt.assert_array_equal(output_list, expected_list)
def test_most_popular(): order_params = { "size": 1000, "order_id_range": 70, "customer_id_range": 20000, "datetime_range": 1095, "start_date": "2017-01-01" } orders = helpers.orders_mock_generator(**order_params) order_line_params = { "size": 1000, "product_id_range": 10000, "order_id_range": 70, "price_range": [6.0, 5000.0] } order_lines = helpers.order_lines_mock_generator(**order_line_params) full_df = helpers.combine_dataframes(orders, order_lines, 'DateTime', '1M', 'OrderId') output_array = helpers.most_popular(full_df, 5) expected_array = np.array([9, 7400, 6544, 7830, 7560]) npt.assert_array_equal(output_array, expected_array)
def order_lines(): params = { "size": 5, "product_id_range": 10000, "order_id_range": 70, "price_range": [6.0, 5000.0] } return helpers.order_lines_mock_generator(**params)
def test_combine_dataframes(): order_params = { "size": 70, "order_id_range": 70, "customer_id_range": 20000, "datetime_range": 1095, "start_date": "2017-01-01" } orders = helpers.orders_mock_generator(**order_params) order_line_params = { "size": 70, "product_id_range": 10000, "order_id_range": 70, "price_range": [6.0, 5000.0] } order_lines = helpers.order_lines_mock_generator(**order_line_params) output_dataframe = helpers.combine_dataframes(orders, order_lines, 'DateTime', '1M', 'OrderId') expected_dataframe = pd.DataFrame({ 'OrderId': np.array([52, 41, 41]), 'CustomerId': np.array([15707, 15265, 15265]), 'ProductId': np.array([5390, 8433, 3073]), 'Price': np.array([4304.488533, 937.473441, 4623.919930]) }) expected_dataframe.index = pd.RangeIndex(start=0, stop=3, step=1) pdt.assert_frame_equal(output_dataframe, expected_dataframe)
import helpers from create_summary import create_summary orders_mock_params = {"size": 1000, "order_id_range": 70, "customer_id_range": 20000, "datetime_range": 1095, "start_date": "2017-01-01"} order_lines_mock_params = {"size": 10000, "product_id_range": 10000, "order_id_range": 70, "price_range": [6.0, 5000.0]} orders_mock = helpers.orders_mock_generator(**orders_mock_params) order_lines_mock = helpers.order_lines_mock_generator(**order_lines_mock_params) def main(): summary = create_summary(orders_mock, order_lines_mock) print(summary) if __name__ == "__main__": main()