blob: d3d70eded77415776fed8983bc92b088afa52ddb [file] [log] [blame]
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +01001# Copyright 2023 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import unittest
6
7from google.appengine.ext import ndb
8from google.appengine.ext import testbed
9from redirect import redirect_custom_value
10
11
12class TestRedirectCustomValue(unittest.TestCase):
13
14 def setUp(self):
15 self.testbed = testbed.Testbed()
16 self.testbed.activate()
17 self.testbed.init_datastore_v3_stub()
18 self.testbed.init_memcache_stub()
19 ndb.get_context().clear_cache()
20
21 def tearDown(self):
22 self.testbed.deactivate()
23
24 def testGetRedirectCustomValue(self):
25 redirectCustomValue = redirect_custom_value.RedirectCustomValue
26 redirectCustomValue(
27 ProjectName='a',
28 MonorailType='test',
29 MonorailValue='a',
30 RedirectType='t',
31 RedirectValue='v').put()
32
33 (t, v) = redirectCustomValue.Get('a', 'test', 'a')
34 self.assertEqual(t, 't')
35 self.assertEqual(v, 'v')
36
37 def testGetRedirectCustomValueWithoutValue(self):
38 redirectCustomValue = redirect_custom_value.RedirectCustomValue
39
40 (t, v) = redirectCustomValue.Get('a', 'test', 'a')
41 self.assertEqual(t, None)
42 self.assertEqual(v, None)
43
44 def testGetRedirectCustomValueOnlyReturnTheFirstMatch(self):
45 # There should be only one match in db.
46 # This may change if we decided to support mutiple value mapping.
47 redirectCustomValue = redirect_custom_value.RedirectCustomValue
48 redirectCustomValue(
49 ProjectName='a',
50 MonorailType='test',
51 MonorailValue='a',
52 RedirectType='t1',
53 RedirectValue='v1').put()
54 redirectCustomValue(
55 ProjectName='a',
56 MonorailType='test',
57 MonorailValue='a',
58 RedirectType='t2',
59 RedirectValue='v2').put()
60 (t, v) = redirectCustomValue.Get('a', 'test', 'a')
61 self.assertEqual(t, 't1')
62 self.assertEqual(v, 'v1')