def test_present_search_with_a_bad_address_notifies_observer_of_success_but_no_results(self):
        identifier = None
        search = None

        self.apn_repository.create(county='sanfrancisco',
                                   block_number='001A',
                                   lot_number='001',
                                   address='1240 Jones St #132')

        self.apn_repository.create(county='sanfrancisco',
                                   block_number='001A',
                                   lot_number='002',
                                   address='1240 Jones St #133')

        def create_success(incoming_identifier, incoming_search):
            nonlocal identifier
            nonlocal search
            identifier = incoming_identifier
            search = incoming_search

        self.search_repository.create_search(county='sanfrancisco',
                                             address='1241 Jones St',
                                             success=create_success,
                                             failure=None)
        observer = FakeObserver()
        self.subject.execute(identifier=identifier,
                             observer=observer)
        expected_search = Search(county='sanfrancisco',
                                 address='1241 Jones St')

        assert_searches_equal(observer.presented_search, expected_search, self)
        assert_apn_lists_equal(observer.presented_apn_results, [], self)
    def test_fetch_apns_list_with_valid_address_but_invalid_county(self):
        self.subject.create(county='sanfrancisco',
                            block_number='0253A',
                            lot_number='086',
                            address='My special address')
        apn_list = None

        def success(incoming_apn_list):
            nonlocal apn_list
            apn_list = incoming_apn_list

        self.subject.fetch_apn_list(address='My spec',
                                    county='losangeles',
                                    success=success,
                                    failure=None)
        assert_apn_lists_equal(apn_list, [], self)
    def test_fetch_apns_list_with_valid_parameters(self):
        self.subject.create(county='sanfrancisco',
                            block_number='0253A',
                            lot_number='086',
                            address='My special address')

        apn_list = None

        def success(incoming_apn_list):
            nonlocal apn_list
            apn_list = incoming_apn_list

        self.subject.fetch_apn_list(address='My spec',
                                    county='sanfrancisco',
                                    success=success,
                                    failure=None)
        expected_apn = APN(county='sanfrancisco',
                            block_number='0253A',
                            lot_number='086',
                            address='My special address')
        assert_apn_lists_equal(apn_list, [expected_apn], self)