예제 #1
0
    def test_to_table(self):

        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        utils.create_test_list_instance(unit_test_collection=utc)

        unit2 = utils.create_unit(site=None)
        utc2 = utils.create_unit_test_collection(unit=unit2)
        utils.create_test_list_instance(unit_test_collection=utc2)

        rep = qc.NextDueDatesReport()
        rep.report_format = "csv"
        context = rep.get_context()
        table = rep.to_table(context)

        header_count = table.count([
            _("Unit"),
            _("Name"),
            _("Frequency"),
            _("Due Date"),
            _("Window"),
            _("Assigned To"),
            _("Perform")
        ])
        assert header_count == 2
예제 #2
0
    def test_with_rts_and_service_type(self):
        """If we filter for a unit, and service type, the searcher should only return
        templates where the return to service test lists are all
        assigned to that unit and the template has the correct service_type."""

        st = sl_utils.create_service_type()
        tl1 = qa_utils.create_test_list()
        tl2 = qa_utils.create_test_list()
        u1 = qa_utils.create_unit()
        qa_utils.create_unit_test_collection(unit=u1, test_collection=tl1)

        # one template with RTS that is assigned to the unit
        t1 = self.create_template("1", service_type=st)
        t1.return_to_service_test_lists.add(tl1)

        # one template with RTS that is not assigned to the unit
        t2 = self.create_template("2", service_type=st)
        t2.return_to_service_test_lists.add(tl2)

        # one template with no RTS and correct service_type
        t3 = self.create_template("3", service_type=st)

        # one template with no RTS and no service_type
        self.create_template("4")

        resp = self.client.get(self.url,
                               data={
                                   'unit': u1.pk,
                                   'service_type': st.pk
                               })
        data = resp.json()
        assert len(data) == 2
        assert [t['id'] for t in data] == [t1.id, t3.id]
예제 #3
0
    def setUp(self):

        create_user(is_superuser=True, uname='user', pwd='pwd')
        self.client.login(username='******', password='******')

        self.url = reverse('qa_copy_refs_and_tols')

        self.tl_1 = qa_utils.create_test_list()
        self.tl_2 = qa_utils.create_test_list()
        self.tl_3 = qa_utils.create_test_list()
        self.tl_fc_1 = qa_utils.create_test_list(name='for_cycle_1')
        self.tl_fc_2 = qa_utils.create_test_list(name='for_cycle_2')
        self.tl_fc_3 = qa_utils.create_test_list(name='for_cycle_3')
        self.tlc_1 = qa_utils.create_cycle(test_lists=[self.tl_fc_1, self.tl_fc_2, self.tl_fc_3])
        self.tlc_2 = qa_utils.create_cycle(test_lists=[self.tl_fc_1, self.tl_fc_2])

        self.u_1 = qa_utils.create_unit()
        self.u_2 = qa_utils.create_unit()

        test = qa_utils.create_test()

        self.tlm_1 = qa_utils.create_test_list_membership(test_list=self.tl_1, test=test)
        self.tlm_2 = qa_utils.create_test_list_membership(test_list=self.tl_2, test=test)

        self.utc_1 = qa_utils.create_unit_test_collection(unit=self.u_1, test_collection=self.tl_1)
        self.utc_2 = qa_utils.create_unit_test_collection(unit=self.u_2, test_collection=self.tl_2)

        self.uti_1, _ = qa_models.UnitTestInfo.objects.get_or_create(unit=self.u_1, test=test)
        self.uti_1.reference = qa_utils.create_reference()
        self.uti_1.tolerance = qa_utils.create_tolerance()
        self.uti_1.save()

        self.uti_2, _ = qa_models.UnitTestInfo.objects.get_or_create(unit=self.u_2, test=test)
예제 #4
0
    def test_to_table(self):

        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utils.create_unit_test_collection(unit=unit)

        tlm = utils.create_test_list_membership()
        unit2 = utils.create_unit(site=None)
        utils.create_unit_test_collection(unit=unit2,
                                          test_collection=tlm.test_list)

        rep = qc.AssignedQCReport(report_opts={'active': True})
        rep.report_format = "csv"
        context = rep.get_context()
        table = rep.to_table(context)

        header_row = table.index([
            _("Site"),
            _("Unit"),
            _("Test list (Cycle)"),
            _("Frequency"),
            _("Assigned To"),
            _("Link"),
        ])
        assert len(table[header_row + 1:]) == 2
