def test_attributes_are_correctly_set(self):
     service = Service(
         self.fixture,
         content_loader.get_builder('g-cloud-6', 'display_service'))
     self.assertEquals(service.attributes[0]['name'], 'Support')
     self.assertEquals(len(service.attributes), 30)
     self.assertEquals(len(list(service.attributes[0]['rows'])), 5)
 def test_the_support_attribute_group_is_not_there_if_no_attributes(self):
     del self.fixture['openStandardsSupported']
     service = Service(
         self.fixture,
         content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if group['name'] == 'Open standards':
             self.fail("Support group should not be found")
 def test_only_attributes_with_a_valid_type_are_added_to_groups(self):
     invalidValue = (u'Manuals provided', u'CMS training')
     self.fixture['onboardingGuidance'] = invalidValue
     service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if (
             (group['name'] == 'External interface protection') and
             ('onboardingGuidance' in group)
         ):
             self.fail("Attribute with tuple value should not be in group")
예제 #4
0
 def test_only_attributes_with_a_valid_type_are_added_to_groups(self):
     invalidValue = ('Manuals provided', 'CMS training')
     self.fixture['onboardingGuidance'] = invalidValue
     service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if (
             (group['name'] == 'External interface protection') and
             ('onboardingGuidance' in group)
         ):
             self.fail("Attribute with tuple value should not be in group")
 def test_attributes_with_assurance_for_a_list_value_has_a_caveat(self):
     service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if group['name'] == 'Asset protection and resilience':
             for row in group['rows']:
                 # list with bespoke assurance caveat
                 if row.label == 'Data management location':
                     self.assertIn(
                         u'independent validation of assertion',
                         row.assurance
                     )
예제 #6
0
 def test_attributes_with_assurance_for_a_list_value_has_a_caveat(self):
     service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if group['name'] == 'Asset protection and resilience':
             for row in group['rows']:
                 # list with bespoke assurance caveat
                 if row.label == 'Data management location':
                     self.assertIn(
                         'independent validation of assertion',
                         row.assurance
                     )
예제 #7
0
def get_service_by_id(service_id):
    try:
        service = data_api_client.get_service(service_id)
        if service is None:
            abort(404, "Service ID '{}' can not be found".format(service_id))
        if service['services']['frameworkStatus'] not in ("live", "expired"):
            abort(404, "Service ID '{}' can not be found".format(service_id))

        service_data = service['services']
        service_view_data = Service(
            service_data,
            content_loader.get_builder('g-cloud-6',
                                       'display_service').filter(service_data))

        try:
            # get supplier data and add contact info to service object
            supplier = data_api_client.get_supplier(
                service_data['supplierCode'])
            supplier_data = supplier['suppliers']
            service_view_data.meta.set_contact_attribute(
                supplier_data['contactInformation'][0].get('contactName'),
                supplier_data['contactInformation'][0].get('phoneNumber'),
                supplier_data['contactInformation'][0].get('email'))

        except HTTPError as e:
            abort(e.status_code)

        date_formatter = DateFormatter(current_app.config['DM_TIMEZONE'])
        service_unavailability_information = None
        status_code = 200
        if service['serviceMadeUnavailableAuditEvent'] is not None:
            service_unavailability_information = {
                'date':
                date_formatter.dateformat(
                    service['serviceMadeUnavailableAuditEvent']['createdAt']),
                'type':
                service['serviceMadeUnavailableAuditEvent']['type']
            }
            # mark the resource as unavailable in the headers
            status_code = 410

        return render_template('service.html',
                               service=service_view_data,
                               service_unavailability_information=
                               service_unavailability_information,
                               lot=service_view_data.lot.lower(),
                               lot_label=get_label_for_lot_param(
                                   service_view_data.lot.lower())), status_code
    except AuthException:
        abort(500, "Application error")
    except KeyError:
        abort(404, "Service ID '%s' can not be found" % service_id)
    except HTTPError as e:
        abort(e.status_code)
예제 #8
0
def get_service_by_id(service_id):
    try:
        service = data_api_client.get_service(service_id)
        if service is None:
            abort(404, "Service ID '{}' can not be found".format(service_id))
        if service['services']['frameworkStatus'] not in ("live", "expired"):
            abort(404, "Service ID '{}' can not be found".format(service_id))

        service_data = service['services']
        service_view_data = Service(
            service_data,
            content_loader.get_builder('inoket-1', 'display_service').filter(
                service_data
            )
        )

        try:
            # get supplier data and add contact info to service object
            supplier = data_api_client.get_supplier(
                service_data['supplierId']
            )
            supplier_data = supplier['suppliers']
            service_view_data.meta.set_contact_attribute(
                supplier_data['contactInformation'][0].get('contactName'),
                supplier_data['contactInformation'][0].get('phoneNumber'),
                supplier_data['contactInformation'][0].get('email')
            )

        except HTTPError as e:
            abort(e.status_code)

        service_unavailability_information = None
        status_code = 200
        if service['serviceMadeUnavailableAuditEvent'] is not None:
            service_unavailability_information = {
                'date': dateformat(service['serviceMadeUnavailableAuditEvent']['createdAt']),
                'type': service['serviceMadeUnavailableAuditEvent']['type']
            }
            # mark the resource as unavailable in the headers
            status_code = 410

        return render_template(
            'service.html',
            service=service_view_data,
            service_unavailability_information=service_unavailability_information,
            lot=service_view_data.lot.lower(),
            lot_label=get_label_for_lot_param(service_view_data.lot.lower()),
            service_id=service_id), status_code
    except AuthException:
        abort(500, "Application error")
    except KeyError:
        abort(404, "Service ID '%s' can not be found" % service_id)
    except HTTPError as e:
        abort(e.status_code)
 def test_attributes_with_assurance_in_the_fields_add_it_correctly(self):
     service = Service(
         self.fixture,
         content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if group['name'] == 'Data-in-transit protection':
             for row in group['rows']:
                 # string with bespoke assurance caveat
                 if row.label == 'Data protection between services':
                     self.assertEqual(row.value, [u'No encryption'])
                     self.assertEqual(
                         row.assurance,
                         u'independent validation of assertion')
                 # string with standard assurance caveat
                 if row.label == 'Data protection within service':
                     self.assertEqual(row.value, [u'No encryption'])
 def test_attributes_are_correctly_set(self):
     service = Service(
         self.fixture, content_loader.get_builder('g-cloud-6', 'display_service')
     )
     self.assertEquals(
         service.attributes[0]['name'],
         'Support'
     )
     self.assertEquals(
         len(service.attributes),
         30
     )
     self.assertEquals(
         len(list(service.attributes[0]['rows'])),
         5
     )
def get_brief_by_id(framework_slug, brief_id):
    briefs = data_api_client.get_brief(brief_id)
    brief = briefs.get('briefs')
    if brief['status'] not in ['live', 'closed']:
        abort(404, "Opportunity '{}' can not be found".format(brief_id))

    brief['clarificationQuestions'] = [
        dict(question, number=index+1)
        for index, question in enumerate(brief['clarificationQuestions'])
    ]

    brief_content = content_loader.get_builder('digital-outcomes-and-specialists', 'display_brief').filter(
        brief
    )
    return render_template(
        'brief.html',
        brief=brief,
        content=brief_content
    )
 def test_attributes_with_assurance_in_the_fields_add_it_correctly(self):
     service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if group['name'] == 'Data-in-transit protection':
             for row in group['rows']:
                 # string with bespoke assurance caveat
                 if row.label == 'Data protection between services':
                     self.assertEqual(
                         row.value, [u'No encryption']
                     )
                     self.assertEqual(
                         row.assurance, u'independent validation of assertion'
                     )
                 # string with standard assurance caveat
                 if row.label == 'Data protection within service':
                     self.assertEqual(
                         row.value,
                         [u'No encryption']
                     )
예제 #13
0
def search():
    content_builder = content_loader.get_builder('inoket-1', 'search_filters')
    filters = filters_for_lot(
        get_lot_from_request(request),
        content_builder
    )

    response = search_api_client.search_services(
        index='inoket-1',
        **build_search_query(request, filters, content_builder)
    )

    search_results_obj = SearchResults(response)

    pagination_config = pagination(
        search_results_obj.total,
        current_app.config["DM_SEARCH_PAGE_SIZE"],
        get_page_from_request(request)
    )

    search_summary = SearchSummary(
        response['meta']['total'],
        clean_request_args(request.args, filters),
        filters
    )

    set_filter_states(filters, request)
    current_lot = get_lot_from_request(request)

    services_to_return = search_results_obj.search_results

    postcode = request.args.get('by_distance')

    if postcode:

        # FIXME
        # Here we're using the data_api_client to avoid forking the dmapiclient library and creating a new one just for local search. 
        response = data_api_client._post("{}/order-by-distance".format(current_app.config['DM_GEO_API_URL']), { 
            'from_location': postcode, 
            'services': [s['id'] for s in search_results_obj.search_results]
        })

        locations = response['locations']

        for l in locations:
            matching_services = [x for x in search_results_obj.search_results if x['id'] == l['service_id']]
            if len(matching_services) > 0:
                l['distance'] = round(l['distance'], 2)
                l.update(matching_services[0])
            else:
                del l

        services_to_return = locations

    return render_template(
        'search.html',
        current_lot=current_lot,
        current_lot_label=get_label_for_lot_param(current_lot) if current_lot else None,
        filters=filters,
        lots=LOTS,
        pagination=pagination_config,
        search_keywords=get_keywords_from_request(request),
        search_query=query_args_for_pagination(request.args),
        services=services_to_return,
        summary=search_summary.markup(),
        title='Search results',
        total=search_results_obj.total
    )
예제 #14
0
 def test_Service_works_if_serviceBenefits_is_not_set(self):
     del self.fixture['serviceBenefits']
     self.service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     self.assertFalse(hasattr(self.service, 'benefits'))
예제 #15
0
 def setUp(self):
     self.fixture = _get_fixture_data()
     self.fixture = self.fixture['services']
     self.service = Service(
         self.fixture, content_loader.get_builder('g-cloud-6', 'display_service')
     )
예제 #16
0
def get_brief_by_id(framework_slug, brief_id):
    briefs = data_api_client.get_brief(brief_id)
    brief = briefs.get('briefs')
    if brief['status'] not in ['live', 'closed']:
        if not current_user.is_authenticated or brief['users'][0][
                'id'] != current_user.id:
            abort(404, "Opportunity '{}' can not be found".format(brief_id))

    if current_user.is_authenticated and current_user.role == 'supplier':
        brief_responses = data_api_client.find_brief_responses(
            brief_id, current_user.supplier_code)["briefResponses"]
    else:
        brief_responses = None

    brief['clarificationQuestions'] = [
        dict(question, number=index + 1)
        for index, question in enumerate(brief['clarificationQuestions'])
    ]

    brief_content = content_loader.get_builder(framework_slug,
                                               'display_brief').filter(brief)

    brief_of_current_user = False
    if not current_user.is_anonymous and len(brief.get('users')) > 0:
        brief_of_current_user = brief['users'][0]['id'] == current_user.id

    is_restricted_brief = brief.get('sellerSelector',
                                    '') in ('someSellers', 'oneSeller')

    application_url = "/sellers/opportunities/{}/responses/create".format(
        brief['id'])
    add_case_study_url = None

    profile_application_status = None
    supplier = None
    unassessed_domains = {}
    assessed_domains = {}
    profile_url = None
    supplier_assessments = {}
    supplier_framework = None

    if current_user.is_authenticated:
        if current_user.supplier_code is not None:
            supplier = data_api_client.get_supplier(
                current_user.supplier_code).get('supplier', None)

        profile_application_id = current_user.application_id

        if supplier is not None:
            profile_url = '/supplier/{}'.format(supplier.get('code'))
            assessed_domains = supplier.get('domains').get('assessed', None)
            unassessed_domains = supplier.get('domains').get(
                'unassessed', None)
            legacy_domains = supplier.get('domains').get('legacy', None)

            if profile_application_id is None:
                profile_application_id = supplier.get('application_id', None)

            supplier_code = supplier.get('code')
            supplier_assessments = data_api_client.req.assessments().supplier(
                supplier_code).get()

            if len(legacy_domains) != 0:
                for i in range(len(legacy_domains)):
                    supplier_assessments['assessed'].append(legacy_domains[i])

            supplier_framework_ids = supplier.get('frameworks')
            for i in range(len(supplier_framework_ids)):
                if supplier.get('frameworks')[i].get('framework_id') == 7:
                    supplier_framework = 'digital-marketplace'
            if supplier_framework is None:
                supplier_framework = 'digital-service-professionals'

        if profile_application_id is not None:
            try:
                profile_application = data_api_client.req.applications(
                    profile_application_id).get()

                if unassessed_domains is None:
                    unassessed_domains = profile_application.get(
                        'application').get('supplier').get(
                            'domains', None).get('unassessed', None)
                if assessed_domains is None:
                    assessed_domains = profile_application.get(
                        'application').get('supplier').get(
                            'domains', None).get('assessed', None)

                profile_application_status = profile_application.get(
                    'application').get('status', None)
                if profile_application.get('application').get(
                        'type') == 'edit':
                    profile_application_status = 'approved'

            except APIError:
                pass
            except HTTPError:
                pass

    domain_id = None
    if brief.get('areaOfExpertise'):
        current_domain = data_api_client.req.domain(
            brief['areaOfExpertise']).get()
        domain_id = current_domain['domain']['id']

    return render_template_with_csrf(
        'brief.html',
        add_case_study_url=add_case_study_url,
        application_url=application_url,
        assessed_domains=assessed_domains,
        brief=brief,
        brief_responses=brief_responses,
        brief_of_current_user=brief_of_current_user,
        content=brief_content,
        domain_id=domain_id,
        is_restricted_brief=is_restricted_brief,
        profile_application_status=profile_application_status,
        profile_url=profile_url,
        show_pdf_link=brief['status'] in ['live', 'closed'],
        unassessed_domains=unassessed_domains,
        supplier_assessments=supplier_assessments,
        supplier_framework=supplier_framework)
예제 #17
0
def get_brief_by_id(framework_slug, brief_id):
    briefs = data_api_client.get_brief(brief_id)
    brief = briefs.get('briefs')
    if brief['lotSlug'] in ['rfx', 'atm', 'specialist', 'training2']:
        return redirect('/2/%s/opportunities/%s' % (framework_slug, brief_id), 301)
    if brief['status'] not in ['live', 'closed']:
        if (
            not current_user.is_authenticated or
            (brief['users'] and brief['users'][0]['id'] != current_user.id) or
            current_user.id not in [tb.get('userId') for tb in brief.get('teamBriefs', [])]
        ):
            abort(404, "Opportunity '{}' can not be found".format(brief_id))

    if current_user.is_authenticated and current_user.role == 'supplier':
        brief_responses = data_api_client.find_brief_responses(
            brief_id, current_user.supplier_code)["briefResponses"]
        selected_for_brief = _is_supplier_selected_for_brief(brief)
    else:
        brief_responses = None
        selected_for_brief = False

    brief['clarificationQuestions'] = [
        dict(question, number=index+1)
        for index, question in enumerate(brief['clarificationQuestions'])
    ]

    brief_content = content_loader.get_builder(framework_slug, 'display_brief').filter(
        brief
    )

    sections = brief_content.summary(brief)
    unanswered_required, unanswered_optional = count_unanswered_questions(sections)

    brief_of_current_user = False
    if not current_user.is_anonymous and len(brief.get('users')) > 0:
        brief_of_current_user = brief['users'][0]['id'] == current_user.id

    is_restricted_brief = brief.get('sellerSelector', '') in ('someSellers', 'oneSeller')

    brief_published_date = brief['dates'].get('published_date', None)
    feature_date = current_app.config['MULTI_CANDIDATE_PUBLISHED_DATE']

    published_date = pendulum.parse(brief_published_date) if brief_published_date else feature_date.subtract(days=1)
    application_url = "/2/brief/{}/respond".format(brief['id'])
    application_specialist_url = application_url
    application_specialist_submitted_url = None

    if published_date >= feature_date:
        application_specialist_url = "/2/brief/{}/specialist/respond".format(brief['id'])
        application_specialist_submitted_url = "/2/brief/{}/specialist/respond/submitted".format(brief['id'])

    application_training_url = "/2/brief/{}/training/respond".format(brief['id'])

    add_case_study_url = None

    profile_application_status = None
    supplier = None
    unassessed_domains = {}
    assessed_domains = {}
    profile_url = None
    supplier_assessments = {}
    supplier_framework = None

    if current_user.is_authenticated:
        if current_user.supplier_code is not None:
            supplier = data_api_client.get_supplier(
                current_user.supplier_code
            ).get('supplier', None)

        profile_application_id = current_user.application_id

        if supplier is not None:
            profile_url = '/supplier/{}'.format(supplier.get('code'))
            assessed_domains = supplier.get('domains').get('assessed', None)
            unassessed_domains = supplier.get('domains').get('unassessed', None)
            legacy_domains = supplier.get('domains').get('legacy', None)

            if profile_application_id is None:
                profile_application_id = supplier.get('application_id', None)

            supplier_code = supplier.get('code')
            supplier_assessments = data_api_client.req.assessments().supplier(supplier_code).get()

            if len(legacy_domains) != 0:
                for i in range(len(legacy_domains)):
                    supplier_assessments['assessed'].append(legacy_domains[i])

            supplier_framework_ids = supplier.get('frameworks')
            for i in range(len(supplier_framework_ids)):
                if supplier.get('frameworks')[i].get('framework_id') == 7:
                    supplier_framework = 'digital-marketplace'
            if supplier_framework is None:
                supplier_framework = 'digital-service-professionals'

        if profile_application_id is not None:
            try:
                profile_application = data_api_client.req.applications(profile_application_id).get()

                if unassessed_domains is None:
                    unassessed_domains = profile_application.get(
                        'application').get('supplier').get('domains', None).get('unassessed', None)
                if assessed_domains is None:
                    assessed_domains = profile_application.get(
                        'application').get('supplier').get('domains', None).get('assessed', None)

                profile_application_status = profile_application.get('application').get('status', None)
                if profile_application.get('application').get('type') == 'edit':
                    profile_application_status = 'approved'

            except APIError:
                pass
            except HTTPError:
                pass

    domain_id = None
    if brief.get('areaOfExpertise'):
        current_domain = data_api_client.req.domain(brief['areaOfExpertise']).get()
        domain_id = current_domain['domain']['id']
    elif brief['lotSlug'] == 'training':
        domain_id = 15  # training

    return render_template_with_csrf(
        'brief.html',
        add_case_study_url=add_case_study_url,
        application_url=application_url,
        application_specialist_url=application_specialist_url,
        application_specialist_submitted_url=application_specialist_submitted_url,
        application_training_url=application_training_url,
        assessed_domains=assessed_domains,
        brief=brief,
        brief_responses=brief_responses,
        brief_of_current_user=brief_of_current_user,
        content=brief_content,
        domain_id=domain_id,
        is_restricted_brief=is_restricted_brief,
        selected_for_brief=selected_for_brief,
        profile_application_status=profile_application_status,
        profile_url=profile_url,
        unassessed_domains=unassessed_domains,
        supplier_assessments=supplier_assessments,
        supplier_framework=supplier_framework,
        unanswered_required=unanswered_required,
        training_domain_name='Training, Learning and Development'
    )
def get_brief_by_id(framework_slug, brief_id):
    briefs = data_api_client.get_brief(brief_id)
    brief = briefs.get('briefs')
    if brief['lotSlug'] in ['rfx', 'atm']:
        return redirect('/2/%s/opportunities/%s' % (framework_slug, brief_id), 301)
    if brief['status'] not in ['live', 'closed']:
        if not current_user.is_authenticated or brief['users'][0]['id'] != current_user.id:
            abort(404, "Opportunity '{}' can not be found".format(brief_id))

    if current_user.is_authenticated and current_user.role == 'supplier':
        brief_responses = data_api_client.find_brief_responses(
            brief_id, current_user.supplier_code)["briefResponses"]
        selected_for_brief = _is_supplier_selected_for_brief(brief)
    else:
        brief_responses = None
        selected_for_brief = False

    brief['clarificationQuestions'] = [
        dict(question, number=index+1)
        for index, question in enumerate(brief['clarificationQuestions'])
    ]

    brief_content = content_loader.get_builder(framework_slug, 'display_brief').filter(
        brief
    )

    sections = brief_content.summary(brief)
    unanswered_required, unanswered_optional = count_unanswered_questions(sections)

    brief_of_current_user = False
    if not current_user.is_anonymous and len(brief.get('users')) > 0:
        brief_of_current_user = brief['users'][0]['id'] == current_user.id

    is_restricted_brief = brief.get('sellerSelector', '') in ('someSellers', 'oneSeller')

    brief_published_date = brief['dates'].get('published_date', None)
    feature_date = current_app.config['MULTI_CANDIDATE_PUBLISHED_DATE']

    published_date = pendulum.parse(brief_published_date) if brief_published_date else feature_date.subtract(days=1)
    application_url = "/2/brief/{}/respond".format(brief['id'])
    application_specialist_url = application_url
    application_specialist_submitted_url = None

    if published_date >= feature_date:
        application_specialist_url = "/2/brief/{}/specialist/respond".format(brief['id'])
        application_specialist_submitted_url = "/2/brief/{}/specialist/respond/submitted".format(brief['id'])

    application_training_url = "/2/brief/{}/training/respond".format(brief['id'])

    add_case_study_url = None

    profile_application_status = None
    supplier = None
    unassessed_domains = {}
    assessed_domains = {}
    profile_url = None
    supplier_assessments = {}
    supplier_framework = None

    if current_user.is_authenticated:
        if current_user.supplier_code is not None:
            supplier = data_api_client.get_supplier(
                current_user.supplier_code
            ).get('supplier', None)

        profile_application_id = current_user.application_id

        if supplier is not None:
            profile_url = '/supplier/{}'.format(supplier.get('code'))
            assessed_domains = supplier.get('domains').get('assessed', None)
            unassessed_domains = supplier.get('domains').get('unassessed', None)
            legacy_domains = supplier.get('domains').get('legacy', None)

            if profile_application_id is None:
                profile_application_id = supplier.get('application_id', None)

            supplier_code = supplier.get('code')
            supplier_assessments = data_api_client.req.assessments().supplier(supplier_code).get()

            if len(legacy_domains) != 0:
                for i in range(len(legacy_domains)):
                    supplier_assessments['assessed'].append(legacy_domains[i])

            supplier_framework_ids = supplier.get('frameworks')
            for i in range(len(supplier_framework_ids)):
                if supplier.get('frameworks')[i].get('framework_id') == 7:
                    supplier_framework = 'digital-marketplace'
            if supplier_framework is None:
                supplier_framework = 'digital-service-professionals'

        if profile_application_id is not None:
            try:
                profile_application = data_api_client.req.applications(profile_application_id).get()

                if unassessed_domains is None:
                    unassessed_domains = profile_application.get(
                        'application').get('supplier').get('domains', None).get('unassessed', None)
                if assessed_domains is None:
                    assessed_domains = profile_application.get(
                        'application').get('supplier').get('domains', None).get('assessed', None)

                profile_application_status = profile_application.get('application').get('status', None)
                if profile_application.get('application').get('type') == 'edit':
                    profile_application_status = 'approved'

            except APIError:
                pass
            except HTTPError:
                pass

    domain_id = None
    if brief.get('areaOfExpertise'):
        current_domain = data_api_client.req.domain(brief['areaOfExpertise']).get()
        domain_id = current_domain['domain']['id']
    elif brief['lotSlug'] == 'training':
        domain_id = 15  # training

    return render_template_with_csrf(
        'brief.html',
        add_case_study_url=add_case_study_url,
        application_url=application_url,
        application_specialist_url=application_specialist_url,
        application_specialist_submitted_url=application_specialist_submitted_url,
        application_training_url=application_training_url,
        assessed_domains=assessed_domains,
        brief=brief,
        brief_responses=brief_responses,
        brief_of_current_user=brief_of_current_user,
        content=brief_content,
        domain_id=domain_id,
        is_restricted_brief=is_restricted_brief,
        selected_for_brief=selected_for_brief,
        profile_application_status=profile_application_status,
        profile_url=profile_url,
        unassessed_domains=unassessed_domains,
        supplier_assessments=supplier_assessments,
        supplier_framework=supplier_framework,
        unanswered_required=unanswered_required,
        training_domain_name='Training, Learning and Development'
    )
import json
import unittest

from flask import Markup
from mock import Mock
from werkzeug.datastructures import MultiDict
from app.presenters.search_presenters import filters_for_lot
from app.presenters.search_results import SearchResults
from app.presenters.search_summary import SearchSummary, \
    SummaryRules, SummaryFragment
from app import content_loader


filter_groups = filters_for_lot(
    "saas",
    content_loader.get_builder('g-cloud-6', 'search_filters')
)


def _get_fixture_data():
    test_root = os.path.abspath(
        os.path.join(os.path.dirname(__file__), "..")
    )
    fixture_path = os.path.join(
        test_root, 'fixtures', 'search_results_fixture.json'
    )
    with open(fixture_path) as fixture_file:
        return json.load(fixture_file)


def _get_fixture_multiple_pages_data():
 def setUp(self):
     self.fixture = _get_fixture_data()
     self.fixture = self.fixture['services']
     self.service = Service(
         self.fixture, content_loader.get_builder('g-cloud-6', 'display_service')
     )
 def test_Service_works_if_serviceBenefits_is_not_set(self):
     del self.fixture['serviceBenefits']
     self.service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     self.assertFalse(hasattr(self.service, 'benefits'))
예제 #22
0
import os
import json
import unittest

from flask import Markup
from mock import Mock
from werkzeug.datastructures import MultiDict
from app.presenters.search_presenters import filters_for_lot
from app.presenters.search_results import SearchResults
from app.presenters.search_summary import SearchSummary, \
    SummaryRules, SummaryFragment
from app import content_loader

filter_groups = filters_for_lot(
    "saas", content_loader.get_builder('g-cloud-6', 'search_filters'))


def _get_fixture_data():
    test_root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
    fixture_path = os.path.join(test_root, 'fixtures',
                                'search_results_fixture.json')
    with open(fixture_path) as fixture_file:
        return json.load(fixture_file)


def _get_fixture_multiple_pages_data():
    test_root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
    fixture_path = os.path.join(test_root, 'fixtures',
                                'search_results_multiple_pages_fixture.json')
    with open(fixture_path) as fixture_file:
        return json.load(fixture_file)
 def test_the_support_attribute_group_is_not_there_if_no_attributes(self):
     del self.fixture['openStandardsSupported']
     service = Service(self.fixture, content_loader.get_builder('g-cloud-6', 'display_service'))
     for group in service.attributes:
         if group['name'] == 'Open standards':
             self.fail("Support group should not be found")