Esempio n. 1
0
    def test_should_return_false__and_message_if_no_weight_is_provided(self):
        data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', 'county1', '']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        rtype = LocationType.objects.create(name="region", slug='region')
        dtype = LocationType.objects.create(name="district",
                                            slug='district',
                                            parent=rtype)
        ctype = LocationType.objects.create(name="county",
                                            slug='county',
                                            parent=dtype)
        region = Location.objects.create(name="region1", type=rtype)
        district = Location.objects.create(name="district1",
                                           parent=region,
                                           type=dtype)
        Location.objects.create(name="county1", parent=district, type=ctype)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(
            error_log.filter(row_number=1,
                             error='Selection probability must be a number.'))
Esempio n. 2
0
    def test_should_return_true__and_success_message_if_valid_csv_provided(
            self):
        data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', 'county1', '0.02']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1",
                                           tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        region = Location.objects.create(name="region2")
        district = Location.objects.create(name="district2",
                                           tree_parent=region)
        Location.objects.create(name="county2", tree_parent=district)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.failIf(
            error_log.filter(row_number=1,
                             error='Selection probability must be a number.'))

        self.failUnless(
            LocationWeight.objects.filter(location__name=data[1][2],
                                          selection_probability=data[1][3]))
    def test_not_csv_file(self):
        LocationWeight.objects.all().delete()
        self.filename = 'not_csv.xls'
        self.generate_non_csv_file(self.filename)
        file = open(self.filename,'rb')
        uploader = UploadLocationWeights(file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.failUnless(error_log.filter(error='Location weights not uploaded. %s is not a valid csv file.' % self.filename))
        self.failIf(LocationWeight.objects.all())
Esempio n. 4
0
    def setUp(self):
        self.data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', 'county1', '0.01'],
                     ['region2', 'district2', 'county2', '0.1']]

        self.write_to_csv('wb', self.data)
        self.filename = 'test.csv'
        _file = open(self.filename, 'rb')
        self.uploader = UploadLocationWeights(_file)
        self.survey = Survey.objects.create(name="Survey A")
    def test_should_return_false__and_message_if_location_is_blank(self):
        data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                ['region1', 'district1', '', '0.2']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1", tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        uploader = UploadLocationWeights(_file)
        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(error_log.filter(row_number=1,
                                         error='There is no county with name: , in district1.'))
Esempio n. 6
0
    def test_not_csv_file(self):
        LocationWeight.objects.all().delete()
        self.filename = 'not_csv.xls'
        self.generate_non_csv_file(self.filename)
        file = open(self.filename, 'rb')
        uploader = UploadLocationWeights(file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.failUnless(
            error_log.filter(
                error=
                'Location weights not uploaded. %s is not a valid csv file.' %
                self.filename))
        self.failIf(LocationWeight.objects.all())
    def setUp(self):
        self.data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                     ['region1', 'district1', 'county1', '0.01'],
                     ['region2', 'district2', 'county2', '0.1']]

        self.write_to_csv('wb', self.data)
        self.filename = 'test.csv'
        _file = open(self.filename, 'rb')
        self.uploader = UploadLocationWeights(_file)
        self.survey = Survey.objects.create(name="Survey A")
    def test_should_return_true__and_success_message_if_valid_csv_provided(self):
        data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                ['region1', 'district1', 'county1', '0.02']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1", tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        region = Location.objects.create(name="region2")
        district = Location.objects.create(name="district2", tree_parent=region)
        Location.objects.create(name="county2", tree_parent=district)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.failIf(error_log.filter(row_number=1, error='Selection probability must be a number.'))

        self.failUnless(LocationWeight.objects.filter(location__name=data[1][2], selection_probability=data[1][3]))
Esempio n. 9
0
    def test_should_return_false__and_message_if_location_is_blank(self):
        data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', '', '0.2']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1",
                                           tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        uploader = UploadLocationWeights(_file)
        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(
            error_log.filter(
                row_number=1,
                error='There is no county with name: , in district1.'))
