objets_metier_rs 1.0.3

Bibliothèque Rust moderne et sûre pour l'API COM Objets Métier Sage 100c - Production Ready
//! Integration tests for objets_metier_rs
//!
//! These tests verify all 34 CIAL factories are accessible and functional.
//! Tests are marked #[ignore] and require a Sage 100c installation.
//!
//! Run with: cargo test --features sage-tests --test integration_tests -- --ignored
//!
//! Environment variables (optional):
//! - SAGE_USERNAME: Sage username (default: "<Administrateur>")
//! - SAGE_PASSWORD: Sage password (default: "")
//! - SAGE_DATABASE: Database path (default: "D:\\TMP\\BIJOU.MAE")
#![cfg(feature = "sage-tests")]

mod support;

use objets_metier_rs::errors::SageResult;
use support::connect_cial;

// ============================================================================
// SMOKE TESTS - Verify all factories are accessible
// ============================================================================

#[test]
#[ignore]
fn test_all_34_factories_accessible() -> SageResult<()> {
    let app = connect_cial()?;

    println!("Testing all 34 CIAL factories...\n");

    // Phase 1 - Core (8)
    app.factory_article()?;
    app.factory_famille()?;
    app.factory_depot()?;
    app.factory_document_vente()?;
    app.factory_document_achat()?;
    app.factory_document_stock()?;
    app.factory_document_interne()?;
    app.factory_document()?;
    println!("✓ Phase 1: 8/8 factories");

    // Phase 2 - Configuration (5)
    app.factory_gamme()?;
    app.factory_produit()?;
    app.factory_unite()?;
    app.factory_conditionnement()?;
    app.factory_glossaire()?;
    println!("✓ Phase 2: 5/5 factories");

    // Phase 3 - Parameters (16)
    app.factory_categorie_compta_vente()?;
    app.factory_categorie_compta_achat()?;
    app.factory_categorie_compta_stock()?;
    app.factory_categorie_tarif()?;
    app.factory_param_doc_vente()?;
    app.factory_param_doc_achat()?;
    app.factory_param_doc_stock()?;
    app.factory_param_doc_interne()?;
    app.factory_souche_vente()?;
    app.factory_souche_achat()?;
    app.factory_souche_stock()?;
    app.factory_souche_interne()?;
    app.factory_modele()?;
    app.factory_condition_livraison()?;
    app.factory_expedition()?;
    app.factory_periodicite()?;
    println!("✓ Phase 3: 16/16 factories");

    // Phase 4 - Advanced (5)
    app.factory_bareme_commission()?;
    app.factory_bareme_solde()?;
    app.factory_bareme_rabais()?;
    app.factory_article_stat()?;
    app.factory_arrondi()?;
    println!("✓ Phase 4: 5/5 factories");

    println!("\n✅ All 34 factories accessible!");

    Ok(())
}

#[test]
#[ignore]
fn test_factory_article_list() -> SageResult<()> {
    let app = connect_cial()?;
    let factory = app.factory_article()?;

    let _articles = factory.list()?;
    println!("✓ FactoryArticle.list() works");

    Ok(())
}

#[test]
#[ignore]
fn test_factory_arrondi_list() -> SageResult<()> {
    let app = connect_cial()?;
    let factory = app.factory_arrondi()?;

    let _arrondis = factory.list()?;
    println!("✓ FactoryArrondi.list() works (no ExistIntitule)");

    Ok(())
}