Exemplo n.º 1
0
def test_ticket_search_returns_data_only_for_the_requested_search_value():
    TicketFactory()
    TicketFactory()
    ticket = TicketFactory()

    search = Search(search_term='_id', search_value=ticket._id)
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0]._id == ticket._id
    assert qs[0].url == ticket.url
    assert qs[0].external_id == ticket.external_id
    assert qs[0].created_at == ticket.created_at
    assert qs[0].type == ticket.type
    assert qs[0].subject == ticket.subject
    assert qs[0].description == ticket.description
    assert qs[0].priority == ticket.priority
    assert qs[0].status == ticket.status
    assert qs[0].submitter_id == ticket.submitter_id
    assert qs[0].assignee_id == ticket.assignee_id
    assert qs[0].organization_id == ticket.organization_id
    assert qs[0].tags == ticket.tags
    assert qs[0].has_incidents == ticket.has_incidents
    assert qs[0].due_at == ticket.due_at
    assert qs[0].via == ticket.via
Exemplo n.º 2
0
def test_user_search_returns_data_only_for_the_requested_search_value():
    UserFactory()
    UserFactory()
    user = UserFactory()

    search = Search(search_term='_id', search_value=user._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0]._id == user._id
    assert qs[0].url == user.url
    assert qs[0].external_id == user.external_id
    assert qs[0].name == user.name
    assert qs[0].alias == user.alias
    assert qs[0].created_at == user.created_at
    assert qs[0].active == user.active
    assert qs[0].verified == user.verified
    assert qs[0].shared == user.shared
    assert qs[0].locale == user.locale
    assert qs[0].timezone == user.timezone
    assert qs[0].last_login_at == user.last_login_at
    assert qs[0].email == user.email
    assert qs[0].phone == user.phone
    assert qs[0].signature == user.signature
    assert qs[0].organization_id == user.organization_id
    assert qs[0].tags == user.tags
    assert qs[0].suspended == user.suspended
    assert qs[0].role == user.role
    assert qs[0].submitted_tickets.count() == 0
    assert qs[0].assigned_tickets.count() == 0
Exemplo n.º 3
0
def test_user_search_using_foreign_key_organization_id_as_search_term():
    user = UserFactory()

    search = Search(search_term='organization_id', search_value=user.organization_id._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0].organization_id._id == user.organization_id._id
Exemplo n.º 4
0
def test_ticket_search_is_case_insensitive():
    TicketFactory(via='web')

    search = Search(search_term='via', search_value='WEB')
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].via == 'web'
Exemplo n.º 5
0
def test_organization_search_returns_data_partially_matching_requested_search_value():
    OrganizationFactory(details='MegaCorp')

    search = Search(search_term='details', search_value='corp')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].details == 'MegaCorp'
Exemplo n.º 6
0
def test_organization_search_for_a_character_field_lookup():
    OrganizationFactory(name='testName')

    search = Search(search_term='name', search_value='testName')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].name == 'testName'
Exemplo n.º 7
0
def test_user_search_returns_data_partially_matching_requested_search_value():
    UserFactory(role='admin')

    search = Search(search_term='role', search_value='adm')
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0].role == 'admin'
Exemplo n.º 8
0
def test_user_search_is_case_insensitive():
    UserFactory(role='admin')

    search = Search(search_term='role', search_value='ADMIN')
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0].role == 'admin'
Exemplo n.º 9
0
def test_organization_search_for_a_boolean_field_lookup():
    OrganizationFactory(shared_tickets='true')

    search = Search(search_term='shared_tickets', search_value='true')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].shared_tickets == 'true'
Exemplo n.º 10
0
def test_organization_search_retrieves_data_when_value_is_blank():
    OrganizationFactory(name='')

    search = Search(search_term='name', search_value='')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].name == ''
Exemplo n.º 11
0
def test_organization_search_is_case_insensitive():
    OrganizationFactory(details='MegaCorp')

    search = Search(search_term='details', search_value='megacorp')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].details == 'MegaCorp'
