Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a test for twitter search #24

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
__pycache__
.DS_Store
Empty file added __init__.py
Empty file.
60 changes: 3 additions & 57 deletions pySearch.py
Original file line number Diff line number Diff line change
@@ -1,68 +1,14 @@
#jrkong's command line searcher

import urllib
import argparse
import webbrowser
from search import Search

argparser = argparse.ArgumentParser()
argparser.add_argument("-s", action="append", help="Takes a query to search for and searches it.", nargs="*")
argparser.add_argument("-s", action="append", help="Takes a query to search for and searches it.", nargs="*", required=True)
argparser.add_argument("-e", "--engine", help="Changes the name or alias of a search engine and sets it as the search engine for the session", nargs="+")
argparser.add_argument("-d", "--domain", help="Changes the domain extention", nargs="+")

args = argparser.parse_args()

class Search:
def __init__(self, searchIn = None, engineIn = "google", domainIn = "ca"):
self.searchRaw = searchIn
self.searchQuery = ""
self.engine = engineIn
self.domain = domainIn
self.url = ""
self.searchString = "/search?q="
#end of constructor

#set search engine
def setEngine(self, engineIn):
self.engine = engineIn
#end of setEngine

#set domain engine
def setDomain(self, domainIn):
self.domain = domainIn
#end of setdomain

#set search Query
def setQuery(self, searchIn):
self.searchRaw = searchIn
#end of setQuery

def buildLink(self):
if self.engine == "amazon":
self.searchString = "/s/keywords="
self.searchQuery = "%20".join(self.searchRaw)
elif self.engine == "twitter":
self.searchQuery = " ".join(self.searchRaw)
else:
self.searchQuery = "+".join(self.searchRaw)
#end of search exceptions
self.url = "http://www." + self.engine + "." + self.domain + self.searchString + self.searchQuery
#end of link building

def openBrowser(self):
webbrowser.open_new_tab(self.url)
#end of openBrowser()
#end of Query

searchObj = Search()

if args.engine is not None:
searchObj.setEngine(args.engine[0])

if args.domain is not None:
searchObj.setDomain(args.domain[0])
#end of cmd args handling

for search in args.s:
searchObj.setQuery(search)
searchObj.buildLink()
searchObj.openBrowser()
searchObj.handleArgs(args)
60 changes: 60 additions & 0 deletions search.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@

import urllib
import webbrowser

class Search:
def __init__(self, searchIn = None, engineIn = "google", domainIn = "ca"):
self.searchRaw = searchIn
self.searchQuery = ""
self.engine = engineIn
self.domain = domainIn
self.url = ""
self.searchString = "/search?q="
#end of constructor

#set search engine
def setEngine(self, engineIn):
self.engine = engineIn
#end of setEngine

#set domain engine
def setDomain(self, domainIn):
self.domain = domainIn
#end of setdomain

#set search Query
def setQuery(self, searchIn):
self.searchRaw = searchIn
#end of setQuery

def buildLink(self):
if self.engine == "amazon":
self.searchString = "/s/keywords="
self.searchQuery = "%20".join(self.searchRaw)
elif self.engine == "twitter":
self.searchQuery = " ".join(self.searchRaw)
else:
self.searchQuery = "+".join(self.searchRaw)
#end of search exceptions
self.url = "http://www." + self.engine + "." + self.domain + self.searchString + self.searchQuery
return self.url
#end of link building

def openBrowser(self):
webbrowser.open_new_tab(self.url)
#end of openBrowser()

def handleArgs(self, args):
if args.engine is not None:
self.setEngine(args.engine[0])

if args.domain is not None:
self.setDomain(args.domain[0])

for search in args.s:
self.setQuery(search)
self.buildLink()
self.openBrowser()
#end of handleArgs

#end of Query
3 changes: 3 additions & 0 deletions tests/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# pySearch Tests

pySearch tests use the [pytest](https://docs.pytest.org) library which is not part of the default Python library. If this is the first time pytest tests are being run on the machine use `pip install -r requirements.txt` to install pytest and it's dependencies (NOTE your `pip` alias may differ based on your installation). Afterwards pySearch tests can be run with the `pytest` command when inside the pySearch directory.
Empty file added tests/__init__.py
Empty file.
1 change: 1 addition & 0 deletions tests/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pytest
10 changes: 10 additions & 0 deletions tests/test_search.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import pytest

from ..search import Search

def test_builtLink():
tmpSearch = Search()
tmpSearch.setEngine("amazon")
tmpSearch.setDomain("com")
tmpSearch.setQuery(["test", "query"])
assert tmpSearch.buildLink() == "http://www.amazon.com/s/keywords=test%20query"
11 changes: 11 additions & 0 deletions tests/test_search_google.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import pytest

from ..search import Search


def test_builtLink_google():
tempSearch = Search()
tempSearch.setEngine("google")
tempSearch.setDomain("com")
tempSearch.setQuery(["test","query"])
assert tempSearch.buildLink() == "http://www.google.com/search?q=test+query"
10 changes: 10 additions & 0 deletions tests/test_search_twitter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import pytest

from ..search import Search

def test_builtLink_twitter():
tempSearch = Search()
tempSearch.setEngine("twitter")
tempSearch.setDomain("com")
tempSearch.setQuery(["test","query"])
assert tempSearch.buildLink() == "http://www.twitter.com/search?q=test query"