Пример #1
0
    def test_load_duplicate_sectors_domains(self, m_isfile):
        """ProjectImporterCSV.load() does not create duplicate sectors and
           domains
        """

        m_isfile.return_value = True

        csv = "code1;project description 1;" \
              "[dom1] domain name 1;[sect1] sector name 1\n" \
              "code2;project description 2;" \
              "[dom1] domain name 1;[sect1] sector name 1\n" \
              "code3;project description 3;" \
              "[dom1] domain name 1;[sect2] sector name 2\n" \
              "code4;project description 4;" \
              "[dom2] domain name 2;[sect3] sector name 3\n"

        m_open = mock_open(data=StringIO(csv))
        with mock.patch("%s.open" % (module), m_open, create=True):
            self.importer.load()

        self.assertEquals(len(self.importer.projects), 4)
        self.assertEquals(len(self.importer.domains), 2)

        project2 = self.importer.projects[1]
        project4 = self.importer.projects[3]

        self.assertEquals(project2.code, 'code2')
        self.assertEquals(project4.description, 'project description 4')
        self.assertEquals(project2.domain.key, 'dom1')
        self.assertEquals(project4.domain.name, 'domain name 2')
Пример #2
0
    def test_load_business_empty_description(self, m_isfile):
        """BusinessCodeImporterCSV.load() set description to None when empty.
        """

        m_isfile.return_value = True

        descs = [ '', " ", "      " ]
        for desc in descs:
            csv = "code1;%s" % desc

            m_open = mock_open(data=StringIO(csv))
            with mock.patch("%s.open" % (module), m_open, create=True):
                self.importer.load()
                self.assertIsNone(self.importer.businesses[0].description)
Пример #3
0
    def test_load_1(self, m_isfile):
        """BusinessCodeImporterCSV.load() works with simple data
        """

        m_isfile.return_value = True

        csv = "code1;business description 1"

        m_open = mock_open(data=StringIO(csv))
        with mock.patch("%s.open" % (module), m_open, create=True):
            self.importer.load()

        business = self.importer.businesses[0]
        self.assertEquals(business.code, 'code1')
        self.assertEquals(business.description, 'business description 1')
Пример #4
0
    def test_load_domain_invalid(self, m_isfile):
        """ProjectImporterCSV.load() raise exception when domain format is
           invalid
        """

        m_isfile.return_value = True

        csv = "code1;project description 1;" \
              "domain name 1;[sect1] sector name 1"

        m_open = mock_open(data=StringIO(csv))
        with mock.patch("%s.open" % (module), m_open, create=True):
            self.assertRaisesRegexp(
                   HPCStatsSourceError,
                   "Project CSV code1 domain format is invalid",
                   self.importer.load)
Пример #5
0
    def test_load_domain_empty_name(self, m_isfile):
        """ProjectImporterCSV.load() raise exception when domain name is empty
        """

        m_isfile.return_value = True

        names = [ '', " ", "      " ]
        for name in names:
            csv = "code1;project description 1;" \
                  "[dom1] %s;[sect1] sector name 1" % (name)

            m_open = mock_open(data=StringIO(csv))
            with mock.patch("%s.open" % (module), m_open, create=True):
                self.assertRaisesRegexp(
                       HPCStatsSourceError,
                       "Project CSV code1 domain name is empty",
                       self.importer.load)
Пример #6
0
    def test_load_business_empty_code(self, m_isfile):
        """BusinessCodeImporterCSV.load() raise exception when business code is
           empty
        """

        m_isfile.return_value = True

        codes = [ '', " ", "      " ]
        for code in codes:
            csv = "%s;business description 1" % code

            m_open = mock_open(data=StringIO(csv))
            with mock.patch("%s.open" % (module), m_open, create=True):
                self.assertRaisesRegexp(
                       HPCStatsSourceError,
                       "business code in CSV is empty",
                       self.importer.load)
Пример #7
0
    def test_load_invalid_line(self, m_isfile):
        """BusinessCodeImporterCSV.load() raise exception when a business code
           line in CSV file is invalid
        """

        m_isfile.return_value = True

        csvs = [ "line without separator",
                 "line;with;3_separators"]

        for csv in csvs:
            m_open = mock_open(data=StringIO(csv))
            with mock.patch("%s.open" % (module), m_open, create=True):
                self.assertRaisesRegexp(
                       HPCStatsSourceError,
                       "business line format in CSV is invalid",
                       self.importer.load)
Пример #8
0
    def test_load_1(self, m_isfile):
        """ProjectImporterCSV.load() works with simple data
        """

        m_isfile.return_value = True

        csv = "code1;project description 1;" \
              "[dom1] domain name 1;[sect1] sector name 1"

        m_open = mock_open(data=StringIO(csv))
        with mock.patch("%s.open" % (module), m_open, create=True):
            self.importer.load()

        project = self.importer.projects[0]
        self.assertEquals(project.code, 'code1')
        self.assertEquals(project.description, 'project description 1')
        self.assertEquals(project.domain.key, 'dom1')
        self.assertEquals(project.domain.name, 'domain name 1')
Пример #9
0
    def test_load_duplicate_project(self, m_isfile):
        """ProjectImporterCSV.load() raise Error when duplicate project codes
           found in CSV file
        """

        m_isfile.return_value = True

        csv = "code1;project description 1;" \
              "[dom1] domain name 1;[sect1] sector name 1\n" \
              "code1;project description 2;" \
              "[dom1] domain name 1;[sect1] sector name 1\n"

        m_open = mock_open(data=StringIO(csv))
        with mock.patch("%s.open" % (module), m_open, create=True):
            self.assertRaisesRegexp(
                   HPCStatsSourceError,
                   "duplicated project code code1 in CSV file",
                   self.importer.load)
Пример #10
0
    def test_load_multiple_lines(self, m_isfile):
        """BusinessCodeImporterCSV.load() works with multiple lines
        """

        m_isfile.return_value = True

        csv = "code1;business description 1\n" \
              "code2;business description 2\n"

        m_open = mock_open(data=StringIO(csv))
        with mock.patch("%s.open" % (module), m_open, create=True):
            self.importer.load()

        self.assertEquals(len(self.importer.businesses), 2)

        business1 = self.importer.businesses[0]
        business2 = self.importer.businesses[1]

        self.assertEquals(business1.code, 'code1')
        self.assertEquals(business1.description, 'business description 1')
        self.assertEquals(business2.code, 'code2')
        self.assertEquals(business2.description, 'business description 2')
Пример #11
0
    def test_load_multiple_lines(self, m_isfile):
        """ProjectImporterCSV.load() works with multiple lines
        """

        m_isfile.return_value = True

        csv = "code1;project description 1;" \
              "[dom1] domain name 1;[sect1] sector name 1\n" \
              "code2;project description 2;" \
              "[dom2] domain name 2;[sect2] sector name 2\n"

        m_open = mock_open(data=StringIO(csv))
        with mock.patch("%s.open" % (module), m_open, create=True):
            self.importer.load()

        self.assertEquals(len(self.importer.projects), 2)

        project1 = self.importer.projects[0]
        project2 = self.importer.projects[1]

        self.assertEquals(project1.code, 'code1')
        self.assertEquals(project2.description, 'project description 2')
        self.assertEquals(project1.domain.key, 'dom1')
        self.assertEquals(project2.domain.name, 'domain name 2')