class LocationWeightUploadHelper(BaseTest):
    def setUp(self):
        self.data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                     ['region1', 'district1', 'county1', '0.01'],
                     ['region2', 'district2', 'county2', '0.1']]

        self.write_to_csv('wb', self.data)
        self.filename = 'test.csv'
        _file = open(self.filename, 'rb')
        self.uploader = UploadLocationWeights(_file)
        self.survey = Survey.objects.create(name="Survey A")

    def tearDown(self):
        os.system("rm -rf %s" % self.filename)

    def test_should_return_false__and_message_if_location_not_found(self):
        Location.objects.all().delete()
        self.uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.assertEqual(2, error_log.count())
        self.failUnless(error_log.filter(row_number=1,
                                         error='There is no county with name: county1, in district1.'))
        self.failUnless(error_log.filter(row_number=2,
                                         error='There is no county with name: county2, in district2.'))

    def test_should_return_false__and_message_if_location_is_blank(self):
        data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                ['region1', 'district1', '', '0.2']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1", tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        uploader = UploadLocationWeights(_file)
        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(error_log.filter(row_number=1,
                                         error='There is no county with name: , in district1.'))

    def test_should_return_false__and_message_if_location_tree_parent_does_not_match_one_provided(self):
        region = Location.objects.create(name="region name not matching the one in first row of file")
        district = Location.objects.create(name="district1", tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)
        self.uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.assertEqual(2, error_log.count())
        self.failUnless(error_log.filter(row_number=1,
                                         error='The location hierarchy region1 >> district1 >> county1 does not exist.'))

    def test_should_return_false__and_message_if_no_weight_is_provided(self):
        data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                ['region1', 'district1', 'county1', '']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1", tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(error_log.filter(row_number=1,
                                         error='Selection probability must be a number.'))

    def test_should_return_false__and_message_if_weight_is_NaN(self):
        data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                ['region1', 'district1', 'county1', 'bla bli blo not a number']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1", tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(error_log.filter(row_number=1,
                                         error='Selection probability must be a number.'))

    def test_should_return_true__and_success_message_if_valid_csv_provided(self):
        data = [['RegionName', 'DistrictName', 'CountyName', 'Selection Probability'],
                ['region1', 'district1', 'county1', '0.02']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        region = Location.objects.create(name="region1")
        district = Location.objects.create(name="district1", tree_parent=region)
        Location.objects.create(name="county1", tree_parent=district)

        region = Location.objects.create(name="region2")
        district = Location.objects.create(name="district2", tree_parent=region)
        Location.objects.create(name="county2", tree_parent=district)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.failIf(error_log.filter(row_number=1, error='Selection probability must be a number.'))

        self.failUnless(LocationWeight.objects.filter(location__name=data[1][2], selection_probability=data[1][3]))

    def test_not_csv_file(self):
        LocationWeight.objects.all().delete()
        self.filename = 'not_csv.xls'
        self.generate_non_csv_file(self.filename)
        file = open(self.filename,'rb')
        uploader = UploadLocationWeights(file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename)
        self.failUnless(error_log.filter(error='Location weights not uploaded. %s is not a valid csv file.' % self.filename))
        self.failIf(LocationWeight.objects.all())
Esempio n. 11
0
class LocationWeightUploadHelper(BaseTest):
    def setUp(self):
        self.data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', 'county1', '0.01'],
                     ['region2', 'district2', 'county2', '0.1']]

        self.write_to_csv('wb', self.data)
        self.filename = 'test.csv'
        _file = open(self.filename, 'rb')
        self.uploader = UploadLocationWeights(_file)
        self.survey = Survey.objects.create(name="Survey A")

    def tearDown(self):
        os.system("rm -rf %s" % self.filename)

    def test_should_return_false__and_message_if_location_not_found(self):
        Location.objects.all().delete()
        self.uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.assertEqual(2, error_log.count())
        self.failUnless(
            error_log.filter(
                row_number=1,
                error='There is no county with name: county1, in district1.'))
        self.failUnless(
            error_log.filter(
                row_number=2,
                error='There is no county with name: county2, in district2.'))

    def test_should_return_false__and_message_if_location_is_blank(self):
        data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', '', '0.2']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        rtype = LocationType.objects.create(name="region", slug='region')
        dtype = LocationType.objects.create(name="district",
                                            slug='district',
                                            parent=rtype)
        ctype = LocationType.objects.create(name="county",
                                            slug='county',
                                            parent=dtype)
        region = Location.objects.create(name="region1", type=rtype)
        district = Location.objects.create(name="district1",
                                           parent=region,
                                           type=dtype)
        Location.objects.create(name="county1", parent=district, type=ctype)

        uploader = UploadLocationWeights(_file)
        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(
            error_log.filter(
                row_number=1,
                error='There is no county with name: , in district1.'))

    def test_should_return_false__and_message_if_location_tree_parent_does_not_match_one_provided(
            self):

        rtype = LocationType.objects.create(name="region", slug='region')
        dtype = LocationType.objects.create(name="district",
                                            slug='district',
                                            parent=rtype)
        ctype = LocationType.objects.create(name="county",
                                            slug='county',
                                            parent=dtype)
        region = Location.objects.create(name="region name not matching",
                                         type=rtype)
        district = Location.objects.create(name="district1",
                                           parent=region,
                                           type=dtype)
        Location.objects.create(name="county1", parent=district, type=ctype)
        self.uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.assertEqual(2, error_log.count())
        self.failUnless(
            error_log.filter(
                row_number=1,
                error=
                'The location hierarchy region1 >> district1 >> county1 does not exist.'
            ))

    def test_should_return_false__and_message_if_no_weight_is_provided(self):
        data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', 'county1', '']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        rtype = LocationType.objects.create(name="region", slug='region')
        dtype = LocationType.objects.create(name="district",
                                            slug='district',
                                            parent=rtype)
        ctype = LocationType.objects.create(name="county",
                                            slug='county',
                                            parent=dtype)
        region = Location.objects.create(name="region1", type=rtype)
        district = Location.objects.create(name="district1",
                                           parent=region,
                                           type=dtype)
        Location.objects.create(name="county1", parent=district, type=ctype)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(
            error_log.filter(row_number=1,
                             error='Selection probability must be a number.'))

    def test_should_return_false__and_message_if_weight_is_NaN(self):
        data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', 'county1', 'bla bli blo not a number']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        rtype = LocationType.objects.create(name="region", slug='region')
        dtype = LocationType.objects.create(name="district",
                                            slug='district',
                                            parent=rtype)
        ctype = LocationType.objects.create(name="county",
                                            slug='county',
                                            parent=dtype)
        region = Location.objects.create(name="region1", type=rtype)
        district = Location.objects.create(name="district1",
                                           parent=region,
                                           type=dtype)
        Location.objects.create(name="county1", parent=district, type=ctype)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.assertEqual(1, error_log.count())
        self.failUnless(
            error_log.filter(row_number=1,
                             error='Selection probability must be a number.'))

    def test_should_return_true__and_success_message_if_valid_csv_provided(
            self):
        data = [[
            'RegionName', 'DistrictName', 'CountyName', 'Selection Probability'
        ], ['region1', 'district1', 'county1', '0.02']]
        self.write_to_csv('wb', data)
        _file = open(self.filename, 'rb')

        rtype = LocationType.objects.create(name="region", slug='region')
        dtype = LocationType.objects.create(name="district",
                                            slug='district',
                                            parent=rtype)
        ctype = LocationType.objects.create(name="county",
                                            slug='county',
                                            parent=dtype)
        region = Location.objects.create(name="region1", type=rtype)
        district = Location.objects.create(name="district1",
                                           parent=region,
                                           type=dtype)
        Location.objects.create(name="county1", parent=district, type=ctype)

        region = Location.objects.create(name="region2", type=rtype)
        district = Location.objects.create(name="district2",
                                           parent=region,
                                           type=dtype)
        Location.objects.create(name="county2", parent=district, type=ctype)

        uploader = UploadLocationWeights(_file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.failIf(
            error_log.filter(row_number=1,
                             error='Selection probability must be a number.'))

        self.failUnless(
            LocationWeight.objects.filter(location__name=data[1][2],
                                          selection_probability=data[1][3]))

    def test_not_csv_file(self):
        LocationWeight.objects.all().delete()
        self.filename = 'not_csv.xls'
        self.generate_non_csv_file(self.filename)
        file = open(self.filename, 'rb')
        uploader = UploadLocationWeights(file)

        uploader.upload(self.survey)
        error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL,
                                                  filename=self.filename)
        self.failUnless(
            error_log.filter(
                error=
                'Location weights not uploaded. %s is not a valid csv file.' %
                self.filename))
        self.failIf(LocationWeight.objects.all())