예제 #5
0
    def setUp(self):
        self.unit1 = utils.create_unit(name="unit1", number=1)
        self.unit2 = utils.create_unit(name="unit2", number=2)
        self.utc1 = utils.create_unit_test_collection(unit=self.unit1)
        self.utc2 = utils.create_unit_test_collection(unit=self.unit2)

        self.unit_group = UnitGroup.objects.create(name="test group")
        self.unit_group.units.add(self.utc1.unit)

        self.group = Group.objects.latest('pk')
        self.user = User.objects.latest('pk')
        self.user.groups.add(self.group)
        self.user.email = "*****@*****.**"
        self.user.save()

        self.recipients = RecipientGroup.objects.create(name="test group")
        self.recipients.groups.add(self.group)

        self.inactive_user = User.objects.create_user('inactive',
                                                      '*****@*****.**',
                                                      'password')
        self.inactive_user.groups.add(self.group)
        self.inactive_user.is_active = False
        self.inactive_user.save()

        self.notice = ServiceEventNotice.objects.create(
            recipients=self.recipients,
            notification_type=ServiceEventNotice.UPDATED_OR_CREATED,
        )
        # delete defaults schedules to make counting easier
        Schedule.objects.all().delete()

        self.sa = sl_utils.create_service_area()
예제 #6
0
    def setUp(self):

        self.unit1 = utils.create_unit(name="unit1", number=1)
        self.unit2 = utils.create_unit(name="unit2", number=2)
        self.utc1 = utils.create_unit_test_collection(unit=self.unit1)
        self.utc2 = utils.create_unit_test_collection(unit=self.unit2)

        self.testlist_group = TestListGroup.objects.create(name="test group")
        self.testlist_group.test_lists.add(self.utc1.tests_object)

        self.unit_group = UnitGroup.objects.create(name="test group")
        self.unit_group.units.add(self.utc1.unit)

        self.group = models.Group.objects.latest('pk')
        user = models.User.objects.latest('pk')
        user.groups.add(self.group)
        user.email = "*****@*****.**"
        user.save()

        self.recipients = RecipientGroup.objects.create(name="test group")
        self.recipients.groups.add(self.group)

        self.inactive_user = models.User.objects.create_user(
            'inactive', '*****@*****.**', 'password')
        self.inactive_user.groups.add(self.group)
        self.inactive_user.is_active = False
        self.inactive_user.save()

        self.notice = QCReviewNotice.objects.create(
            recipients=self.recipients,
            notification_type=QCReviewNotice.UNREVIEWED,
            time="0:00",
        )
        # delete defaults schedules to make counting easier
        Schedule.objects.all().delete()
예제 #7
0
    def test_with_rts(self):
        """If we filter for a unit, the searcher should only return
        templates where the return to service test lists are all
        assigned to that unit."""

        tl1 = qa_utils.create_test_list()
        tl2 = qa_utils.create_test_list()
        u1 = qa_utils.create_unit()
        qa_utils.create_unit_test_collection(unit=u1, test_collection=tl1)

        # one template with RTS that is assigned to the unit
        t1 = self.create_template("1")
        t1.return_to_service_test_lists.add(tl1)

        # one template with RTS that is not assigned to the unit
        t2 = self.create_template("2")
        t2.return_to_service_test_lists.add(tl2)

        # one template with not RTS
        t3 = self.create_template("3")

        resp = self.client.get(self.url, data={'unit': u1.pk})
        data = resp.json()
        assert len(data) == 2
        assert [t['id'] for t in data] == [t1.id, t3.id]
예제 #8
0
    def test_to_table(self):

        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        utils.create_test_list_instance(unit_test_collection=utc)

        unit2 = utils.create_unit(site=None)
        utc2 = utils.create_unit_test_collection(unit=unit2)
        utils.create_test_list_instance(unit_test_collection=utc2)

        rep = qc.TestListInstanceSummaryReport()
        rep.report_format = "csv"
        context = rep.get_context()
        table = rep.to_table(context)

        header_row = table.index([
            'Site',
            'Unit',
            'Test list',
            'Due Date',
            'Work Completed',
            'Pass/Fail Status',
            'Link',
        ])
        # should be two tlis after header
        assert len(table[header_row + 1:]) == 2
