示例#1
0
 def set_emailAction(self,email):
     if self.user:
         current_email=self.user.getEmail()
         if current_email!=email:
             user=User().get_by_auth_id(self.user.username)
             user.email_address=email
             user.put()
             
     model={"email":email}
     return model 
class RequestManagerTest(unittest.TestCase):
    def setUp(self):
        # First, create an instance of the Testbed class.
        self.testbed = testbed.Testbed()
        # Then activate the testbed, which prepares the service stubs for use.
        self.testbed.activate()
        # Next, declare which service stubs you want to use.
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        self.testbed.init_taskqueue_stub()
        self.user1 = User(name="User1_name",
                          last_name="User1_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user1.put()
        self.user2 = User(name="User2_name",
                          last_name="User2_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user2.put()
        self.user3 = User(name="User3_name",
                          last_name="User3_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user3.put()
        self.user4 = User(name="User4_name",
                          last_name="User4_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user4.put()

    def tearDown(self):
        self.testbed.deactivate()

    def test_initiate(self):
        #Activity Created by user1
        success, message, activity_created = EventManager.create(
            category='Category1',
            duration='40',
            expiration='180',
            username=self.user1.username,
            building_name='building_1',
            min_number_of_people_to_join='1',
            max_number_of_people_to_join='2',
            note='note1')
        activity_manager = EventManager.get(activity_created.key.urlsafe())
        self.assertEqual(activity_created.key.urlsafe(),
                         activity_manager.get_event().key.urlsafe())
        (success,
         request) = RequestManager.initiate(activity_key=activity_created.key,
                                            requester_key=self.user2.key)
        self.assertIsNotNone(request, "Failed to initiate request")
        request_manager = RequestManager.get(request.key.urlsafe())
        self.assertIsNotNone(request_manager, "Failed to load request manager")
        self.assertEqual(True, request_manager.can_accept(self.user1.username))

    def test_approve(self):
        #Activity Created by user1
        success, message, activity_created = EventManager.create(
            category='Category1',
            duration='40',
            expiration='180',
            username=self.user1.username,
            building_name='building_1',
            min_number_of_people_to_join='1',
            max_number_of_people_to_join='2',
            note='note1')
        activity_manager = EventManager.get(activity_created.key.urlsafe())
        self.assertEqual(activity_created.key.urlsafe(),
                         activity_manager.get_event().key.urlsafe())
        (success,
         request) = RequestManager.initiate(activity_key=activity_created.key,
                                            requester_key=self.user2.key)
        self.assertIsNotNone(request, "Failed to initiate request")
        request_manager = RequestManager.get(request.key.urlsafe())
        self.assertIsNotNone(request_manager, "Failed to load request manager")
        self.assertEqual(True, request_manager.can_accept(self.user1.username))
        request_manager.accept()
        self.assertEqual(request.ACCEPTED, request.status)
        self.assertEqual(1, activity_manager.spots_remaining())
class EventManagerTest(unittest.TestCase):
    def setUp(self):
        # First, create an instance of the Testbed class.
        self.testbed = testbed.Testbed()
        # Then activate the testbed, which prepares the service stubs for use.
        self.testbed.activate()
        # Next, declare which service stubs you want to use.
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        self.testbed.init_taskqueue_stub()
        self.user1 = User(name="User1_name",
                          last_name="User1_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user1.put()
        self.user2 = User(name="User2_name",
                          last_name="User2_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user2.put()
        self.user3 = User(name="User3_name",
                          last_name="User3_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user3.put()
        self.user4 = User(name="User4_name",
                          last_name="User4_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user4.put()

    def tearDown(self):
        self.testbed.deactivate()

    def test_create_specific_interest(self):

        EventManager.create(category='Category1',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_1',
                            min_number_of_people_to_join='1',
                            max_number_of_people_to_join='2',
                            note='note1')
        EventManager.create(category='Category2',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_1',
                            min_number_of_people_to_join='1',
                            max_number_of_people_to_join='2',
                            note='note2')
        EventManager.create(category='Category3',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_1',
                            min_number_of_people_to_join='1',
                            max_number_of_people_to_join='2',
                            note='note2')
        EventManager.create(category='Category4',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_2',
                            min_number_of_people_to_join='1',
                            max_number_of_people_to_join='2',
                            note='note3')
        EventManager.create(category='Category5',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_2',
                            min_number_of_people_to_join='1',
                            max_number_of_people_to_join='2',
                            note='note4')
        self.assertEqual(3,
                         len(Event.get_activities_by_building('building_1')))
        self.assertEqual(2,
                         len(Event.get_activities_by_building('building_2')))

    def test_load_activity_mgr(self):
        success, message, activity_created = EventManager.create(
            category='Category1',
            duration='40',
            expiration='180',
            username='******',
            building_name='building_1',
            min_number_of_people_to_join='1',
            max_number_of_people_to_join='2',
            note='note1')
        activity_from_activity_mgr = EventManager.get(
            activity_created.key.urlsafe()).get_event()
        self.assertEqual(activity_created.key.urlsafe(),
                         activity_from_activity_mgr.key.urlsafe())
        self.assertEqual(Event.FORMING, activity_from_activity_mgr.status)

    def test_join(self):
        success, message, activity_created = EventManager.create(
            category='Category1',
            duration='40',
            expiration='180',
            username=self.user1.username,
            building_name='building_1',
            min_number_of_people_to_join='1',
            max_number_of_people_to_join='2',
            note='note1')
        activity_manager = EventManager.get(activity_created.key.urlsafe())
        self.assertEqual(activity_created.key.urlsafe(),
                         activity_manager.get_event().key.urlsafe())
        self.assertEqual(True,
                         activity_manager.can_join(self.user2.key.id())[0])
        activity_manager.connect(self.user2.key.id())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        self.assertEqual(False,
                         activity_manager.can_join(self.user2.key.id())[0])
        self.assertEqual(True,
                         activity_manager.can_join(self.user3.key.id())[0])
        activity_manager.connect(self.user3.key.id())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        self.assertEqual(False,
                         activity_manager.can_join(self.user4.key.id())[0])
        self.assertEqual(2, activity_manager.companion_count())
        get_interest_details(activity_created.key.urlsafe())
        #Now have 3 Unjoin activity
        activity_manager.unjoin(self.user3.key.id())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        self.assertEqual(1, activity_manager.companion_count())
        #Now check if User4 can join
        self.assertEqual(True,
                         activity_manager.can_join(self.user4.key.id())[0])
        activity_manager.connect(self.user4.key.id())
        self.assertEqual(2, activity_manager.companion_count())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        activity_manager.unjoin(self.user4.key.id())
        activity_manager.unjoin(self.user2.key.id())
        self.assertEqual(Event.FORMING, activity_created.status)
        self.assertEqual(0, activity_manager.companion_count())

    def test_set_time_interest(self):

        interest_start_time = datetime.utcnow() + timedelta(hours=2)
        success, message, activity_created = EventManager.create(
            category='Category1',
            start_time=interest_start_time,
            username=self.user1.username,
            building_name='building_1',
            min_number_of_people_to_join='1',
            max_number_of_people_to_join='2',
            meeting_place='meeting_place',
            activity_location='activity_location')
        activity_manager = EventManager.get(activity_created.key.urlsafe())
        self.assertEqual(activity_created.key.urlsafe(),
                         activity_manager.get_event().key.urlsafe())
        self.assertEqual(True,
                         activity_manager.can_join(self.user2.key.id())[0])
        activity_manager.connect(self.user2.key.id())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        self.assertEqual(False,
                         activity_manager.can_join(self.user2.key.id())[0])
        self.assertEqual(True,
                         activity_manager.can_join(self.user3.key.id())[0])
        activity_manager.connect(self.user3.key.id())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        self.assertEqual(False,
                         activity_manager.can_join(self.user4.key.id())[0])
        self.assertEqual(2, activity_manager.companion_count())
        get_interest_details(activity_created.key.urlsafe())
        #Now have 3 Unjoin activity
        activity_manager.unjoin(self.user3.key.id())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        self.assertEqual(1, activity_manager.companion_count())
        #Now check if User4 can join
        self.assertEqual(True,
                         activity_manager.can_join(self.user4.key.id())[0])
        activity_manager.connect(self.user4.key.id())
        self.assertEqual(2, activity_manager.companion_count())
        self.assertEqual(Event.FORMED_OPEN, activity_created.status)
        activity_manager.unjoin(self.user4.key.id())
        activity_manager.unjoin(self.user2.key.id())
        self.assertEqual(Event.FORMING, activity_created.status)
        self.assertEqual(0, activity_manager.companion_count())

    def test_create_flex_interest(self):

        EventManager.create(category='Category1',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_1',
                            note='test_note')
        EventManager.create(category='Category2',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_1',
                            note='test_note')
        EventManager.create(category='Category3',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_1',
                            note='test_note')
        EventManager.create(category='Category4',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_2',
                            note='test_note')
        EventManager.create(category='Category5',
                            duration='40',
                            expiration='180',
                            username='******',
                            building_name='building_2',
                            note='test_note')
        self.assertEqual(3, len(Event.get_interests_by_building('building_1')))
        self.assertEqual(2, len(Event.get_interests_by_building('building_2')))

    def test_load_interest_mgr(self):
        success, message, interest_created = EventManager.create(
            category='Category1',
            duration='40',
            expiration='180',
            username='******',
            building_name='building_1',
            note='test_note')
        interest_from_interest_mgr = EventManager.get(
            interest_created.key.urlsafe()).get_event()

        self.assertEqual(interest_created.key.urlsafe(),
                         interest_from_interest_mgr.key.urlsafe())
        self.assertEqual(Event.FORMING, interest_from_interest_mgr.status)

    def test_join_flex_interest(self):

        success, message, interest_created = EventManager.create(
            category='Category1',
            duration='40',
            expiration='180',
            username=self.user1.username,
            building_name='building_1',
            note='test_note')
        interest_manager = EventManager.get(interest_created.key.urlsafe())
        interest_from_interest_mgr = interest_manager.get_event()
        self.assertEqual(interest_created.key.urlsafe(),
                         interest_from_interest_mgr.key.urlsafe())
        self.assertEqual(Event.FORMING, interest_from_interest_mgr.status)
        interest_manager.join_flex_interest(self.user2.key.id(),
                                            min_number_of_people_to_join='2',
                                            max_number_of_people_to_join='3')
        self.assertEqual(Event.EVENT_TYPE_SPECIFIC_INTEREST,
                         interest_created.type)
        self.assertEqual(Event.FORMING, interest_created.status)
        self.assertEqual(1, interest_manager.companion_count())
        interest_manager.connect(self.user3.key.id())
        self.assertEqual(Event.FORMED_OPEN, interest_created.status)
        self.assertEqual(2, interest_manager.companion_count())
示例#4
0
class MatchMakerTest(unittest.TestCase):
    def setUp(self):
        # First, create an instance of the Testbed class.
        self.testbed = testbed.Testbed()
        # Then activate the testbed, which prepares the service stubs for use.
        self.testbed.activate()
        # Next, declare which service stubs you want to use.
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        self.testbed.init_taskqueue_stub()
        self.user1 = User(name="User1_name",
                          last_name="User1_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user1.put()
        self.user2 = User(name="User2_name",
                          last_name="User2_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user2.put()
        self.user3 = User(name="User3_name",
                          last_name="User3_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user3.put()
        self.user4 = User(name="User4_name",
                          last_name="User4_lastname",
                          email="*****@*****.**",
                          password="******",
                          username="******",
                          building="building_1")
        self.user4.put()

    def tearDown(self):
        self.testbed.deactivate()

    def test_match_making(self):
        interest_list = []
        activity_list = []
        #Create some interests
        interest_list.append(
            EventManager.create(category='Play date',
                                duration='40',
                                expiration='180',
                                username='******',
                                building_name='building1',
                                note='test_node')[2])
        interest_list.append(
            EventManager.create(category='Play date',
                                duration='40',
                                expiration='180',
                                username='******',
                                building_name='building1',
                                note='test_node')[2])
        interest_list.append(
            EventManager.create(category='Play date',
                                duration='20',
                                expiration='180',
                                username='******',
                                building_name='building1',
                                note='test_node')[2])

        #Create some activities
        activity_list.append(
            EventManager.create(category='Play date',
                                duration='40',
                                expiration='180',
                                username='******',
                                building_name='building1',
                                ip='127.0.0.1',
                                min_number_of_people_to_join='1',
                                max_number_of_people_to_join='1',
                                note='meet me at shadyside')[2])
        activity_list.append(
            EventManager.create(category='Stroller walk',
                                duration='40',
                                expiration='180',
                                username='******',
                                building_name='building1',
                                ip='127.0.0.1',
                                min_number_of_people_to_join='1',
                                max_number_of_people_to_join='1',
                                note='meet me at shadyside')[2])

        #Assert if interests and activities are created fine
        self.assertEqual(
            3, len(Event.get_active_interests_by_category('Play date')))
        self.assertEqual(
            1, len(Event.get_active_activities_by_category('Stroller walk')))
        self.assertEqual(
            1, len(Event.get_active_activities_by_category('Stroller walk')))

        match_list = MatchMaker.match_all()
        self.assertEqual(2, len(match_list))
        self.assertEqual(2, len(match_list['user1']))
        self.assertEqual(1, len(match_list['user2']))
        interest = EventManager.create(category='Stroller walk',
                                       duration='40',
                                       expiration='180',
                                       username='******',
                                       building_name='building1',
                                       note='test_node')[2]
        interest_list.append(interest)
        match_list = MatchMaker.match_interest_with_activities(
            interest.key.urlsafe())
        self.assertEqual(1, len(match_list))
        self.assertEqual(1, len(match_list['user1']))

        activity = EventManager.create(category='Stroller walk',
                                       duration='40',
                                       expiration='180',
                                       username='******',
                                       building_name='building1',
                                       ip='127.0.0.1',
                                       min_number_of_people_to_join='1',
                                       max_number_of_people_to_join='1',
                                       note='meet me at shadyside')[2]

        match_list = MatchMaker.match_activity_with_interests(
            activity.key.urlsafe())
        self.assertEqual(1, len(match_list))

        activity = EventManager.create(category='Play date',
                                       duration='20',
                                       expiration='180',
                                       username='******',
                                       building_name='building1',
                                       ip='127.0.0.1',
                                       min_number_of_people_to_join='1',
                                       max_number_of_people_to_join='1',
                                       note='meet me at shadyside')[2]

        match_list = MatchMaker.match_activity_with_interests(
            activity.key.urlsafe())
        self.assertEqual(2, len(match_list))
        self.assertEqual(2, len(match_list['user1']))