feat(veri): CSV dışa ve içe aktarma (harcamalar, plan kalemleri, varlık işlemleri)
- Excel uyumlu CSV indirme - İçe aktarma: önce deneme raporu (geçerli / zaten var / satır satır hata), onayla geçerli satırlar - Sütunlar adla, esnek tutar/tarih yazımı, ; ve , ayırıcı, Windows-1254 desteği - Varlıkta tarih sırasına göre eldekinden fazla satış denetimi - Ayarlar sayfasında Veri bölümü Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -101,6 +101,43 @@ impl TestApp {
|
||||
(status, json, set_cookie)
|
||||
}
|
||||
|
||||
/// Düz metin gövde gönderir (CSV içe aktarma)
|
||||
pub async fn post_text(&self, path: &str, s: &Session, text: &str) -> (StatusCode, Value) {
|
||||
let req = Request::builder()
|
||||
.method(Method::POST)
|
||||
.uri(format!("/api{path}"))
|
||||
.header(header::COOKIE, &s.cookie)
|
||||
.header(header::CONTENT_TYPE, "text/csv; charset=utf-8")
|
||||
.body(Body::from(text.to_string()))
|
||||
.unwrap();
|
||||
let res = self.router.clone().oneshot(req).await.unwrap();
|
||||
let status = res.status();
|
||||
let bytes = res.into_body().collect().await.unwrap().to_bytes();
|
||||
(
|
||||
status,
|
||||
serde_json::from_slice(&bytes).unwrap_or(Value::Null),
|
||||
)
|
||||
}
|
||||
|
||||
/// Metin yanıt (CSV dışa aktarma): (durum, içerik türü, gövde)
|
||||
pub async fn get_text(&self, path: &str, s: &Session) -> (StatusCode, String, String) {
|
||||
let req = Request::builder()
|
||||
.uri(format!("/api{path}"))
|
||||
.header(header::COOKIE, &s.cookie)
|
||||
.body(Body::empty())
|
||||
.unwrap();
|
||||
let res = self.router.clone().oneshot(req).await.unwrap();
|
||||
let status = res.status();
|
||||
let ct = res
|
||||
.headers()
|
||||
.get(header::CONTENT_TYPE)
|
||||
.and_then(|v| v.to_str().ok())
|
||||
.unwrap_or_default()
|
||||
.to_string();
|
||||
let bytes = res.into_body().collect().await.unwrap().to_bytes();
|
||||
(status, ct, String::from_utf8(bytes.to_vec()).unwrap())
|
||||
}
|
||||
|
||||
pub async fn get(&self, path: &str, s: &Session) -> (StatusCode, Value) {
|
||||
let (st, v, _) = self.send(Method::GET, path, Some(&s.cookie), None).await;
|
||||
(st, v)
|
||||
|
||||
Reference in New Issue
Block a user