예제 #9
0
    def test_generate_summary_html(self):
        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utils.create_unit_test_collection(unit=unit)

        rep = qc.AssignedQCDetailsReport()
        rep.report_format = "pdf"
        rep.to_html()
예제 #10
0
    def test_admin_set_ref_tols(self):

        utils.create_tolerance(tol_type=models.MULTIPLE_CHOICE,
                               mc_pass_choices="a,b")

        utils.create_tolerance()

        for the_test in objects['Tests']:

            if the_test['test_type'] == models.MULTIPLE_CHOICE:
                if not utils.exists('qa', 'Test', 'name', the_test['name']):
                    mult_test = utils.create_test(
                        test_type=models.MULTIPLE_CHOICE,
                        choices=the_test['choices'],
                        name=the_test['name'])
            elif the_test['test_type'] == models.SIMPLE:
                if not utils.exists('qa', 'Test', 'name', the_test['name']):
                    simp_test = utils.create_test(test_type=models.SIMPLE,
                                                  name=the_test['name'])
            elif the_test['test_type'] == models.COMPOSITE:
                if not utils.exists('qa', 'Test', 'name', the_test['name']):
                    comp_test = utils.create_test(test_type=models.COMPOSITE,
                                                  name=the_test['name'])

        if not utils.exists('qa', 'TestList', 'name',
                            objects['TestList']['name']):
            test_list = utils.create_test_list(objects['TestList']['name'])
            utils.create_test_list_membership(test_list=test_list,
                                              test=mult_test)
            utils.create_test_list_membership(test_list=test_list,
                                              test=simp_test)
            utils.create_test_list_membership(test_list=test_list,
                                              test=comp_test)

        utils.create_unit_test_collection(test_collection=test_list)

        self.load_admin()
        self.click_by_link_text('Set References & Tolerances')
        self.click_by_link_text(mult_test.name)
        self.wait.until(
            e_c.presence_of_element_located((By.ID, 'id_tolerance')))
        self.select_by_index("id_tolerance", 1)
        self.driver.find_element_by_name('_save').click()
        self.wait_for_success()

        self.driver.find_element_by_link_text('simple').click()
        self.select_by_index("id_tolerance", 1)
        self.driver.find_element_by_id('id_reference_value').send_keys('0')
        self.driver.find_element_by_name('_save').click()
        self.wait_for_success()

        self.driver.find_element_by_link_text('composite').click()
        self.select_by_index("id_tolerance", 1)
        self.driver.find_element_by_id('id_reference_value').send_keys('23.23')
        self.driver.find_element_by_name('_save').click()
        self.wait_for_success()
예제 #11
0
    def test_get_tlis_for_site(self):
        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        tli = utils.create_test_list_instance(unit_test_collection=utc)

        unit2 = utils.create_unit(site=None)
        utc2 = utils.create_unit_test_collection(unit=unit2)
        utils.create_test_list_instance(unit_test_collection=utc2)

        qs = TestListInstance.objects.all()
        tlis = qc.TestListInstanceSummaryReport().get_tlis_for_site(qs, site)
        assert list([x.pk for x in tlis]) == [tli.pk]
예제 #12
0
    def test_to_table_group_by_unit_test_date_csv(self):

        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        tli = utils.create_test_list_instance(unit_test_collection=utc)
        ti = utils.create_test_instance(test_list_instance=tli)
        utils.create_test_instance(
            test_list_instance=tli,
            unit_test_info=ti.unit_test_info,
            work_completed=tli.work_completed - timezone.timedelta(days=1),
        )
        ti3 = utils.create_test_instance(
            test_list_instance=tli,
            work_completed=tli.work_completed - timezone.timedelta(days=1),
        )

        rep = qc.TestInstanceDetailsReport(
            report_opts={
                'unit_test_info__test':
                [ti.unit_test_info.test.pk, ti3.unit_test_info.test.pk],
                'organization':
                'group_by_unit_test_date'
            })
        rep.report_format = "csv"
        context = rep.get_context()
        table = rep.to_table(context)
        org_row = table.index(['Organization:', 'Group by Unit/Test/Date'])

        # should be two rows after blank row
        assert len(table[org_row + 2:]) == 2
        # and 11 columns
        assert len(table[org_row + 3]) == 11
