Beispiel #1
0
    def test_name_to_index(self):
        strains = helper.populate_test_strains(strain_dict=donezo.done)
        db.session.add_all(strains)

        self.assertEqual(Strain.name_to_index('3 Bears OG').first(), ('3-bears-og',))
        self.assertEqual(Strain.name_to_index('12 Year OG').first(), ('12-year-og',))
        self.assertEqual(Strain.name_to_index('24k Gold').first(), ('24k-gold',))
        self.assertIsNone(Strain.name_to_index('zoo').first())
Beispiel #2
0
    def test_follow_up_query(self):
        strains = helper.populate_test_strains(strain_dict=donezo.done)
        db.session.add_all(strains)

        self.assertEqual(Strain.follow_up_query('zoo').all(), [])
        self.assertEqual(Strain.follow_up_query('old').all(), [('24k Gold',)])
        self.assertEqual(Strain.follow_up_query('ea').all(), [('12 Year OG',), ('3 Bears OG',)])
        self.assertEqual(Strain.follow_up_query('og').all(), [('$100 OG',), ('12 Year OG',), ('3 Bears OG',)])
Beispiel #3
0
    def test_search(self):
        strains = helper.populate_test_strains(strain_dict=donezo.done)
        db.session.add_all(strains)

        gold = Strain.query.filter_by(name='24k Gold').first()
        year = Strain.query.filter_by(name='12 Year OG').first()
        hundred = Strain.query.filter_by(name='$100 OG').first()
        bears = Strain.query.filter_by(name='3 Bears OG').first()

        self.assertEqual(Strain.search('zoo').all(), [])
        self.assertEqual(Strain.search('old').all(), [gold])
        self.assertEqual(Strain.search('ea').all(), [year, bears])
        self.assertEqual(Strain.search('og').all(), [hundred, year, bears])
Beispiel #4
0
def typeahead():
    search_string = request.args.get('q')
    initial_query = Strain.initial_query(search_string)
    results_count = initial_query.count()
    return jsonify(
        helper.get_search_results(
            count=results_count,
            initial=initial_query,
            per_page=current_app.config['SEARCH_RESULTS'],
            search_string=search_string))
Beispiel #5
0
def get_search_results(*, search_string, initial, count, per_page):
    if count >= per_page:
        return [i for i, in initial.limit(per_page).all()]
    else:
        initial_results = [i for i, in initial.all()]
        follow_up_query = Strain.follow_up_query(search_string)
        agg_results = initial_results + [
            i for i, in follow_up_query.limit(per_page - count).all()
            if i not in initial_results
        ]
        return agg_results
Beispiel #6
0
def populate_test_strain():
    index = 'test'
    name = 'Test'
    leafly = 'leafly/test'
    species = 'tbd'
    description = 'ima test'
    strain = Strain(index=index,
                    name=name,
                    leafly=leafly,
                    species=species,
                    description=description)
    return strain
Beispiel #7
0
    def test_get_search_results(self):
        strains = helper.populate_test_strains(strain_dict=donezo.done)
        db.session.add_all(strains)

        # 4 initial results, 1 secondary
        q = '1'
        initial_query = Strain.initial_query(q)
        count = initial_query.count()
        results = helper.get_search_results(count=count, initial=initial_query, per_page=5, search_string=q)
        self.assertEqual(results, ['1024', '10th Planet', '12 Year OG', '13 Dawgs', '$100 OG'])

        # 2 initial results, 1 secondary results
        q = '10'
        initial_query = Strain.initial_query(q)
        count = initial_query.count()
        results = helper.get_search_results(count=count, initial=initial_query, per_page=5, search_string=q)
        self.assertEqual(results, ['1024', '10th Planet', '$100 OG'])

        # 3 initial results, 2 secondary results
        q = '2'
        initial_query = Strain.initial_query(q)
        count = initial_query.count()
        results = helper.get_search_results(count=count, initial=initial_query, per_page=5, search_string=q)
        self.assertEqual(results, ['2 Fast 2 Vast', '22', '24k Gold', '1024', '12 Year OG'])

        # 0 initial results, 3 secondary results
        q = 'og'
        initial_query = Strain.initial_query(q)
        count = initial_query.count()
        results = helper.get_search_results(count=count, initial=initial_query, per_page=5, search_string=q)
        self.assertEqual(results, ['$100 OG', '12 Year OG', '3 Bears OG'])

        # 0 initial results, 5 secondary results
        q = 'g'
        initial_query = Strain.initial_query(q)
        count = initial_query.count()
        results = helper.get_search_results(count=count, initial=initial_query, per_page=5, search_string=q)
        self.assertEqual(results, ['$100 OG', '12 Year OG', '13 Dawgs', '24k Gold', '3 Bears OG'])
Beispiel #8
0
def build_db():
    info = donezo.done

    for tup in info.items():
        index = tup[0]
        name = tup[1]['name']
        leafly = 'https://www.leafly.com' + tup[1]['link']
        species = tup[1]['species']
        description = tup[1]['description']
        temp = Strain(index=index,
                      name=name,
                      leafly=leafly,
                      species=species,
                      description=description)
        db.session.add(temp)
    db.session.commit()