Exemplo n.º 12
0
def test_ticket_search_using_foreign_key_submitter_id_as_search_term():
    ticket = TicketFactory()

    search = Search(search_term='submitter_id',
                    search_value=ticket.submitter_id._id)
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].submitter_id._id == ticket.submitter_id._id
Exemplo n.º 13
0
def test_ticket_search_returns_data_partially_matching_requested_search_value(
):
    TicketFactory(via='web')

    search = Search(search_term='via', search_value='we')
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].via == 'web'
Exemplo n.º 14
0
def test_ticket_search_using_foreign_key_organization_id_as_search_term():
    ticket = TicketFactory()

    search = Search(search_term='organization_id',
                    search_value=ticket.organization_id._id)
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].organization_id._id == ticket.organization_id._id
Exemplo n.º 15
0
def test_organization_search_for_a_list_field_lookup():
    OrganizationFactory(
        domain_names='["kage.com", "ecratic.com", "endipin.com", "zentix.com"]'
    )

    search = Search(search_term='domain_names', search_value='kage')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].domain_names == '["kage.com", "ecratic.com", "endipin.com", "zentix.com"]'
Exemplo n.º 16
0
def test_user_search_returns_all_data_matching_requested_search_value():
    for _ in range(3):
        UserFactory(role='admin')

    search = Search(search_term='role', search_value='admin')
    qs = search.search_users()

    assert len(qs) == 3
    assert qs[0].role == 'admin'
    assert qs[1].role == 'admin'
    assert qs[2].role == 'admin'
Exemplo n.º 17
0
def test_user_search_returns_ticket_objects_assigned_to_user():
    user = UserFactory()
    for _ in range(3):
        TicketFactory(assignee_id=user)

    search = Search(search_term='_id', search_value=user._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0]._id == user._id
    assert qs[0].assigned_tickets.count() == 3
Exemplo n.º 18
0
def test_ticket_search_returns_all_data_matching_requested_search_value():
    for _ in range(3):
        TicketFactory(via='web')

    search = Search(search_term='via', search_value='web')
    qs = search.search_tickets()

    assert len(qs) == 3
    assert qs[0].via == 'web'
    assert qs[1].via == 'web'
    assert qs[2].via == 'web'
Exemplo n.º 19
0
def test_user_search_does_not_return_tickets_when_no_tickets_are_submitted_by_user():
    user = UserFactory()
    for _ in range(3):
        TicketFactory()

    search = Search(search_term='_id', search_value=user._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0]._id == user._id
    assert qs[0].submitted_tickets.count() == 0
Exemplo n.º 20
0
def test_organization_search_returns_all_data_matching_requested_search_value():
    for _ in range(3):
        OrganizationFactory(details='MegaCorp')

    search = Search(search_term='details', search_value='MegaCorp')
    qs = search.search_organizations()

    assert len(qs) == 3
    assert qs[0].details == 'MegaCorp'
    assert qs[1].details == 'MegaCorp'
    assert qs[2].details == 'MegaCorp'
Exemplo n.º 21
0
def test_organization_search_does_not_return_user_and_ticket_objects_when_not_linked():
    organization = OrganizationFactory()
    for _ in range(2):
        UserFactory()
    for _ in range(3):
        TicketFactory()

    search = Search(search_term='_id', search_value=organization._id)
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0]._id == organization._id
    assert qs[0].users.count() == 0
    assert qs[0].tickets.count() == 0
Exemplo n.º 22
0
def test_search_organizations(capsys):
    organization = OrganizationFactory()
    UserFactory(organization_id=organization)
    TicketFactory(organization_id=organization)

    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = organization._id
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_organizations()

    captured = capsys.readouterr()

    assert (
        f'Searching organizations for {controller.search_term} with a value of {controller.search_value}'
    ) in captured.out

    assert '_id' in captured.out
    assert 'url' in captured.out
    assert 'name' in captured.out
    assert 'domain_names' in captured.out
    assert 'created_at' in captured.out
    assert 'details' in captured.out
    assert 'shared_tickets' in captured.out
    assert 'tags' in captured.out
    assert 'user_id' in captured.out
    assert 'user_name' in captured.out
    assert 'ticket_id' in captured.out
    assert 'ticket_subject' in captured.out
Exemplo n.º 23
0
def test_search_tickets(capsys):
    ticket = TicketFactory()

    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = ticket._id
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_tickets()

    captured = capsys.readouterr()

    assert (
        f'Searching tickets for {controller.search_term} with a value of {controller.search_value}'
    ) in captured.out

    assert '_id' in captured.out
    assert 'url' in captured.out
    assert 'external_id' in captured.out
    assert 'created_at' in captured.out
    assert 'type' in captured.out
    assert 'subject' in captured.out
    assert 'description' in captured.out
    assert 'priority' in captured.out
    assert 'status' in captured.out
    assert 'submitter_id' in captured.out
    assert 'submitter_name' in captured.out
    assert 'assignee_id' in captured.out
    assert 'assignee_name' in captured.out
    assert 'organization_id' in captured.out
    assert 'orgnaization_name' in captured.out
    assert 'tags' in captured.out
    assert 'has_incidents' in captured.out
    assert 'due_at' in captured.out
    assert 'via' in captured.out
