Esempio n. 1
0
 def test_show_creation_with_duplicate_url(self):
     url = self.random()
     hamlet = Show(company=self.evam, name="Hamlet spoof", url=url)
     hamlet.put()
     
     same_url_try = Show(company=self.evam, name="Hamlet other url try", url=url)
     self.assertRaises(ValueError, same_url_try.put)        
Esempio n. 2
0
 def test_cascading_deletes(self):
     company = Company(name=self.random(), url = self.random())
     company.put()
     
     show_url = self.random()
     show = Show(name= self.random(), url = show_url, company = company)
     show.put()
     
     self.assertTrue(Show.get_by_url(show_url))
     company.delete()
     self.assertFalse(Show.get_by_url(show_url))
Esempio n. 3
0
class ExtendedTestCase(unittest.TestCase): 
    public_app = TestApp(public_main.createApp())
    admin_app = TestApp(admin_main.createApp())
    _login_stubs = StubOutForTesting()
    stubs = StubOutForTesting()
    
    def random(self):
        import hashlib, time
        return hashlib.md5((time.clock()*random.random()).__str__()).hexdigest()
    
    def setUp(self):
        self.make_test_data()
        self.login()
        self.mox = Mox()
      
    def tearDown(self):
        self.logout()
        self.stubs.UnsetAll()
        for model in [City, Company, Performance, Show, Venue]:
            for datum in model.all():
                datum.delete()

    def login(self, user="******", admin=True):
        self._login_stubs.Set(users, 'get_current_user', lambda user = user : users.User(user))
        self._login_stubs.Set(users, 'is_current_user_admin', lambda admin = admin : admin)

    def logout(self):
        self._login_stubs.UnsetAll()

    def make_test_data(self):
        now = datetime.datetime.now()
        self.now = datetime.datetime(year = now.date().year, month = now.date().month, day = now.date().day, hour = now.time().hour, minute = now.time().minute)
        self.one_day_later = self.now + datetime.timedelta(days=1)
        self.two_days_later = self.now + datetime.timedelta(days=2)
        self.three_days_later = self.now + datetime.timedelta(days=3)
        
        self.evam = Company(name='Evam Theatre Company', url='evam')
        self.evam.put()
        self.hamlet = Show(name='Hamlet', url='hamlet', company=self.evam)
        self.hamlet.put()
        self.chennai = City(name='Chennai', url='chennai')
        self.chennai.put()
        self.bangalore = City(name='Bangalore', url='bangalore')
        self.bangalore.put()
        self.lady_andal = Venue(name='Lady Andal', url='lady_andal', city=self.chennai)
        self.lady_andal.put()
        
    def make_performance(self, show, venue, dt):
        perf = Performance(show=show, venue=venue, utc_date_time=dt)
        perf.put()
        return perf
Esempio n. 4
0
    def post(self):
        show = Show()
        # show.key=ndb.Key('Show', int(request.form['id']))
        show.event_id = ndb.Key('Event', int(request.form['event_id']))
        show.client_id = ndb.Key('Client', int(request.form['client_id']))
        show.screen_id = ndb.Key('Screen_Layout', int(request.form['screen_id']))
        show.name = request.form['name']
        show.datetime = datetime.datetime.now()
        screen = ndb.Key('Screen_Layout', int(request.form['screen_id']))
        seats = screen.get().seats
        print type(seats)
        updated_seats = {}
        for each in seats:
            updated_seats[str(each['row'])+'-'+str(each['column'])]= {'status':4}
        show.seats = updated_seats
        res = show.put()

        # The below paragraph should be deleted later
        offset_id = 21
        prices = []
        print show.screen_id
        categories = Category.query(Category.screen_id == show.screen_id).fetch()
        for category in categories:
            price1 = Price(id=show.key.id() + offset_id, show_id=show.key, category_id=category.key, amount=500)
            offset_id += 1
            prices.append(price1)
        print "###"
        print prices
        for price in prices:
            price.put()

        # The above paragraph should be deleted later

        return jsonify({'id': res.id(), 'message': "Success"})
Esempio n. 5
0
    def post(self):
        # Got client ID from environ
        user_id = request.environ['USER_ID']
        client_id = user_id.get().detail_id

        show = Show()
        show.event_id = ndb.Key('Event', int(request.json['event_id']))
        show.client_id = client_id  # Fetched from the environ values.
        show.screen_id = ndb.Key('Screen_Layout',
                                 int(request.json['screen_id']))
        show.datetime = datetime.strptime(request.json['datetime'],
                                          "%d-%m-%Y %H:%M")
        screen = ndb.Key('Screen_Layout', int(request.json['screen_id']))
        seats = screen.get().seats
        updated_seats = {}
        for each in seats:
            updated_seats[str(each['row']) + '-' + str(each['column'])] = {
                'status': 4
            }
        show.seats = updated_seats

        categories_price = request.json['category-price']
        res = show.put()

        # Creating a price for each request
        try:
            for each in categories_price:
                price = Price(show_id=res,
                              category_id=ndb.Key('Category',
                                                  int(each['category'])),
                              amount=int(each['price']))
                print '########'
                print type(price.category_id.id())
                price.put()

        except:
            return jsonify({"code": 500, "message": "server error"})

        return jsonify({"code": 200, "id": res.id(), "message": "Success"})
Esempio n. 6
0
 def test_get_show_by_url(self):
     url = self.random()
     hamlet = Show(company=self.evam, name=self.random(), url=url)
     hamlet.put()
     self.assertEqual(hamlet.name, self.evam.get_show_by_url(url).name)