Skip to content

Commit

Permalink
Rework sponsr filter to test for true/false
Browse files Browse the repository at this point in the history
  • Loading branch information
evilmoses authored and billyjbryant committed Feb 25, 2018
1 parent b5e1f48 commit 48fea9e
Show file tree
Hide file tree
Showing 6 changed files with 123 additions and 29 deletions.
15 changes: 7 additions & 8 deletions PokeAlarm/Filters/EggFilter.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Standard Library Imports
import operator
import re
# 3rd Party Imports
# Local Imports
from . import BaseFilter
Expand Down Expand Up @@ -53,16 +52,16 @@ def __init__(self, name, data):
GymUtils.create_regex, 'gym_name_excludes', data))

# Gym sponsor
self.gym_sponsor_index_contains = self.evaluate_attribute(
event_attribute='gym_sponsor', eval_func=GymUtils.match_regex_dict,
limit=BaseFilter.parse_as_set(
re.compile, 'gym_sponsor_index_contains', data))
self.is_sponsor = self.evaluate_attribute( # f.sponsor > 0
event_attribute='gym_sponsor', eval_func=GymUtils.is_sponsor,
limit=BaseFilter.parse_as_type(
bool, 'is_sponsor', data))

# Gym park
self.gym_park_contains = self.evaluate_attribute( # f.gp matches e.gp
event_attribute='gym_park', eval_func=GymUtils.match_regex_dict,
limit=BaseFilter.parse_as_set(
re.compile, 'gym_park_contains', data))
GymUtils.create_regex, 'gym_park_contains', data))

# Team Info
self.old_team = self.evaluate_attribute( # f.ctis contains m.cti
Expand Down Expand Up @@ -107,8 +106,8 @@ def to_dict(self):
settings['gym_name_matches'] = self.gym_name_contains

# Gym Sponsor
if self.gym_sponsor_index_contains is not None:
settings['gym_sponsor_matches'] = self.gym_sponsor_index_contains
if self.is_sponsor is not None:
settings['ym_is_sponsor'] = self.is_sponsor

# Gym Park
if self.gym_park_contains is not None:
Expand Down
17 changes: 8 additions & 9 deletions PokeAlarm/Filters/RaidFilter.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Standard Library Imports
import operator
import re
# 3rd Party Imports
# Local Imports
from . import BaseFilter
Expand Down Expand Up @@ -80,16 +79,16 @@ def __init__(self, name, data):
GymUtils.create_regex, 'gym_name_excludes', data))

# Gym sponsor
self.gym_sponsor_index_contains = self.evaluate_attribute(
event_attribute='gym_sponsor', eval_func=GymUtils.match_regex_dict,
limit=BaseFilter.parse_as_set(
re.compile, 'gym_sponsor_index_contains', data))
self.is_sponsor = self.evaluate_attribute( # f.sponsor > 0
event_attribute='gym_sponsor', eval_func=GymUtils.is_sponsor,
limit=BaseFilter.parse_as_type(
bool, 'is_sponsor', data))

# Gym park
self.gym_park_contains = self.evaluate_attribute(
self.gym_park_contains = self.evaluate_attribute( # f.gp matches e.gp
event_attribute='gym_park', eval_func=GymUtils.match_regex_dict,
limit=BaseFilter.parse_as_set(
re.compile, 'gym_park_contains', data))
GymUtils.create_regex, 'gym_park_contains', data))

# Team Info
self.old_team = self.evaluate_attribute( # f.ctis contains m.cti
Expand Down Expand Up @@ -146,8 +145,8 @@ def to_dict(self):
settings['gym_name_matches'] = self.gym_name_contains

# Gym Sponsor
if self.gym_sponsor_index_contains is not None:
settings['gym_sponsor_matches'] = self.gym_sponsor_index_contains
if self.is_sponsor is not None:
settings['ym_is_sponsor'] = self.is_sponsor

# Gym Park
if self.gym_park_contains is not None:
Expand Down
7 changes: 7 additions & 0 deletions PokeAlarm/Utilities/GymUtils.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,10 @@ def not_match_regex_dict(reg_exs, name):
if reg_ex.search(name):
return False
return True


def is_sponsor(sponsor_filter, sponsor):
if sponsor_filter:
return sponsor > 0
else:
return sponsor == 0
48 changes: 46 additions & 2 deletions tests/filters/test_egg_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ def test_gym_names(self):
settings = {"gym_name_contains": ["pass"]}
egg_filter = Filters.EggFilter('filter1', settings)

# Generate events that should pass
# Generate events that should pass
pass1 = Events.EggEvent(generate_egg({"name": "pass1"}))
pass2 = Events.EggEvent(generate_egg({"name": "2pass"}))
Expand All @@ -58,6 +57,7 @@ def test_gym_names(self):
for e in [fail1, fail2, fail3]:
self.assertFalse(egg_filter.check_event(e))

<<<<<<< HEAD
def test_gym_name_excludes(self):
# Create the filters
settings = {"gym_name_excludes": ["fail"]}
Expand All @@ -73,6 +73,29 @@ def test_gym_name_excludes(self):
event = Events.EggEvent(generate_egg({"name": r}))
self.assertFalse(egg_filter.check_event(event))

def test_gym_park(self):
# Create the filters
settings = {"gym_park_contains": ["pass"]}
egg_filter = Filters.EggFilter('filter1', settings)

# Generate events that should pass
pass1 = Events.EggEvent(generate_egg({"park": "pass1"}))
pass2 = Events.EggEvent(generate_egg({"park": "2pass"}))
pass3 = Events.EggEvent(generate_egg({"park": "3pass3"}))

# Test passing events
for e in [pass1, pass2, pass3]:
self.assertTrue(egg_filter.check_event(e))

# Generate events that should fail
fail1 = Events.EggEvent(generate_egg({"park": "fail1"}))
fail2 = Events.EggEvent(generate_egg({"park": "failpas"}))
fail3 = Events.EggEvent(generate_egg({"park": "pasfail"}))

# Test failing events
for e in [fail1, fail2, fail3]:
self.assertFalse(egg_filter.check_event(e))

def test_current_team(self):
# Create the filters
settings = {"current_teams": [1, "2", "Instinct"]}
Expand All @@ -93,6 +116,25 @@ def test_current_team(self):
for e in [fail1]:
self.assertFalse(egg_filter.check_event(e))

def test_is_sponsor(self):
# Create the filters
settings = {"is_sponsor": False}
egg_filter = Filters.EggFilter('filter1', settings)

# Generate events that should pass
pass1 = Events.EggEvent(generate_egg({"sponsor": 0}))

# Test passing events
for e in [pass1]:
self.assertTrue(egg_filter.check_event(e))

# Generate events that should fail
fail1 = Events.EggEvent(generate_egg({"sponsor": 4}))

# Test failing events
for e in [fail1]:
self.assertFalse(egg_filter.check_event(e))

def test_missing_info1(self):
# Create the filters
settings = {"max_dist": "inf", "is_missing_info": True}
Expand Down Expand Up @@ -189,7 +231,9 @@ def generate_egg(values):
"end": 1499246052,
"level": 5,
"latitude": 37.7876146,
"longitude": -122.390624
"longitude": -122.390624,
"sponsor": 4,
"gym_park": "Test Park"
}
egg.update(values)
return egg
Expand Down
43 changes: 43 additions & 0 deletions tests/filters/test_raid_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ def test_gym_names(self):
for e in [fail1, fail2, fail3]:
self.assertFalse(raid_filter.check_event(e))

