Do not use deprecated mockito api
[idea/community.git] / plugins / stats-collector / test / com / intellij / stats / experiment / StatusInfoProviderTest.kt
1 /*
2  * Copyright 2000-2017 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.stats.experiment
17
18 import com.intellij.stats.network.service.RequestService
19 import com.intellij.stats.network.service.ResponseData
20 import com.intellij.testFramework.LightIdeaTestCase
21 import org.assertj.core.api.Assertions.assertThat
22 import org.mockito.ArgumentMatchers
23 import org.mockito.Mockito.`when`
24 import org.mockito.Mockito.mock
25
26 class StatusInfoProviderTest : LightIdeaTestCase() {
27
28
29     fun newResponse(status: String, salt: String, version: String, url: String) = """
30 {
31   "status" : "$status",
32   "salt" : "$salt",
33   "experimentVersion" : $version,
34   "urlForZipBase64Content": "$url"  
35 }
36 """
37     
38     fun `test experiment info is fetched`() {
39         val response = newResponse("ok", "sdfs", "2", "http://test.jetstat-resty.aws.intellij.net/uploadstats")
40         val infoProvider = getProvider(response)
41
42         infoProvider.updateStatus()
43
44         assertThat(infoProvider.dataServerUrl()).isEqualTo("http://test.jetstat-resty.aws.intellij.net/uploadstats")
45         assertThat(infoProvider.isServerOk()).isEqualTo(true)
46         assertThat(infoProvider.experimentVersion()).isEqualTo(2)
47     }
48
49     fun `test server is not ok`() {
50         val response = newResponse("maintance", "sdfs", "2", "http://xxx.xxx")
51         val infoProvider = getProvider(response)
52
53         infoProvider.updateStatus()
54
55         assertThat(infoProvider.isServerOk()).isEqualTo(false)
56         assertThat(infoProvider.experimentVersion()).isEqualTo(2)
57         assertThat(infoProvider.dataServerUrl()).isEqualTo("http://xxx.xxx")
58     }
59
60     fun `test round to Int`() {
61         var response = newResponse("maintance", "sdfs", "2.9", "http://xxx.xxx")
62         var infoProvider = getProvider(response)
63         infoProvider.updateStatus()
64         assertThat(infoProvider.experimentVersion()).isEqualTo(2)
65         
66         response = newResponse("maintance", "sdfs", "2.1", "http://xxx.xxx")
67         infoProvider = getProvider(response)
68         infoProvider.updateStatus()
69         assertThat(infoProvider.experimentVersion()).isEqualTo(2)
70     }
71
72
73     private fun getProvider(response: String): WebServiceStatus {
74         val requestSender = mock(RequestService::class.java).apply {
75             `when`(get(ArgumentMatchers.anyString())).thenReturn(ResponseData(200, response))
76         }
77         val decision = mock(ExperimentDecision::class.java)
78         return WebServiceStatusProvider(requestSender, decision)
79     }
80
81 }