예제 #13
0
    def test_to_table_one_per_row_csv(self):

        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        tli = utils.create_test_list_instance(unit_test_collection=utc)
        ti = utils.create_test_instance(test_list_instance=tli)
        utils.create_test_instance(
            test_list_instance=tli,
            unit_test_info=ti.unit_test_info,
            work_completed=tli.work_completed - timezone.timedelta(days=1),
        )

        rep = qc.TestInstanceDetailsReport(
            report_opts={
                'unit_test_info__test': [ti.unit_test_info.test.pk],
                'organization': 'one_per_row'
            })
        rep.report_format = "csv"
        context = rep.get_context()
        table = rep.to_table(context)
        header_row = table.index([
            _("Work Completed"),
            _("Test"),
            _("Unit"),
            _("Site"),
            _("Value"),
            _("Reference"),
            _("Tolerance"),
            _("Skipped"),
            _("Performed By"),
            _("Comment"),
        ])
        # should be two tis after header
        assert len(table[header_row + 1:]) == 2
예제 #14
0
def create_return_to_service_qa(service_event=None,
                                unit_test_collection=None,
                                user_assigned_by=None,
                                datetime_assigned=timezone.now(),
                                add_test_list_instance=False):

    if service_event is None:
        service_event = create_service_event()
    if unit_test_collection is None:
        unit_test_collection = qa_utils.create_unit_test_collection()
    if user_assigned_by is None:
        user_assigned_by = create_user()

    rtsqa, _ = models.ReturnToServiceQA.objects.get_or_create(
        service_event=service_event,
        unit_test_collection=unit_test_collection,
        user_assigned_by=user_assigned_by,
        datetime_assigned=datetime_assigned)

    if add_test_list_instance:
        if isinstance(add_test_list_instance, qa_models.TestListInstance):
            tli = add_test_list_instance
        else:
            tli = qa_utils.create_test_list_instance(
                unit_test_collection=unit_test_collection)
        rtsqa.test_list_instance = tli
        rtsqa.save()

    return rtsqa
예제 #15
0
    def setUp(self):

        self.tests = []

        self.ref = models.Reference(type=models.NUMERICAL, value=100.)
        self.tol = models.Tolerance(type=models.PERCENT, act_low=-3, tol_low=-2, tol_high=2, act_high=3)
        self.values = [None, None, 96, 97, 100, 100]

        self.statuses = [utils.create_status(name="status%d" % x, slug="status%d" % x) for x in range(len(self.values))]

        self.test_list = utils.create_test_list()
        for i in range(6):
            test = utils.create_test(name="name%d" % i)
            self.tests.append(test)
            utils.create_test_list_membership(self.test_list, test)

        self.unit_test_collection = utils.create_unit_test_collection(test_collection=self.test_list)

        self.test_list_instance = self.create_test_list_instance()

        self.group = models.Group.objects.get(pk=1)
        user = models.User.objects.get(pk=1)
        user.groups.add(self.group)
        user.email = "*****@*****.**"
        user.save()
예제 #16
0
    def setUp(self):

        super().setUp()

        self.unit = utils.create_unit()
        self.group = utils.create_group()
        for p in Permission.objects.all():
            self.group.permissions.add(p)
        self.user.groups.add(self.group)
        self.test_list = utils.create_test_list()

        self.tnum_1 = utils.create_test(name="test1")
        self.tnum_2 = utils.create_test(name="test2")
        self.tcomp = utils.create_test(name="testc",
                                       test_type=models.COMPOSITE)
        self.tcomp.calculation_procedure = "result = test1 + test2 + 2"
        self.tcomp.save()

        self.tdate = utils.create_test(name="testdate", test_type=models.DATE)
        self.tdatetime = utils.create_test(name="testdatetime",
                                           test_type=models.DATETIME)

        self.tmult = utils.create_test(name="testmult",
                                       choices="choicea,choiceb",
                                       test_type=models.MULTIPLE_CHOICE)
        self.tstring = utils.create_test(name="teststring",
                                         test_type=models.STRING)
        self.tstringcomp = utils.create_test(name="teststringcomp",
                                             test_type=models.STRING_COMPOSITE)
        self.tstringcomp.calculation_procedure = "teststringcomp = teststring + testmult"
        self.tstringcomp.save()

        all_tests = [
            self.tnum_1,
            self.tnum_2,
            self.tcomp,
            self.tdate,
            self.tdatetime,
            self.tmult,
            self.tstring,
            self.tstringcomp,
        ]

        for o, t in enumerate(all_tests):
            utils.create_test_list_membership(self.test_list, t, order=o)

        self.utc = utils.create_unit_test_collection(
            unit=self.unit, test_collection=self.test_list)

        self.utc.visible_to.add(self.group)
        self.url = reverse("perform_qa", kwargs={'pk': self.utc.pk})
        self.status = models.TestInstanceStatus.objects.create(
            name="foo",
            slug="foo",
            is_default=True,
        )

        sl_utils.create_service_event_status(is_default=True)
        sl_utils.create_unit_service_area(self.utc.unit)
        sl_utils.create_service_type()
