|
19 | 19 | AnalysisPillarFactory, |
20 | 20 | AnalysisReportFactory, |
21 | 21 | AnalysisReportUploadFactory, |
| 22 | + AnalyticalStatementFactory, |
| 23 | + DiscardedEntryFactory, |
22 | 24 | ) |
23 | 25 |
|
24 | 26 | from analysis.models import ( |
| 27 | + DiscardedEntry, |
25 | 28 | TopicModel, |
26 | 29 | TopicModelCluster, |
27 | 30 | AutomaticSummary, |
@@ -1732,3 +1735,84 @@ def _query_check(**kwargs): |
1732 | 1735 | self.assertEqual(analysis_pillar_resp_data['title'], self.update_minput['analysisPillarUpdate']['title']) |
1733 | 1736 | self.assertEqual(analysis_pillar_resp_data['id'], str(self.update_minput['analysisPillarID'])) |
1734 | 1737 | self.assertEqual(analysis_pillar_resp_data['analysisId'], str(self.analysis.id)) |
| 1738 | + |
| 1739 | + |
| 1740 | +class TestCloneAnalysisMutationSchema(GraphQLTestCase): |
| 1741 | + ANALYSIS_CLONE_MUTATION = ''' |
| 1742 | + mutation AnalysisClone($projectId: ID!, $data: AnalysisCloneInputType!) { |
| 1743 | + project(id: $projectId) { |
| 1744 | + analysisClone(data: $data) { |
| 1745 | + ok |
| 1746 | + errors |
| 1747 | + result { |
| 1748 | + id |
| 1749 | + title |
| 1750 | + endDate |
| 1751 | + } |
| 1752 | + __typename |
| 1753 | + } |
| 1754 | + __typename |
| 1755 | + } |
| 1756 | + } |
| 1757 | + ''' |
| 1758 | + |
| 1759 | + def setUp(self): |
| 1760 | + super().setUp() |
| 1761 | + self.project = ProjectFactory.create() |
| 1762 | + self.member_user = UserFactory.create() |
| 1763 | + self.non_member_user = UserFactory.create() |
| 1764 | + self.readonly_member_user = UserFactory.create() |
| 1765 | + self.project.add_member(self.readonly_member_user, role=self.project_role_reader_non_confidential) |
| 1766 | + af = AnalysisFrameworkFactory.create() |
| 1767 | + project = ProjectFactory.create(analysis_framework=af) |
| 1768 | + lead = LeadFactory.create(project=project) |
| 1769 | + self.project.add_member(self.member_user, role=self.project_role_member) |
| 1770 | + entry = EntryFactory.create(project=project, lead=lead) |
| 1771 | + EntryFactory.create(project=project, lead=lead) |
| 1772 | + self.analysis = AnalysisFactory.create( |
| 1773 | + project=project, |
| 1774 | + team_lead=self.member_user, |
| 1775 | + end_date=datetime.date(2022, 4, 1), |
| 1776 | + |
| 1777 | + ) |
| 1778 | + pillar = AnalysisPillarFactory.create(analysis=self.analysis, title='title1', assignee=self.member_user) |
| 1779 | + AnalyticalStatementFactory.create( |
| 1780 | + analysis_pillar=pillar, |
| 1781 | + statement='Hello from here', |
| 1782 | + client_id='1', |
| 1783 | + ) |
| 1784 | + DiscardedEntryFactory.create( |
| 1785 | + entry=entry, |
| 1786 | + analysis_pillar=pillar, |
| 1787 | + tag=DiscardedEntry.TagType.REDUNDANT |
| 1788 | + ) |
| 1789 | + |
| 1790 | + def test_clone_analysis(self): |
| 1791 | + def _query_check(**kwargs): |
| 1792 | + return self.query_check( |
| 1793 | + self.ANALYSIS_CLONE_MUTATION, |
| 1794 | + variables=self.minput, |
| 1795 | + **kwargs |
| 1796 | + ) |
| 1797 | + self.minput = dict( |
| 1798 | + data=dict( |
| 1799 | + analysisId=self.analysis.id, |
| 1800 | + title='cloned_title', |
| 1801 | + endDate="2022-04-01", |
| 1802 | + ), |
| 1803 | + projectId=self.project.id, |
| 1804 | + ) |
| 1805 | + # without login |
| 1806 | + _query_check(assert_for_error=True) |
| 1807 | + |
| 1808 | + # With login (non-member) |
| 1809 | + self.force_login(self.non_member_user) |
| 1810 | + _query_check(assert_for_error=True) |
| 1811 | + |
| 1812 | + # member user (read-only) |
| 1813 | + self.force_login(self.readonly_member_user) |
| 1814 | + _query_check(assert_for_error=True) |
| 1815 | + |
| 1816 | + # member user |
| 1817 | + self.force_login(self.member_user) |
| 1818 | + _query_check(assert_for_error=False) |
0 commit comments