Exemplo n.º 24
0
def test_organization_search_returns_data_only_for_the_requested_search_value():
    OrganizationFactory()
    OrganizationFactory()
    organization = OrganizationFactory()

    search = Search(search_term='_id', search_value=organization._id)
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0]._id == organization._id
    assert qs[0].url == organization.url
    assert qs[0].external_id == organization.external_id
    assert qs[0].name == organization.name
    assert qs[0].domain_names == organization.domain_names
    assert qs[0].created_at == organization.created_at
    assert qs[0].details == organization.details
    assert qs[0].shared_tickets == organization.shared_tickets
    assert qs[0].tags == organization.tags
Exemplo n.º 25
0
def test_search_organizations_for_invalid_search_term(capsys):
    controller = AppController()
    controller.search_term = 'unknown'
    controller.search_value = 1
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_organizations()

    captured = capsys.readouterr()

    assert f'Invalid search term "{controller.search_term}"' in captured.out
Exemplo n.º 26
0
def test_search_organizations_for_no_data(capsys):
    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = 1
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_organizations()

    captured = capsys.readouterr()

    assert (
        f'No results found for search term {controller.search_term} '
        f'and search value {controller.search_value}'
    ) in captured.out
Exemplo n.º 27
0
def test_search_users(capsys):
    user = UserFactory()
    TicketFactory(assignee_id=user)
    TicketFactory(submitter_id=user)

    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = user._id
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_users()

    captured = capsys.readouterr()

    assert (
        f'Searching users for {controller.search_term} with a value of {controller.search_value}'
    ) in captured.out

    assert '_id' in captured.out
    assert 'url' in captured.out
    assert 'external_id' in captured.out
    assert 'name' in captured.out
    assert 'alias' in captured.out
    assert 'created_at' in captured.out
    assert 'active' in captured.out
    assert 'verified' in captured.out
    assert 'shared' in captured.out
    assert 'locale' in captured.out
    assert 'timezone' in captured.out
    assert 'last_login_at' in captured.out
    assert 'email' in captured.out
    assert 'phone' in captured.out
    assert 'signature' in captured.out
    assert 'organization_id' in captured.out
    assert 'orgnaization_name' in captured.out
    assert 'tags' in captured.out
    assert 'suspended' in captured.out
    assert 'role' in captured.out
    assert 'submitted_ticket_id' in captured.out
    assert 'submitted_ticket_subject' in captured.out
    assert 'assigned_ticket_id' in captured.out
    assert 'assigned_ticket_subject' in captured.out
Exemplo n.º 28
0
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from users.views import Signup,Signin,Reset
from musics.views import Musics,MusicOption
from search.views import Search,SearchSetlist
from comments.views import CommentMusic,CommentSetlist
from collects.views import CollectMusic,CollectSetlist
from setlists.views import SetlistOption,SetlistList,AlbumList
from lrc.views import LrcUpload

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^users/signup', Signup.as_view()),
    url(r'^users/signin', Signin.as_view()),
    url(r'^users/resetpassword', Reset.as_view()),
    url(r'^musics/(?P<musicId>[0-9]+)$', MusicOption.as_view()),
    url(r'^musics$', Musics.as_view()),
    url(r'^musics/search$', Search.as_view()),
    url(r'^setlists/search$', SearchSetlist.as_view()),
    url(r'^musics/comments/(?P<musicId>[0-9]+)$', CommentMusic.as_view()),
    url(r'^setlists/comments/(?P<setlistId>[0-9]+)$', CommentSetlist.as_view()),
    url(r'^musics/collects/(?P<musicId>[0-9]+)$', CollectMusic.as_view()),
    url(r'^setlists/collects/(?P<musicId>[0-9]+)$', CollectSetlist.as_view()),
    url(r'^setlists$', SetlistList.as_view()),
    url(r'^albums$', AlbumList.as_view()),
    url(r'^setlists/(?P<setlistId>[0-9]+)$', SetlistOption.as_view()),
    url(r'^lrc', LrcUpload.as_view()),
]
Exemplo n.º 29
0
def test_user_search_for_no_matching_data():
    user = UserFactory()
    search = Search(search_term='_id', search_value=user._id+1)
    qs = search.search_users()
    assert len(qs) == 0
