You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: init_application.rs
    path of file: ./repos/holochain-rust/crates/core/src/nucleus/reducers
    
    the code of the file until where you have to start completion: use crate::{
    action::{Action, ActionWrapper},
    nucleus::state::{NucleusState, NucleusStatus},
    state::State,
};

/// Reduce InitializeChain Action
/// Switch status to failed if an initialization is tried for an
/// already initialized, or initializing instance.
#[allow(unknown_lints)]
#[allow(clippy::needless_pass_by_value)]
#[holochain_tracing_macros::newrelic_autotr
    
    fn can_reduce_initialize_action() {
        let dna = Dna::new();
        let action_wrapper = ActionWrapper::new(Action::InitializeChain(dna.clone()));
        let nucleus = Arc::new(NucleusState::new()); // initialize to bogus value
        let (sender, _receiver) = unbounded::<ht::SpanWrap<ActionWrapper>>();
        let (tx_observer, _observer) = unbounded::<Observer>();
        let context = test_context_with_channels("jimmy", &sender.into(), &tx_observer, None);
        let root_state = test_store(context);

        // Reduce Init action
        let reduced_nucleus = reduce(nucleus.clone(), &root_state, &action_wrapper);

        assert_eq!(reduced_nucleus.has_initialized(), false);
        assert_eq!(reduced_nucleus.has_initialization_failed(), false);
        assert_eq!(reduced_nucleus.status(), NucleusStatus::Initializing);
        assert!(reduced_nucleus.dna().is_some());
        assert_eq!(reduced_nucleus.dna().unwrap(), dna);
    }