예제 #17
0
    def setUp(self):

        self.tests = []

        self.ref = models.Reference(type=models.NUMERICAL, value=100.)
        self.tol = models.Tolerance(type=models.PERCENT,
                                    act_low=-3,
                                    tol_low=-2,
                                    tol_high=2,
                                    act_high=3)
        self.values = [None, None, 96, 97, 100, 100]

        self.statuses = [
            utils.create_status(name="status%d" % x, slug="status%d" % x)
            for x in range(len(self.values))
        ]

        self.test_list = utils.create_test_list()
        for i in range(6):
            test = utils.create_test(name="name%d" % i)
            self.tests.append(test)
            utils.create_test_list_membership(self.test_list, test)

        self.unit_test_collection = utils.create_unit_test_collection(
            test_collection=self.test_list)

        self.test_list_instance = self.create_test_list_instance()

        self.group = models.Group.objects.get(pk=1)
        user = models.User.objects.get(pk=1)
        user.groups.add(self.group)
        user.email = "*****@*****.**"
        user.save()
예제 #18
0
    def test_to_table(self):

        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)

        tlm = utils.create_test_list_membership()
        utils.create_unit_test_collection(unit=unit,
                                          test_collection=tlm.test_list)

        unit2 = utils.create_unit(site=None)
        utils.create_unit_test_collection(unit=unit2,
                                          test_collection=tlm.test_list)

        rep = qc.AssignedQCDetailsReport(report_opts={'active': True})
        rep.report_format = "csv"
        context = rep.get_context()
        rep.to_table(context)
예제 #19
0
    def test_load_autosave(self):
        """Ensure that no failed tests on load and 3 "NO TOL" tests present"""

        tl2 = utils.create_test_list(name="day 2")
        utils.create_test_list_membership(tl2, test=self.tnum_1)
        cycle = utils.create_cycle([self.test_list, tl2])
        utc = utils.create_unit_test_collection(
            unit=self.utc.unit,
            test_collection=cycle,
            assigned_to=self.utc.assigned_to)

        tz = timezone.get_current_timezone()
        auto = models.AutoSave.objects.create(
            unit_test_collection=utc,
            test_list=tl2,
            day=1,
            work_started=tz.localize(timezone.datetime(1980, 5, 12, 12)),
            work_completed=tz.localize(timezone.datetime(1980, 5, 12, 12, 1)),
            created_by=self.user,
            modified_by=self.user,
            data={
                'tests': {
                    'test1': 1,
                },
                'comments': {
                    'test1': 'test comment',
                },
                'skips': {
                    'test1': False,
                },
                'tli_comment': 'test list instance comment'
            })

        self.login()

        url = reverse("perform_qa", kwargs={'pk': utc.pk})
        self.open(url + "?autosave_id=%d&day=%d" % (auto.pk, auto.day + 1))
        time.sleep(0.2)

        inputs = self.driver.find_elements_by_class_name("qa-input")[:3]
        title = "Perform %s : day 2" % utc.unit.name
        assert title in [
            el.text
            for el in self.driver.find_elements_by_class_name("box-title")
        ]
        assert float(inputs[0].get_attribute("value")) == 1
        assert self.driver.find_element_by_id("id_work_started").get_attribute(
            "value") == "12 May 1980 12:00"
        assert self.driver.find_element_by_id(
            "id_work_completed").get_attribute("value") == "12 May 1980 12:01"
        assert self.driver.find_element_by_id(
            "id_work_duration").get_attribute("value") == "0hr:01min"
        assert self.driver.find_element_by_id(
            "id_form-0-comment").get_attribute("value") == "test comment"
        assert self.driver.find_element_by_id("id_comment").get_attribute(
            "value") == "test list instance comment"
