def test_create_buildings(create_smell_source, get_db): db = MagicMock() db.buildings.find_one = MagicMock(return_value=None) db.buildings.insert = MagicMock(return_value=None) get_db.return_value = db content_type = "SomeContent" nbuildings = 35 keys = ["key-{}".format(i) for i in xrange(nbuildings)] heads = [dict(key=key) for key in keys] payloads = [ { "field1": "value 1.1", "field2": "value 1.2", "field3": "value 1.3", }, ]* nbuildings bodies = [dict(summary_payload=p, result_payload=p, raw_payload=p) for p in payloads] flr = "g-b(1,2)-l1" got = create_buildings(flr, content_type, heads, bodies) assert len(got) == nbuildings assert db.buildings.insert.call_count == 4 # 4 batch inserts create_smell_source.assert_has_calls([ ])
def _create_bldg(target_flr, today, data_pipe): payload = { "date": today, "data_pipes": [data_pipe["type"]] } address = create_buildings(content_type=DAILY_FEED, keys=[today], payloads=[payload], flr=target_flr, position_hints={"next_free": True}) if type(address) == list: address = address[0] return address
def _create_bldg(target_flr, today, data_pipe): payload = { "date": today, "data_pipes": [data_pipe["type"]] } address = create_buildings(flr=target_flr, content_type=DAILY_FEED, heads=[dict(key=today)], bodies=[dict(summary_payload=payload, raw_payload=payload, result_payload=payload)], position_hints={"next_free": True}, is_composite=True) if type(address) == list: address = address[0] return address
def create_result_bldgs(curr_bldg, action_results): output_bldgs = [] if action_results is None: logging.warn("No results for {}".format(curr_bldg["address"])) return for r in action_results: key = r.get("key") picture = r.get("picture") content_type = r.get("contentType") summary_payload = r.get("summary") raw_payload = r.get("raw") result_payload = r.get("payload") placement_hints = r.get("placement_hints") if placement_hints.get("new_bldg"): flr = curr_bldg["flr"] # same_flr is the default if placement_hints.get("flr_above"): flr_level = get_flr_level(curr_bldg["flr"]) flr = replace_flr_level(curr_bldg["flr"], flr_level + 1) # same_location is the default position_hints = { "at_x": curr_bldg["x"], "at_y": curr_bldg["y"], } # FIXME: this was getting stuck in the queue. Must be done async. # create_buildings.s(content_type, [key], [payload], flr, position_hints).apply_async( # queue='bldg_creation', routing_key='bldg.create' # ) output_bldgs.extend(create_buildings(flr, content_type, [dict(key=key, picture=picture)], [dict(summary_payload=summary_payload, raw_payload=raw_payload, result_payload=result_payload)], position_hints)) else: # just update the current bldg update_bldg_with_results(curr_bldg, content_type, summary_payload, raw_payload, result_payload) output_bldgs.append(curr_bldg["address"]) if output_bldgs: return output_bldgs return None
def test_create_buildings(get_db): db = MagicMock() db.buildings.find_one = MagicMock(return_value=None) db.buildings.insert = MagicMock(return_value=None) get_db.return_value = db content_type = "SomeContent" nbuildings = 35 keys = ["key-{}".format(i) for i in xrange(nbuildings)] payloads = [ { "field1": "value 1.1", "field2": "value 1.2", "field3": "value 1.3", }, ]* nbuildings flr = "g-b(1,2)-l1" got = create_buildings(content_type, keys, payloads, flr) assert len(got) == nbuildings assert db.buildings.insert.call_count == 4 # 4 batch inserts