1#!/usr/bin/env python
2# Copyright 2014 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import json
7import os
8import unittest
9
10from server_instance import ServerInstance
11from test_file_system import TestFileSystem
12from test_util import Server2Path
13
14
15def _ReadLocalFile(filename):
16  base_path = Server2Path('test_data', 'samples_data_source')
17  with open(os.path.join(base_path, filename), 'r') as f:
18    return f.read()
19
20
21class _FakeCache(object):
22  def __init__(self, obj):
23    self._cache = obj
24
25  def GetFromFileListing(self, _):
26    getter = lambda: 0
27    getter.Get = lambda: self._cache
28    return getter
29
30
31class SamplesModelSourceTest(unittest.TestCase):
32  def setUp(self):
33    server_instance = ServerInstance.ForTest(file_system=TestFileSystem({}))
34    self._samples_model = server_instance.platform_bundle.GetSamplesModel(
35        'apps')
36    self._samples_model._samples_cache = _FakeCache(json.loads(_ReadLocalFile(
37        'samples.json')))
38
39  def testFilterSamples(self):
40    self.assertEquals(json.loads(_ReadLocalFile('expected.json')),
41                      self._samples_model.FilterSamples('bobaloo'))
42
43if __name__ == '__main__':
44  unittest.main()
45