package ru.forbion.f7cloud.core.network

import org.junit.Assert.assertNotSame
import org.junit.Assert.assertSame
import org.junit.Test

/** Фиксирует переиспользование клиента и общий пул соединений (было: новый клиент на запрос). */
class NetworkFactoryTest {

    @Test fun `одинаковые креды дают ТОТ ЖЕ экземпляр клиента`() {
        val a = NetworkFactory.newAuthedClient("user", "pass", false)
        val b = NetworkFactory.newAuthedClient("user", "pass", false)
        assertSame("клиент должен переиспользоваться, а не создаваться заново", a, b)
    }

    @Test fun `клиенты шарят общий ConnectionPool и Dispatcher`() {
        val a = NetworkFactory.newAuthedClient("u1", "p1", false)
        val b = NetworkFactory.newAuthedClient("u2", "p2", false) // другие креды
        assertSame(a.connectionPool, b.connectionPool)
        assertSame(a.dispatcher, b.dispatcher)
    }

    @Test fun `разные таймауты — разные клиенты, но общий пул`() {
        val normal = NetworkFactory.newAuthedClient("u", "p", false)
        val office = NetworkFactory.newAuthedClientForOffice("u", "p", false)
        assertNotSame(normal, office)
        assertSame(normal.connectionPool, office.connectionPool)
    }
}
