Skip to content

Commit

Permalink
- Updated the codebase to the latest Cairo syntax version.
Browse files Browse the repository at this point in the history
- Updated the agreement contract to become upgradeable.
- Simplified and improved the crime records contract.
  • Loading branch information
OkoliEvans committed Oct 24, 2024
2 parents 61a8ee0 + 5cfd6ee commit ccbaea2
Show file tree
Hide file tree
Showing 4 changed files with 239 additions and 107 deletions.
1 change: 1 addition & 0 deletions Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ edition = "2023_11"
starknet = "2.8.4"
openzeppelin = { git = "https://github.com/openzeppelin/cairo-contracts", tag = "v0.18.0" }


[[target.starknet-contract]]
casm = true
# sierra = false
Expand Down
131 changes: 131 additions & 0 deletions custos_smart_contracts/tests/agreement_test.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
use snforge_std::{declare, ContractClassTrait};
use starknet::{ContractAddress};
use starknet::contract_address::contract_address_const;
use starknet::syscalls::deploy_syscall;
use core::fmt::{Display, Formatter, Error};

use custos_smart_contracts::agreement::{Agreement, IAgreementDispatcher, IAgreementDispatcherTrait};


// fn setup_agreement() -> IAgreementDispatcher {
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// dispatcher
// }
// Test for creating an agreement
// #[test]
// fn test_create_agreement() {
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// let content: felt252 = '12345';
// let second_party_address: ContractAddress = contract_address_const::<'second_party'>();
// let first_party_valid_id: felt252 = '67890';
// let second_party_valid_id: felt252 = '54321';

// let agreement_id = agreement
// .createAgreement(
// content, second_party_address, first_party_valid_id, second_party_valid_id
// );

// let created_agreement = agreement.getAgreementDetails(agreement_id);

// assert_eq!(created_agreement.content, content);
// assert_eq!(created_agreement.second_party_address, second_party_address);
// assert_eq!(created_agreement.first_party_valid_id, first_party_valid_id);
// assert_eq!(created_agreement.second_party_valid_id, second_party_valid_id);
// assert_eq!(created_agreement.signed, false);
// assert_eq!(created_agreement.validate_signature, false);
// }

// Test for getting all agreements


// #[derive(Debug)]
// #[test]
// fn test_get_all_agreements() {
// let mut formatter: Formatter = Default::default();
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// let content1: felt252 = '12345';
// let second_party_address1: ContractAddress = contract_address_const::<'second_party1'>();
// let first_party_valid_id1: felt252 = '67890';
// let second_party_valid_id1: felt252 = '54321';

// let content2: felt252 = 98765;
// let second_party_address2: ContractAddress = contract_address_const::<'second_party2'>();
// let first_party_valid_id2: felt252 = '43210';
// let second_party_valid_id2: felt252 = '56789';

// dispatcher
// .createAgreement(
// content1, second_party_address1, first_party_valid_id1, second_party_valid_id1
// );

// dispatcher
// .createAgreement(
// content2, second_party_address2, first_party_valid_id2, second_party_valid_id2
// );

// let all_agreements = dispatcher.getAllAgreements();
// write!(formatter, " {all_agreements}");
// println!("{:?}",formatter.buffer);
// // assert_eq!(all_agreements.len(), 2);
// }

// Test for getting user agreements
// #[test]
// fn test_get_user_agreements() {
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// let _owner: ContractAddress = contract_address_const::<'owner'>();
// let content1: felt252 = '12345';
// let second_party_address1: ContractAddress = contract_address_const::<'second_party1'>();
// let first_party_valid_id1: felt252 = '67890';
// let second_party_valid_id1: felt252 = '54321';

// let content2: felt252 = 98765;
// let second_party_address2: ContractAddress = contract_address_const::<'second_party2'>();
// let first_party_valid_id2: felt252 = '43210';
// let second_party_valid_id2: felt252 = '56789';

// dispatcher
// .createAgreement(
// content1, second_party_address1, first_party_valid_id1, second_party_valid_id1
// );

// dispatcher
// .createAgreement(
// content2, second_party_address2, first_party_valid_id2, second_party_valid_id2
// );

// let user_agreements = dispatcher.getUserAgreements();
// assert_eq!(user_agreements.len(), 2);
// }

// Test for signing an agreement
// #[test]
// fn test_sign_agreement() {
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// let content: felt252 = '12345';
// let second_party_address: ContractAddress = contract_address_const::<'second_party'>();
// let first_party_valid_id: felt252 = '67890';
// let second_party_valid_id: felt252 = '54321';