Beispiel #9
0
def populate_test_strains(*, strain_dict):
    sample_strains = [i for i in strain_dict.items()][:10]
    strains_list = []
    for strain in sample_strains:
        index = strain[0]
        name = strain[1]['name']
        leafly = 'https://www.leafly.com' + strain[1]['link']
        species = strain[1]['species']
        description = strain[1]['description']
        temp = Strain(index=index,
                      name=name,
                      leafly=leafly,
                      species=species,
                      description=description)
        # db.session.add(temp)
        strains_list.append(temp)
    return strains_list
Beispiel #10
0
def strains_list():
    page = request.args.get('page', 1, type=int)
    filter_ = request.args.get('filter')
    q = request.args.get('q')

    if filter_ == 'tried':
        title = 'Tried Strains'
        strains = current_user.tried.paginate(
            page, current_app.config['STRAINS_PER_PAGE'], False)
        prev_url, next_url = helper.create_prev_next_urls(strains,
                                                          filt=filter_)

    elif filter_ == 'not_tried':
        title = 'Not Tried Strains'
        strains = current_user.has_not_tried().paginate(
            page, current_app.config['STRAINS_PER_PAGE'], False)
        prev_url, next_url = helper.create_prev_next_urls(strains,
                                                          filt=filter_)

    elif filter_ == 'search':
        if q:
            title = 'Search: ' + q
            strains = Strain.search(q).paginate(
                page, current_app.config['STRAINS_PER_PAGE'], False)
            prev_url, next_url = helper.create_prev_next_urls(strains,
                                                              filt=filter_,
                                                              q=q)
        else:
            return redirect(url_for('main.strains_list'))

    else:
        title = 'Strains'
        strains = Strain.query.paginate(page,
                                        current_app.config['STRAINS_PER_PAGE'],
                                        False)
        prev_url, next_url = helper.create_prev_next_urls(strains)

    return render_template('strains_list.html',
                           title=title,
                           strains_list=strains.items,
                           next_url=next_url,
                           prev_url=prev_url)
Beispiel #11
0
def name_to_index():
    strain_name = request.args.get("name")
    strain_index = Strain.name_to_index(strain_name).first_or_404()
    return redirect(url_for('main.some_strain', strain_index=strain_index[0]))
Beispiel #12
0
    def test_create_prev_next_urls(self):
        strains = helper.populate_test_strains(strain_dict=donezo.done)
        db.session.add_all(strains)

        user = User()
        user.username = '******'
        user.hash_password('pass')
        db.session.add(user)

        strains_to_try = Strain.query.limit(5).all()
        for strain in strains_to_try:
            user.try_strain(strain)

        # db.session.commit()
        all_strains = Strain.query.paginate(1, 1, False)
        tried_strains = user.tried.paginate(1, 1, False)
        searched_strains = Strain.search('10').paginate(1, 1, False)

        # All Strains test
        prev_url, next_url = helper.create_prev_next_urls(all_strains)
        self.assertIsNone(prev_url)
        self.assertEqual(next_url, '/strains?page=2')

        all_strains = all_strains.next()
        prev_url, next_url = helper.create_prev_next_urls(all_strains)
        self.assertEqual(prev_url, '/strains?page=1')
        self.assertEqual(next_url, '/strains?page=3')

        while all_strains.has_next:
            all_strains = all_strains.next()

        prev_url, next_url = helper.create_prev_next_urls(all_strains)
        self.assertIsNone(next_url)
        self.assertEqual(prev_url, '/strains?page=9')

        # Tried Strains Test
        prev_url, next_url = helper.create_prev_next_urls(tried_strains, filt='tried')
        self.assertIsNone(prev_url)
        self.assertEqual(next_url, '/strains?filter=tried&page=2')

        tried_strains = tried_strains.next()
        prev_url, next_url = helper.create_prev_next_urls(tried_strains, filt='tried')
        self.assertEqual(prev_url, '/strains?filter=tried&page=1')
        self.assertEqual(next_url, '/strains?filter=tried&page=3')

        while tried_strains.has_next:
            tried_strains = tried_strains.next()

        prev_url, next_url = helper.create_prev_next_urls(tried_strains, filt='tried')
        self.assertIsNone(next_url)
        self.assertEqual(prev_url, '/strains?filter=tried&page=4')

        # Searched Strains Test
        prev_url, next_url = helper.create_prev_next_urls(searched_strains, filt='search', q='10')
        self.assertIsNone(prev_url)
        self.assertEqual(next_url, '/strains?filter=search&q=10&page=2')

        searched_strains = searched_strains.next()
        prev_url, next_url = helper.create_prev_next_urls(searched_strains, filt='search', q=10)
        self.assertEqual(prev_url, '/strains?filter=search&q=10&page=1')
        self.assertEqual(next_url, '/strains?filter=search&q=10&page=3')

        searched_strains = searched_strains.next()
        prev_url, next_url = helper.create_prev_next_urls(searched_strains, filt='search', q=10)
        self.assertEqual(prev_url, '/strains?filter=search&q=10&page=2')
        self.assertIsNone(next_url)
Beispiel #13
0
    def test_initial_query(self):
        strains = helper.populate_test_strains(strain_dict=donezo.done)
        db.session.add_all(strains)

        self.assertEqual(Strain.initial_query('og').all(), [])
        self.assertEqual(Strain.initial_query('1').all(), [('1024',), ('10th Planet',), ('12 Year OG',), ('13 Dawgs',)])