예제 #20
0
    def test_generate_due_and_overdue_html(self):
        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        tli = utils.create_test_list_instance(unit_test_collection=utc)
        utils.create_test_instance(test_list_instance=tli)

        rep = qc.DueAndOverdueQCReport()
        rep.report_format = "pdf"
        rep.to_html()
예제 #21
0
    def setUp(self):
        self.user = create_user(is_superuser=True, uname='user', pwd='pwd')
        self.client.login(username='******', password='******')

        self.u_1 = qa_utils.create_unit()
        self.u_2 = qa_utils.create_unit()
        self.f_1 = qa_utils.create_frequency()
        self.f_2 = qa_utils.create_frequency()
        self.tl_1 = qa_utils.create_test_list()
        self.tl_2 = qa_utils.create_test_list()
        self.t_1 = qa_utils.create_test()
        self.t_2 = qa_utils.create_test()
        qa_utils.create_test_list_membership(test_list=self.tl_1, test=self.t_1)
        qa_utils.create_test_list_membership(test_list=self.tl_1, test=self.t_2)

        self.g_1 = create_group()
        self.g_2 = create_group()

        self.tl_ct = ContentType.objects.get(model='testlist')
        self.tlc_ct = ContentType.objects.get(model='testlistcycle')
        self.utc_1 = qa_utils.create_unit_test_collection(
            unit=self.u_1, test_collection=self.tl_1, assigned_to=self.g_1, frequency=self.f_1
        )
        self.utc_2 = qa_utils.create_unit_test_collection(
            unit=self.u_2, active=False, assigned_to=self.g_2, frequency=self.f_2
        )

        self.url_list = reverse(
            'admin:%s_%s_changelist' % (
                qa_models.UnitTestCollection._meta.app_label, qa_models.UnitTestCollection._meta.model_name
            )
        )
        self.url_add = reverse(
            'admin:%s_%s_add' % (
                qa_models.UnitTestCollection._meta.app_label, qa_models.UnitTestCollection._meta.model_name
            )
        )
        self.url_change = reverse(
            'admin:%s_%s_change' % (
                qa_models.UnitTestCollection._meta.app_label, qa_models.UnitTestCollection._meta.model_name
            ),
            args=[self.utc_1.id]
        )
예제 #22
0
    def setUp(self):

        self.tests = []

        self.ref = models.Reference(type=models.NUMERICAL, value=100.)
        self.tol = models.Tolerance(type=models.PERCENT,
                                    act_low=-3,
                                    tol_low=-2,
                                    tol_high=2,
                                    act_high=3)
        self.ref.created_by = utils.create_user()
        self.tol.created_by = utils.create_user()
        self.ref.modified_by = utils.create_user()
        self.tol.modified_by = utils.create_user()
        self.values = [None, None, 96, 97, 100, 100]

        self.statuses = [
            utils.create_status(name="status%d" % x, slug="status%d" % x)
            for x in range(len(self.values))
        ]

        self.test_list = utils.create_test_list()
        for i in range(6):
            test = utils.create_test(name="name%d" % i)
            self.tests.append(test)
            utils.create_test_list_membership(self.test_list, test)

        self.testlist_group = TestListGroup.objects.create(name="test group")
        self.testlist_group.test_lists.add(self.test_list)

        self.unit_test_collection = utils.create_unit_test_collection(
            test_collection=self.test_list)

        self.unit_group = UnitGroup.objects.create(name="test group")
        self.unit_group.units.add(self.unit_test_collection.unit)

        self.test_list_instance = self.create_test_list_instance()

        self.group = models.Group.objects.latest('pk')
        user = models.User.objects.latest('pk')
        user.groups.add(self.group)
        user.email = "*****@*****.**"
        user.save()

        self.recipients = RecipientGroup.objects.create(name="test group")
        self.recipients.groups.add(self.group)

        self.inactive_user = models.User.objects.create_user(
            'inactive', '*****@*****.**', 'password')
        self.inactive_user.groups.add(self.group)
        self.inactive_user.is_active = False
        self.inactive_user.save()

        # delete defaults schedules to make counting easier
        Schedule.objects.all().delete()