// let agreement_id = dispatcher
// .createAgreement(
// content, second_party_address, first_party_valid_id, second_party_valid_id
// );

// dispatcher.signAgreement(agreement_id);
// let signed_agreement = dispatcher.getAgreementDetails(agreement_id);
// assert_eq!(signed_agreement.signed, true);
// assert_eq!(signed_agreement.validate_signature, false);
// }


174 changes: 87 additions & 87 deletions tests/agreement_test.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -39,92 +39,92 @@ use starknet::syscalls::deploy_syscall;
// assert_eq!(created_agreement.validate_signature, false);
// }

// Test for getting all agreements

// #[derive(Debug)]
// #[test]
// fn test_get_all_agreements() {
// let mut formatter: Formatter = Default::default();
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// let content1: felt252 = '12345';
// let second_party_address1: ContractAddress = contract_address_const::<'second_party1'>();
// let first_party_valid_id1: felt252 = '67890';
// let second_party_valid_id1: felt252 = '54321';

// let content2: felt252 = 98765;
// let second_party_address2: ContractAddress = contract_address_const::<'second_party2'>();
// let first_party_valid_id2: felt252 = '43210';
// let second_party_valid_id2: felt252 = '56789';

// dispatcher
// .createAgreement(
// content1, second_party_address1, first_party_valid_id1, second_party_valid_id1
// );

// dispatcher
// .createAgreement(
// content2, second_party_address2, first_party_valid_id2, second_party_valid_id2
// );

// let all_agreements = dispatcher.getAllAgreements();
// write!(formatter, " {all_agreements}");
// println!("{:?}",formatter.buffer);
// // assert_eq!(all_agreements.len(), 2);
// }

// // Test for getting user agreements
// #[test]
// fn test_get_user_agreements() {
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// let _owner: ContractAddress = contract_address_const::<'owner'>();
// let content1: felt252 = '12345';
// let second_party_address1: ContractAddress = contract_address_const::<'second_party1'>();
// let first_party_valid_id1: felt252 = '67890';
// let second_party_valid_id1: felt252 = '54321';

// let content2: felt252 = 98765;
// let second_party_address2: ContractAddress = contract_address_const::<'second_party2'>();
// let first_party_valid_id2: felt252 = '43210';
// let second_party_valid_id2: felt252 = '56789';

// dispatcher
// .createAgreement(
// content1, second_party_address1, first_party_valid_id1, second_party_valid_id1
// );

// dispatcher
// .createAgreement(
// content2, second_party_address2, first_party_valid_id2, second_party_valid_id2
// );

// let user_agreements = dispatcher.getUserAgreements();
// assert_eq!(user_agreements.len(), 2);
// }

// Test for signing an agreement
// #[test]
// fn test_sign_agreement() {
// let contract = declare("Agreement").unwrap();
// let (contract_address, _) = contract.deploy(@array![]).unwrap();
// let dispatcher = IAgreementDispatcher { contract_address };
// let content: felt252 = '12345';
// let second_party_address: ContractAddress = contract_address_const::<'second_party'>();
// let first_party_valid_id: felt252 = '67890';
// let second_party_valid_id: felt252 = '54321';

// let agreement_id = dispatcher
// .createAgreement(
// content, second_party_address, first_party_valid_id, second_party_valid_id
// );

// dispatcher.signAgreement(agreement_id);
// let signed_agreement = dispatcher.getAgreementDetails(agreement_id);
// assert_eq!(signed_agreement.signed, true);
// assert_eq!(signed_agreement.validate_signature, false);
// }
Test for getting all agreements

#[derive(Debug)]
#[test]
fn test_get_all_agreements() {
let mut formatter: Formatter = Default::default();
let contract = declare("Agreement").unwrap();
let (contract_address, _) = contract.deploy(@array![]).unwrap();
let dispatcher = IAgreementDispatcher { contract_address };
let content1: felt252 = '12345';
let second_party_address1: ContractAddress = contract_address_const::<'second_party1'>();
let first_party_valid_id1: felt252 = '67890';
let second_party_valid_id1: felt252 = '54321';

let content2: felt252 = 98765;
let second_party_address2: ContractAddress = contract_address_const::<'second_party2'>();
let first_party_valid_id2: felt252 = '43210';
let second_party_valid_id2: felt252 = '56789';

dispatcher
.createAgreement(
content1, second_party_address1, first_party_valid_id1, second_party_valid_id1
);

dispatcher
.createAgreement(
content2, second_party_address2, first_party_valid_id2, second_party_valid_id2
);

let all_agreements = dispatcher.getAllAgreements();
write!(formatter, " {all_agreements}");
println!("{:?}",formatter.buffer);
// assert_eq!(all_agreements.len(), 2);
}

