public void AddOrUpdateMerchantTest() { // Create a provider. Provider provider = new Provider() { GlobalID = "ProviderID1", Name = "Provider1" }; // Place objects in the Context. Context = new CommerceContext(String.Empty); Context[Key.Provider] = provider; // Add the provider. ProviderOperations providerOperations = new ProviderOperations(); providerOperations.Context = Context; Assert.AreEqual(ResultCode.Created, providerOperations.AddOrUpdateProvider()); // Create a merchant with populated partner merchant records. List <PartnerMerchantAuthorizationID> partnerMerchantAuthorizationIDs = new List <PartnerMerchantAuthorizationID>(); PartnerMerchantAuthorizationID visaAuthorizationID = new PartnerMerchantAuthorizationID { Partner = CardBrand.Visa, AuthorizationID = "VisaMerchant1AuthAndSettlementID1" }; partnerMerchantAuthorizationIDs.Add(visaAuthorizationID); PartnerMerchantAuthorizationID masterCardAuthorizationID = new PartnerMerchantAuthorizationID { Partner = CardBrand.MasterCard, AuthorizationID = "MasterCardMerchant1AuthID1" }; partnerMerchantAuthorizationIDs.Add(masterCardAuthorizationID); List <PartnerMerchantSettlementID> partnerMerchantSettlementIDs = new List <PartnerMerchantSettlementID>(); PartnerMerchantSettlementID visaSettlementID = new PartnerMerchantSettlementID { Partner = CardBrand.Visa, SettlementID = "VisaMerchant1AuthAndSettlementID1" }; partnerMerchantSettlementIDs.Add(visaSettlementID); PartnerMerchantSettlementID masterCardSettlementID = new PartnerMerchantSettlementID { Partner = CardBrand.MasterCard, SettlementID = "MasterCardMerchant1SettlementID1" }; partnerMerchantSettlementIDs.Add(masterCardSettlementID); Merchant merchant = new Merchant() { GlobalID = "MerchantID1", Name = "Merchant1", GlobalProviderID = provider.GlobalID, IncludePartnerMerchantIDs = true, PartnerMerchantAuthorizationIDs = partnerMerchantAuthorizationIDs, PartnerMerchantSettlementIDs = partnerMerchantSettlementIDs }; // Place objects in the Context. Context[Key.Merchant] = merchant; // Add the merchant. Assert.AreEqual(ResultCode.Created, AddOrUpdateMerchant()); // Update the merchant (deactivate a PartnerMerchantAuthorizationID record). partnerMerchantAuthorizationIDs.Remove(visaAuthorizationID); Assert.AreEqual(ResultCode.Success, AddOrUpdateMerchant()); // Update the merchant (deactivate a PartnerMerchantSettlementID record). partnerMerchantSettlementIDs.Remove(masterCardSettlementID); Assert.AreEqual(ResultCode.Success, AddOrUpdateMerchant()); // Update the merchant (reactivate a PartnerMerchantAuthorizationID record). partnerMerchantAuthorizationIDs.Add(visaAuthorizationID); Assert.AreEqual(ResultCode.Success, AddOrUpdateMerchant()); // Update the merchant (reactivate a PartnerMerchantSettlementID record). partnerMerchantSettlementIDs.Add(masterCardSettlementID); Assert.AreEqual(ResultCode.Success, AddOrUpdateMerchant()); // Invalid global provider ID. merchant.GlobalProviderID = "invalid"; Assert.AreEqual(ResultCode.InvalidMerchant, AddOrUpdateMerchant()); merchant.GlobalProviderID = provider.GlobalID; // Without PartnerMerchants flagged not populated. bool correctExceptionThrown = false; merchant.IncludePartnerMerchantIDs = false; try { AddOrUpdateMerchant(); } catch (ArgumentException) { correctExceptionThrown = true; } finally { Context[Key.Merchant] = null; } Assert.IsTrue(correctExceptionThrown); }
public void RetrieveMerchantTest() { // Create a provider. Provider provider = new Provider() { GlobalID = "ProviderID1", Name = "Provider1" }; // Place objects in the Context. Context = new CommerceContext(String.Empty); Context[Key.Provider] = provider; // Add the provider. ProviderOperations providerOperations = new ProviderOperations(); providerOperations.Context = Context; Assert.AreEqual(ResultCode.Created, providerOperations.AddOrUpdateProvider()); // Create a merchant with populated partner merchant records. List <PartnerMerchantAuthorizationID> partnerMerchantAuthorizationIDs = new List <PartnerMerchantAuthorizationID>(); PartnerMerchantAuthorizationID visaAuthorizationID = new PartnerMerchantAuthorizationID { Partner = CardBrand.Visa, AuthorizationID = "VisaMerchant1AuthAndSettlementID1" }; partnerMerchantAuthorizationIDs.Add(visaAuthorizationID); PartnerMerchantAuthorizationID masterCardAuthorizationID = new PartnerMerchantAuthorizationID { Partner = CardBrand.MasterCard, AuthorizationID = "MasterCardMerchant1AuthID1" }; partnerMerchantAuthorizationIDs.Add(masterCardAuthorizationID); List <PartnerMerchantSettlementID> partnerMerchantSettlementIDs = new List <PartnerMerchantSettlementID>(); PartnerMerchantSettlementID visaSettlementID = new PartnerMerchantSettlementID { Partner = CardBrand.Visa, SettlementID = "VisaMerchant1AuthAndSettlementID1" }; partnerMerchantSettlementIDs.Add(visaSettlementID); PartnerMerchantSettlementID masterCardSettlementID = new PartnerMerchantSettlementID { Partner = CardBrand.MasterCard, SettlementID = "MasterCardMerchant1SettlementID1" }; partnerMerchantSettlementIDs.Add(masterCardSettlementID); Merchant merchant = new Merchant() { GlobalID = "MerchantID1", Name = "Merchant1", GlobalProviderID = provider.GlobalID, IncludePartnerMerchantIDs = true, PartnerMerchantAuthorizationIDs = partnerMerchantAuthorizationIDs, PartnerMerchantSettlementIDs = partnerMerchantSettlementIDs }; // Place objects in the Context. Context[Key.Merchant] = merchant; // Add the merchant. Assert.AreEqual(ResultCode.Created, AddOrUpdateMerchant()); // Retrieve the merchant object without the partner merchant info. Context[Key.Merchant] = null; Context[Key.GlobalMerchantID] = merchant.GlobalID; Context[Key.IncludePartnerMerchants] = false; Merchant retrievedMerchant = RetrieveMerchant(); // Compare top-level merchant info. Assert.AreEqual(merchant.Id, retrievedMerchant.Id); Assert.AreEqual(merchant.GlobalID, retrievedMerchant.GlobalID); Assert.AreEqual(merchant.Name, retrievedMerchant.Name); // Ensure partner merchant info list is in the expected state. Assert.IsFalse(retrievedMerchant.IncludePartnerMerchantIDs); Assert.IsNotNull(retrievedMerchant.PartnerMerchantAuthorizationIDs); Assert.AreEqual(0, retrievedMerchant.PartnerMerchantAuthorizationIDs.Count()); // Retrieve the merchant object with partner merchant info. Context[Key.IncludePartnerMerchants] = true; retrievedMerchant = RetrieveMerchant(); // Compare top-level merchant info. Assert.AreEqual(merchant.Id, retrievedMerchant.Id); Assert.AreEqual(merchant.GlobalID, retrievedMerchant.GlobalID); Assert.AreEqual(merchant.Name, retrievedMerchant.Name); // Compare partner merchant info list. Assert.IsTrue(retrievedMerchant.IncludePartnerMerchantIDs); IEnumerable <PartnerMerchantAuthorizationID> retrievedPartnerMerchantAuthorizationIDs = retrievedMerchant.PartnerMerchantAuthorizationIDs; Assert.IsNotNull(retrievedPartnerMerchantAuthorizationIDs); Assert.AreEqual(partnerMerchantAuthorizationIDs.Count, retrievedPartnerMerchantAuthorizationIDs.Count()); IEnumerable <PartnerMerchantSettlementID> retrievedPartnerMerchantSettlementIDs = retrievedMerchant.PartnerMerchantSettlementIDs; Assert.IsNotNull(retrievedPartnerMerchantSettlementIDs); Assert.AreEqual(partnerMerchantSettlementIDs.Count, retrievedPartnerMerchantSettlementIDs.Count()); // Compare the first partner merchant authorization ID object. PartnerMerchantAuthorizationID initialPartnerMerchantAuthorizationID = partnerMerchantAuthorizationIDs[0]; PartnerMerchantAuthorizationID retrievedPartnerMerchantAuthorizationID = retrievedPartnerMerchantAuthorizationIDs.ElementAt(0); Assert.AreEqual(initialPartnerMerchantAuthorizationID.Partner, retrievedPartnerMerchantAuthorizationID.Partner); Assert.AreEqual(initialPartnerMerchantAuthorizationID.AuthorizationID, retrievedPartnerMerchantAuthorizationID.AuthorizationID); // Compare the second partner merchant authorization ID object. initialPartnerMerchantAuthorizationID = partnerMerchantAuthorizationIDs[1]; retrievedPartnerMerchantAuthorizationID = retrievedPartnerMerchantAuthorizationIDs.ElementAt(1); Assert.AreEqual(initialPartnerMerchantAuthorizationID.Partner, retrievedPartnerMerchantAuthorizationID.Partner); Assert.AreEqual(initialPartnerMerchantAuthorizationID.AuthorizationID, retrievedPartnerMerchantAuthorizationID.AuthorizationID); // Compare the first partner merchant settlement ID object. PartnerMerchantSettlementID initialPartnerMerchantSettlementID = partnerMerchantSettlementIDs[0]; PartnerMerchantSettlementID retrievedPartnerMerchantSettlementID = retrievedPartnerMerchantSettlementIDs.ElementAt(0); Assert.AreEqual(initialPartnerMerchantSettlementID.Partner, retrievedPartnerMerchantSettlementID.Partner); Assert.AreEqual(initialPartnerMerchantSettlementID.SettlementID, retrievedPartnerMerchantSettlementID.SettlementID); // Compare the second partner merchant authorization ID object. initialPartnerMerchantSettlementID = partnerMerchantSettlementIDs[1]; retrievedPartnerMerchantSettlementID = retrievedPartnerMerchantSettlementIDs.ElementAt(1); Assert.AreEqual(initialPartnerMerchantSettlementID.Partner, retrievedPartnerMerchantSettlementID.Partner); Assert.AreEqual(initialPartnerMerchantSettlementID.SettlementID, retrievedPartnerMerchantSettlementID.SettlementID); // Finally test an invalid global merchant ID. Context[Key.GlobalMerchantID] = "invalid"; Assert.IsNull(RetrieveMerchant()); }
/// <summary> /// Retrieves the Merchant with the global ID in the context from the data store. /// </summary> /// <returns> /// * The merchant with the global ID in the context if it exists. /// * Else returns null. /// </returns> /// <remarks> /// By default, only the top-level merchant information is populated. To fully hydrate the Merchant object with its partner merchant information, set Key.IncludePartnerMerchants = true in the context. /// </remarks> public Merchant RetrieveMerchant() { Merchant result = null; List <PartnerMerchantAuthorizationID> partnerMerchantAuthorizationIDs = new List <PartnerMerchantAuthorizationID>(); List <PartnerMerchantSettlementID> partnerMerchantSettlementIDs = new List <PartnerMerchantSettlementID>(); string globalMerchantID = (string)Context[Key.GlobalMerchantID]; bool includePartnerMerchants = (bool)Context[Key.IncludePartnerMerchants]; SqlProcedure("GetMerchantByGlobalId", new Dictionary <string, object> { { "@globalMerchantID", globalMerchantID }, { "@includePartnerMerchantIDs", includePartnerMerchants } }, (sqlDataReader) => { if (sqlDataReader.Read() == true) { result = new Merchant { Id = sqlDataReader.GetInt32(sqlDataReader.GetOrdinal("MerchantId")), GlobalID = globalMerchantID, Name = sqlDataReader.GetString(sqlDataReader.GetOrdinal("Name")), GlobalProviderID = sqlDataReader.GetString(sqlDataReader.GetOrdinal("GlobalProviderID")), IncludePartnerMerchantIDs = includePartnerMerchants }; } if (includePartnerMerchants == true) { // Authorization IDs if (sqlDataReader.NextResult() == true) { while (sqlDataReader.Read() == true) { PartnerMerchantAuthorizationID partnerMerchantAuthorizationID = new PartnerMerchantAuthorizationID { Partner = (CardBrand)sqlDataReader.GetInt32(sqlDataReader.GetOrdinal("Partner")), AuthorizationID = sqlDataReader.GetString(sqlDataReader.GetOrdinal("AuthorizationID")) }; partnerMerchantAuthorizationIDs.Add(partnerMerchantAuthorizationID); } result.PartnerMerchantAuthorizationIDs = partnerMerchantAuthorizationIDs; } // Settlement IDs if (sqlDataReader.NextResult() == true) { while (sqlDataReader.Read() == true) { PartnerMerchantSettlementID partnerMerchantSettlementID = new PartnerMerchantSettlementID { Partner = (CardBrand)sqlDataReader.GetInt32(sqlDataReader.GetOrdinal("Partner")), SettlementID = sqlDataReader.GetString(sqlDataReader.GetOrdinal("SettlementID")) }; partnerMerchantSettlementIDs.Add(partnerMerchantSettlementID); } result.PartnerMerchantSettlementIDs = partnerMerchantSettlementIDs; } } }); return(result); }