Exemplo n.º 30
0
"""music_2 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
from search.views import Index, Search, Good_luck

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', Index.as_view(), name='index'),
    path('search/', Search.as_view(), name='search'),
    path('goodluck/', Good_luck.as_view(), name='goodluck'),
]
Exemplo n.º 31
0
    def get_object(self, request):
        """
        For OPDS 1.1 We should handle a query for search terms
        and criteria provided either as opensearch or 'inline' query.
        OpenSearch defines fields: atom:author, atom:contributor (treated as translator),
        atom:title. Inline query provides author, title, categories (treated as book tags),
        description (treated as content search terms).

        if search terms are provided, we shall search for books
        according to Hint information (from author & contributror & title).

        but if search terms are empty, we should do a different search
        (perhaps for is_book=True)

        """

        query = request.GET.get('q', '')

        inline_criteria = re.findall(self.INLINE_QUERY_RE, query)
        if inline_criteria:
            remains = re.sub(self.INLINE_QUERY_RE, '', query)
            remains = re.sub(r'[ \t]+', ' ', remains)

            def get_criteria(criteria, name):
                for c in criteria:
                    for p in self.MATCHES[name]:
                        if c[p]:
                            if p % 2 == 0:
                                return c[p].replace('+', ' ')
                            return c[p]
                return None

            criteria = dict(map(
                lambda cn: (cn, get_criteria(inline_criteria, cn)),
                ['author', 'translator', 'title', 'categories',
                 'description', 'text']))
            query = remains
            # empty query and text set case?
            log.debug("Inline query = [%s], criteria: %s" % (query, criteria))
        else:
            def remove_dump_data(val):
                """Some clients don't get opds placeholders and just send them."""
                if self.ATOM_PLACEHOLDER.match(val):
                    return ''
                return val

            criteria = dict([(cn, remove_dump_data(request.GET.get(cn, '')))
                        for cn in self.MATCHES.keys()])
            # query is set above.
            log.debug("Inline query = [%s], criteria: %s" % (query, criteria))

        srch = Search()

        book_hit_filter = srch.index.Q(book_id__any=True)
        filters = [book_hit_filter] + [srch.index.Q(
            **{self.PARAMS_TO_FIELDS.get(cn, cn): criteria[cn]}
            ) for cn in self.MATCHES.keys() if cn in criteria
            if criteria[cn]]

        if query:
            q = srch.index.query(
                reduce(operator.or_,
                       [srch.index.Q(**{self.PARAMS_TO_FIELDS.get(cn, cn): query})
                        for cn in self.MATCHES.keys()],
                srch.index.Q()))
        else:
            q = srch.index.query(srch.index.Q())

        q = srch.apply_filters(q, filters).field_limit(score=True, fields=['book_id'])
        results = q.execute()

        book_scores = dict([(r['book_id'], r['score']) for r in results])
        books = Book.objects.filter(id__in=set([r['book_id'] for r in results]))
        books = list(books)
        books.sort(reverse=True, key=lambda book: book_scores[book.id])
        return books
Exemplo n.º 32
0
def test_user_search_for_no_data():
    search = Search(search_term='_id', search_value=1)
    qs = search.search_users()
    assert len(qs) == 0
Exemplo n.º 33
0
from django.conf import settings
from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

from pinax.apps.account.openid_consumer import PinaxConsumer

from search.views import Search


handler500 = "pinax.views.server_error"


urlpatterns = patterns("",
    url(r"^$", Search.as_view(), name="home"),
    url(r"^admin/invite_user/$", "pinax.apps.signup_codes.views.admin_invite_user", name="admin_invite_user"),
    url(r"^admin/", include(admin.site.urls)),
    url(r"^about/", include("about.urls")),
    url(r"^account/", include("pinax.apps.account.urls")),
    url(r"^openid/", include(PinaxConsumer().urls)),
    url(r"^profiles/", include("idios.urls")),
    # url(r"^notices/", include("notification.urls")),
    url(r"^announcements/", include("announcements.urls")),

    url(r"^packages/", include("packages.urls")),
    url(r"^help/", include("helpdocs.urls")),
    url(r"^", include("search.urls")),
)

Exemplo n.º 34
0
from django.conf.urls import patterns, url

from search.views import Search


urlpatterns = patterns("",
    url(r"^$", Search.as_view(), name="search"),
)