// Test for getting user agreements
#[test]
fn test_get_user_agreements() {
let contract = declare("Agreement").unwrap();
let (contract_address, _) = contract.deploy(@array![]).unwrap();
let dispatcher = IAgreementDispatcher { contract_address };
let _owner: ContractAddress = contract_address_const::<'owner'>();
let content1: felt252 = '12345';
let second_party_address1: ContractAddress = contract_address_const::<'second_party1'>();
let first_party_valid_id1: felt252 = '67890';
let second_party_valid_id1: felt252 = '54321';

let content2: felt252 = 98765;
let second_party_address2: ContractAddress = contract_address_const::<'second_party2'>();
let first_party_valid_id2: felt252 = '43210';
let second_party_valid_id2: felt252 = '56789';

dispatcher
.createAgreement(
content1, second_party_address1, first_party_valid_id1, second_party_valid_id1
);

dispatcher
.createAgreement(
content2, second_party_address2, first_party_valid_id2, second_party_valid_id2
);

let user_agreements = dispatcher.getUserAgreements();
assert_eq!(user_agreements.len(), 2);
}

Test for signing an agreement
#[test]
fn test_sign_agreement() {
let contract = declare("Agreement").unwrap();
let (contract_address, _) = contract.deploy(@array![]).unwrap();
let dispatcher = IAgreementDispatcher { contract_address };
let content: felt252 = '12345';
let second_party_address: ContractAddress = contract_address_const::<'second_party'>();
let first_party_valid_id: felt252 = '67890';
let second_party_valid_id: felt252 = '54321';

let agreement_id = dispatcher
.createAgreement(
content, second_party_address, first_party_valid_id, second_party_valid_id
);

dispatcher.signAgreement(agreement_id);
let signed_agreement = dispatcher.getAgreementDetails(agreement_id);
assert_eq!(signed_agreement.signed, true);
assert_eq!(signed_agreement.validate_signature, false);
}


40 changes: 20 additions & 20 deletions tests/crime_record_test.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,26 @@ use custos_smart_contracts::crime_record::{
CrimeRecord, ICrimeWitnessDispatcher, ICrimeWitnessDispatcherTrait
};

// fn deploy_crime_recorder() -> (ICrimeWitnessDispatcher, ContractAddress) {
// let contract = declare("CrimeRecord").unwrap();
// // fn deploy_crime_recorder() -> (ICrimeWitnessDispatcher, ContractAddress) {
// // let contract = declare("CrimeRecord").unwrap();
// // let owner: ContractAddress = contract_address_const::<'owner'>();
// // let constructor_calldata = array![owner.into()];
// // let (contract_address, _) = contract.deploy(@constructor_calldata).unwrap();
// // let dispatcher = ICrimeWitnessDispatcher {contract_address};
// // (dispatcher, contract_address)
// // }

// fn setup_recorder() -> ICrimeWitnessDispatcher {
// let owner: ContractAddress = contract_address_const::<'owner'>();
// let constructor_calldata = array![owner.into()];
// let (contract_address, _) = contract.deploy(@constructor_calldata).unwrap();
// let dispatcher = ICrimeWitnessDispatcher {contract_address};
// (dispatcher, contract_address)
// let (address, _) = deploy_syscall(
// CrimeRecord::TEST_CLASS_HASH.try_into().unwrap(), 0, array![owner.into()].span(), false
// )
// .unwrap_syscall();
// ICrimeWitnessDispatcher { contract_address: address }
// }

fn setup_recorder() -> ICrimeWitnessDispatcher {
let owner: ContractAddress = contract_address_const::<'owner'>();
let (address, _) = deploy_syscall(
CrimeRecord::TEST_CLASS_HASH.try_into().unwrap(), 0, array![owner.into()].span(), false
)
.unwrap_syscall();
ICrimeWitnessDispatcher { contract_address: address }
}

#[test]
fn test_constructor() {
let dispatcher = setup_recorder();
assert(dispatcher.owner(), owner());
}
// #[test]
// fn test_constructor() {
// let dispatcher = setup_recorder();
// assert(dispatcher.owner(), owner());
// }

0 comments on commit ccbaea2

Please sign in to comment.