<<<<<<< HEAD
def test_gym_name_excludes(self):
# Create the filters
settings = {"gym_name_excludes": ["fail"]}
Expand All @@ -137,6 +138,29 @@ def test_gym_name_excludes(self):
event = Events.RaidEvent(generate_raid({"name": r}))
self.assertFalse(raid_filter.check_event(event))

def test_gym_park(self):
# Create the filters
settings = {"gym_park_contains": ["pass"]}
raid_filter = Filters.RaidFilter('filter1', settings)

# Generate events that should pass
pass1 = Events.EggEvent(generate_raid({"park": "pass1"}))
pass2 = Events.EggEvent(generate_raid({"park": "2pass"}))
pass3 = Events.EggEvent(generate_raid({"park": "3pass3"}))

# Test passing events
for e in [pass1, pass2, pass3]:
self.assertTrue(raid_filter.check_event(e))

# Generate events that should fail
fail1 = Events.EggEvent(generate_raid({"park": "fail1"}))
fail2 = Events.EggEvent(generate_raid({"park": "failpas"}))
fail3 = Events.EggEvent(generate_raid({"park": "pasfail"}))

# Test failing events
for e in [fail1, fail2, fail3]:
self.assertFalse(raid_filter.check_event(e))

def test_current_team(self):
# Create the filters
settings = {"current_teams": [1, "2", "Instinct"]}
Expand All @@ -157,6 +181,25 @@ def test_current_team(self):
for e in [fail1]:
self.assertFalse(raid_filter.check_event(e))

def test_is_sponsor(self):
# Create the filters
settings = {"is_sponsor": False}
raid_filter = Filters.RaidFilter('filter1', settings)

# Generate events that should pass
pass1 = Events.RaidEvent(generate_raid({"sponsor": 0}))

# Test passing events
for e in [pass1]:
self.assertTrue(raid_filter.check_event(e))

# Generate events that should fail
fail1 = Events.RaidEvent(generate_raid({"sponsor": 4}))

# Test failing events
for e in [fail1]:
self.assertFalse(raid_filter.check_event(e))

def test_missing_info1(self):
# Create the filters
settings = {"max_dist": "inf", "is_missing_info": True}
Expand Down
22 changes: 12 additions & 10 deletions tools/webhook_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,30 +125,32 @@ def set_init(webhook_type):
"type": "raid",
"message": {
"gym_id": 0,
"gym_name": "unknown",
"name": "Test gym",
"team": 1,
"park": None,
"sponsor": 4,
"sponsor": 0,
"level": 5,
"latitude": 37.7876146,
"longitude": -122.390624
"longitude": -122.390624,
}
}
elif webhook_type == whtypes["5"]:
payloadr = {
"type": "raid",
"message": {
"gym_id": 0,
"gym_name": "unknown",
"park": "Test Park",
"sponsor": 4,
"name": "Test gym",
"team": 1,
"park": None,
"sponsor": 0,
"weather": 5,
"pokemon_id": 150,
"cp": 12345,
"move_1": 123,
"move_2": 123,
"level": 5,
"latitude": 37.7876146,
"longitude": -122.390624,
"weather": 0
"longitude": -122.390624
}
}

Expand Down Expand Up @@ -295,10 +297,10 @@ def get_and_validate_team():
payload = set_init(type)

print "What is the URL of where you would like to send the webhook? " \
+ "(default: http://127.0.0.1:4000)\n>",
+ "(default: http://127.0.0.1:4022)\n>",
url = raw_input()
if url == '' or url.isspace():
url = "http://127.0.0.1:4000"
url = "http://127.0.0.1:4022"
print "Assuming " + url + " as webhook URL"

print "Does location matter or do you use geofences? (Y/N)\n>",
Expand Down

0 comments on commit 48fea9e

Please sign in to comment.