예제 #23
0
    def test_qa_urls(self):

        sl_utils.create_service_event_status(is_default=True)
        qa_utils.create_status(is_default=True)
        se = sl_utils.create_service_event()
        u = qa_utils.create_unit()
        utc = qa_utils.create_unit_test_collection(unit=u)
        tli = qa_utils.create_test_list_instance(unit_test_collection=utc)

        url_names_200 = (
            ('sl_dash', {}, ''),
            ('sl_new', {}, ''),
            ('sl_edit', {
                'pk': se.id
            }, ''),
            ('sl_details', {
                'pk': se.id
            }, ''),
            ('sl_list_all', {}, ''),
            ('rtsqa_list_for_event', {
                'se_pk': se.id
            }, ''),
            ('se_searcher', {}, '?q=%d&unit_id=%d' % (se.id, u.id)),
            ('tli_select', {
                'pk': utc.id,
                'form': 'a_form'
            }, ''),
            ('tli_statuses', {}, '?tli_id=%d' % tli.id),
            ('unit_sa_utc', {}, '?unit_id=%d' % u.id),
            ('err', {}, ''),
            ('sl_unit_new', {}, ''),
            ('sl_unit_view_se', {}, ''),
            ('se_down_time', {}, ''),
            ('handle_unit_down_time', {}, ''),
        )

        url_names_404 = (
            # Test urls that expect kwargs when not given any
            # (reverse should render url for use in templates, but return 404)
            ('sl_details', {}, ''),
            ('tli_select', {}, ''),
            ('se_searcher', {}, ''),
            ('tli_statuses', {}, ''),
            ('unit_sa_utc', {}, ''),
        )

        for url, kwargs, q in url_names_200:
            self.assertTrue(self.returns_code(reverse(url, kwargs=kwargs) + q))

        for url, kwargs, q in url_names_404:
            self.assertTrue(
                self.returns_code(reverse(url, kwargs=kwargs) + q, code=404))
예제 #24
0
    def setUp(self):

        self.unit1 = utils.create_unit(name="unit1", number=1)
        self.unit2 = utils.create_unit(name="unit2", number=2)
        self.utc1 = utils.create_unit_test_collection(unit=self.unit1)
        self.utc2 = utils.create_unit_test_collection(unit=self.unit2)

        self.tli1 = utils.create_test_list_instance(
            unit_test_collection=self.utc1)
        self.tli1.all_reviewed = False
        self.tli1.save()
        self.tli2 = utils.create_test_list_instance(
            unit_test_collection=self.utc2)
        self.tli2.all_reviewed = True
        self.tli2.save()

        self.testlist_group = TestListGroup.objects.create(name="test group")
        self.testlist_group.test_lists.add(self.utc1.tests_object)

        self.unit_group = UnitGroup.objects.create(name="test group")
        self.unit_group.units.add(self.utc1.unit)

        self.group = models.Group.objects.latest('pk')
        user = models.User.objects.latest('pk')
        user.groups.add(self.group)
        user.email = "*****@*****.**"
        user.save()

        self.recipients = RecipientGroup.objects.create(name="test group")
        self.recipients.groups.add(self.group)

        self.inactive_user = models.User.objects.create_user(
            'inactive', '*****@*****.**', 'password')
        self.inactive_user.groups.add(self.group)
        self.inactive_user.is_active = False
        self.inactive_user.save()

        # delete defaults schedules to make counting easier
        Schedule.objects.all().delete()
예제 #25
0
    def test_generate_html(self):
        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        utils.create_test_list_instance(unit_test_collection=utc)

        unit2 = utils.create_unit(site=None)
        utc2 = utils.create_unit_test_collection(unit=unit2)
        tli2 = utils.create_test_list_instance(unit_test_collection=utc2)
        comment = Comment(
            submit_date=timezone.now(),
            user=tli2.created_by,
            content_object=tli2,
            comment='test comment',
            site=Site.objects.latest("pk"),
        )
        comment.save()

        rep = qc.TestListInstanceDetailsReport(
            report_opts={'unit_test_collection': [utc.pk]})
        rep.report_format = "pdf"
        rep.to_html()
