def test_process_syrx_file_mass_records(self, uow):
        syrx_file_handler = SyrxFileHandler()
        syrx_file_handler.logger = Mock()
        syrx_file_handler.date_str = Mock()

        bad_record_file_mock = MagicMock()

        summary = ProcessSyrxRecordsReturn()
        summary.num_good_records = 200
        summary.num_bad_records = 0
        syrx_file_handler.process_syrx_records = Mock(return_value=summary)

        read_file_stream = io.StringIO()
        for i in range(400):
            read_file_stream.write(u'{"name": "record"}\n')

        # add extra record to force small batch for good measure
        read_file_stream.write(u'{"name": "record"}')
        read_file_stream.seek(0)

        parsed_list = [{"name": "record"} for i in range(200)]

        rv = syrx_file_handler.process_syrx_file(read_file_stream, bad_record_file_mock)

        syrx_file_handler.process_syrx_records.assert_has_calls([call(parsed_list,  bad_record_file_mock),
                                                                 call(parsed_list, bad_record_file_mock),
                                                                 call([{"name": "record"}], bad_record_file_mock)])
        assert rv.num_good_records == 600
    def test_process_johnson_records(self, get_record_ranges, insert_records, delete_old_records,
                                     get_equipment_point_records, uow):
        syrx_file_handler = SyrxFileHandler()

        equipment_point_records = EquipmentPointRecordsReturn()
        equipment_point_records.equipment_point_records = [
            {"name": "record0"},
            {"name": "record1"}
        ]
        equipment_point_records.bad_records = [
            {"name": "record2"},
            {"name": "record3"}
        ]
        get_equipment_point_records.return_value = equipment_point_records

        records = Mock()
        bad_record_file = io.StringIO()

        rv = syrx_file_handler.process_syrx_records(records, bad_record_file)

        get_equipment_point_records.assert_called_with(records)
        delete_old_records.assert_called_with(equipment_point_records.equipment_point_records)
        insert_records.assert_called_with(equipment_point_records.equipment_point_records)

        bad_record_file.seek(0)
        bad_records_written_data = bad_record_file.read().strip().split("\n")
        assert len(bad_records_written_data) == 2
        assert json.loads(bad_records_written_data[0]) == {"name": "record2"}
        assert json.loads(bad_records_written_data[1]) == {"name": "record3"}

        get_record_ranges.assert_called_with(equipment_point_records.equipment_point_records)

        assert rv.num_good_records == 2
        assert rv.num_bad_records == 2
        assert rv.record_ranges == get_record_ranges.return_value
    def test_process_syrx_file(self, uow):
        syrx_file_handler = SyrxFileHandler()
        syrx_file_handler.logger = Mock()
        syrx_file_handler.syrx_upload_folder = Mock()
        syrx_file_handler.date_str = Mock()

        bad_record_file_mock = MagicMock()

        summary = ProcessSyrxRecordsReturn()
        summary.num_good_records = 3
        summary.num_bad_records = 1
        syrx_file_handler.process_syrx_records = Mock(return_value=summary)

        read_file_stream = io.StringIO()
        read_file_stream.write(u'{"name": "record0"}\n'
                               u'{"name": "record1"}\n'
                               u'{"name": "record2"}\n'
                               u'{"name": "record3"}')
        read_file_stream.seek(0)

        parsed_list = [{"name": "record0"}, {"name": "record1"}, {"name": "record2"}, {"name": "record3"}]

        rv = syrx_file_handler.process_syrx_file(read_file_stream, bad_record_file_mock)

        syrx_file_handler.process_syrx_records.assert_called_with(parsed_list, bad_record_file_mock)
        assert rv.num_good_records == 3 and rv.num_bad_records == 1