11from unittest import mock
2-
3-
42import pytest
53from crowdin_api .api_resources .application .resource import ApplicationResource
4+ from crowdin_api .api_resources .application .enums import (
5+ UserPermissions ,
6+ ProjectPermissions ,
7+ )
68from crowdin_api .requester import APIRequester
79
810
@@ -22,6 +24,140 @@ def test_get_applications_path(self, in_params, path, base_absolut_url):
2224 resource = self .get_resource (base_absolut_url )
2325 assert resource .get_application_path (** in_params ) == path
2426
27+ @pytest .mark .parametrize (
28+ "in_params, path" ,
29+ (
30+ (None , "applications/installations" ),
31+ ("test" , "applications/installations/test" ),
32+ ),
33+ )
34+ def test_get_application_installation_path (self , in_params , path , base_absolut_url ):
35+ resource = self .get_resource (base_absolut_url )
36+ assert resource .get_application_installations_path (in_params ) == path
37+
38+ @mock .patch ("crowdin_api.requester.APIRequester.request" )
39+ def test_list_application_installations (self , m_request , base_absolut_url ):
40+ m_request .return_value = "response"
41+
42+ resource = self .get_resource (base_absolut_url )
43+ assert resource .list_application_installations () == "response"
44+ m_request .assert_called_once_with (
45+ method = "get" ,
46+ path = resource .get_application_installations_path (),
47+ params = resource .get_page_params ()
48+ )
49+
50+ @pytest .mark .parametrize (
51+ "in_params, request_data" ,
52+ (
53+ (
54+ {
55+ "url" : "https://localhost.dev/crowdin.json" ,
56+ },
57+ {
58+ "url" : "https://localhost.dev/crowdin.json" ,
59+ "permissions" : None
60+ }
61+ ),
62+ (
63+ {
64+ "url" : "https://localhost.dev/crowdin.json" ,
65+ "permissions" : {
66+ "user" : {
67+ "value" : UserPermissions .OWNER ,
68+ "ids" : [1 , 2 , 3 ]
69+ },
70+ "project" : {
71+ "value" : ProjectPermissions .OWN ,
72+ "ids" : [4 , 5 , 6 ]
73+ }
74+ }
75+ },
76+ {
77+ "url" : "https://localhost.dev/crowdin.json" ,
78+ "permissions" : {
79+ "user" : {
80+ "value" : UserPermissions .OWNER ,
81+ "ids" : [1 , 2 , 3 ]
82+ },
83+ "project" : {
84+ "value" : ProjectPermissions .OWN ,
85+ "ids" : [4 , 5 , 6 ]
86+ }
87+ }
88+ }
89+ ),
90+ ),
91+ )
92+ @mock .patch ("crowdin_api.requester.APIRequester.request" )
93+ def test_install_application (self , m_request , in_params , request_data , base_absolut_url ):
94+ m_request .return_value = "response"
95+
96+ resource = self .get_resource (base_absolut_url )
97+ assert resource .install_application (** in_params ) == "response"
98+ m_request .assert_called_once_with (
99+ method = "post" ,
100+ path = resource .get_application_installations_path (),
101+ request_data = request_data
102+ )
103+
104+ @mock .patch ("crowdin_api.requester.APIRequester.request" )
105+ def test_get_applcation_installation (self , m_request , base_absolut_url ):
106+ m_request .return_value = "response"
107+
108+ identifier = "example-application"
109+ resource = self .get_resource (base_absolut_url )
110+ assert resource .get_application_installation (identifier ) == "response"
111+ m_request .assert_called_once_with (
112+ method = "get" ,
113+ path = resource .get_application_installations_path (identifier ),
114+ )
115+
116+ @pytest .mark .parametrize (
117+ "in_params, request_param" ,
118+ (
119+ ({}, {"force" : None }),
120+ ({"force" : True }, {"force" : True }),
121+ ),
122+ )
123+ @mock .patch ("crowdin_api.requester.APIRequester.request" )
124+ def test_delete_application_installation (
125+ self , m_request , in_params , request_param , base_absolut_url
126+ ):
127+ m_request .return_value = "response"
128+
129+ resource = self .get_resource (base_absolut_url )
130+ assert (
131+ resource .delete_application_installation (
132+ identifier = "example-app" , ** in_params
133+ )
134+ == "response"
135+ )
136+ m_request .assert_called_once_with (
137+ method = "delete" ,
138+ path = resource .get_application_installations_path (identifier = "example-app" ),
139+ params = request_param
140+ )
141+
142+ @mock .patch ("crowdin_api.requester.APIRequester.request" )
143+ def test_edit_application_installation (
144+ self , m_request , base_absolut_url
145+ ):
146+ m_request .return_value = "response"
147+
148+ identifier = "exmaple-application"
149+ data = [{"op" : "replace" , "path" : "/permissions" , "value" : "test" }]
150+ resource = self .get_resource (base_absolut_url )
151+ assert resource .edit_applicatoin_installation (
152+ identifier = identifier ,
153+ data = data ,
154+ )
155+ m_request .assert_called_once_with (
156+ method = "patch" ,
157+ path = resource .get_application_installations_path (identifier = identifier ),
158+ request_data = data ,
159+ )
160+
25161 @mock .patch ("crowdin_api.requester.APIRequester.request" )
26162 def test_get_application_data (self , m_request , base_absolut_url ):
27163 m_request .return_value = "response"
0 commit comments