예제 #26
0
    def test_generate_html_group_by_unit_test_date(self):
        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        tli = utils.create_test_list_instance(unit_test_collection=utc)
        ti = utils.create_test_instance(test_list_instance=tli)

        rep = qc.TestInstanceDetailsReport(
            report_opts={
                'unit_test_info__test': [ti.unit_test_info.test.pk],
                'organization': 'group_by_unit_test_date'
            })
        rep.report_format = "pdf"
        assert 'not supported for' in rep.to_html()
예제 #27
0
    def test_generate_html_one_per_row(self):
        site = USite.objects.create(name="site")
        unit = utils.create_unit(site=site)
        utc = utils.create_unit_test_collection(unit=unit)
        tli = utils.create_test_list_instance(unit_test_collection=utc)
        ti = utils.create_test_instance(test_list_instance=tli)

        rep = qc.TestInstanceDetailsReport(
            report_opts={
                'unit_test_info__test': [ti.unit_test_info.test.pk],
                'organization': 'one_per_row'
            })
        rep.report_format = "pdf"
        rep.to_html()
예제 #28
0
    def test_email_not_sent_to_group_for_excluded_unit(self):
        """TLI is created on 2nd unit so no one should get an email"""

        utc2 = utils.create_unit_test_collection(
            test_collection=self.test_list)
        QCCompletedNotice.objects.create(
            notification_type=QCCompletedNotice.TOLERANCE,
            recipients=self.recipients,
            units=self.unit_group,
        )

        tli = self.create_test_list_instance(utc=utc2)

        signals.testlist_complete.send(sender=self, instance=tli, created=True)
        self.assertEqual(len(mail.outbox), 0)
예제 #29
0
    def test_email_not_sent_for_same_testlist_different_unit(self):

        unit = utils.create_unit()
        utc = utils.create_unit_test_collection(unit=unit,
                                                test_collection=self.test_list)
        QCCompletedNotice.objects.create(
            notification_type=QCCompletedNotice.COMPLETED,
            test_lists=self.testlist_group,
            units=self.unit_group,
            recipients=self.recipients,
        )

        tli = self.create_test_list_instance(utc=utc)

        signals.testlist_complete.send(sender=self, instance=tli, created=True)
        assert len(mail.outbox) == 0
예제 #30
0
    def test_email_not_sent_for_diff_testlist(self):

        new_test_list = utils.create_test_list()
        test = utils.create_test(name="new tl name")
        utils.create_test_list_membership(new_test_list, test)
        utc = utils.create_unit_test_collection(
            unit=self.unit_test_collection.unit, test_collection=new_test_list)

        QCCompletedNotice.objects.create(
            notification_type=QCCompletedNotice.COMPLETED,
            recipients=self.recipients,
            test_lists=self.testlist_group,
        )
        tli = self.create_test_list_instance(utc=utc)

        signals.testlist_complete.send(sender=self, instance=tli, created=True)
        assert len(mail.outbox) == 0
예제 #31
0
def create_service_event(unit_service_area=None,
                         service_type=None,
                         service_status=None,
                         user_created_by=None,
                         datetime_service=timezone.now(),
                         problem_description='problem_description',
                         is_review_required=False,
                         datetime_created=timezone.now(),
                         add_test_list_instance_initiated_by=False,
                         service_time=None,
                         lost_time=None):

    if unit_service_area is None:
        unit_service_area = create_unit_service_area()
    if service_type is None:
        service_type = create_service_type()
    if service_status is None:
        service_status = create_service_event_status()
    if user_created_by is None:
        user_created_by = create_user()

    se, _ = models.ServiceEvent.objects.get_or_create(
        unit_service_area=unit_service_area,
        service_type=service_type,
        service_status=service_status,
        user_created_by=user_created_by,
        datetime_service=datetime_service,
        problem_description=problem_description,
        is_review_required=is_review_required,
        datetime_created=datetime_created,
        duration_service_time=service_time,
        duration_lost_time=lost_time)

    if add_test_list_instance_initiated_by:
        if isinstance(add_test_list_instance_initiated_by,
                      qa_models.TestListInstance):
            se.test_list_instance_initiated_by = add_test_list_instance_initiated_by
        else:
            utc = qa_utils.create_unit_test_collection(
                unit=unit_service_area.unit)
            se.test_list_instance_initiated_by = qa_utils.create_test_list_instance(
                unit_test_collection=utc)
        se.save()

    return se