@@ -3653,4 +3653,278 @@ public void testExecute_WhenFinderMethodIsFindingEntityList_WithSingleStringPara
3653
3653
Mockito .verify (mockDynamoDBOperations ).scan (classCaptor .getValue (), scanCaptor .getValue ());
3654
3654
}
3655
3655
3656
+ @ SuppressWarnings ({ "unchecked" , "rawtypes" })
3657
+ @ Test
3658
+ public void testExecute_WhenExistsQueryFindsNoEntity () {
3659
+ setupCommonMocksForThisRepositoryMethod (mockUserEntityMetadata , mockDynamoDBUserQueryMethod , User .class ,
3660
+ "existsByName" , 1 , "id" , null );
3661
+ Mockito .when (mockUserEntityMetadata .getOverriddenAttributeName ("name" )).thenReturn ("Name" );
3662
+
3663
+ // Mock out specific DynamoDBOperations behavior expected by this method
3664
+ ArgumentCaptor <DynamoDBScanExpression > scanCaptor = ArgumentCaptor .forClass (DynamoDBScanExpression .class );
3665
+ ArgumentCaptor <Class > classCaptor = ArgumentCaptor .forClass (Class .class );
3666
+ Mockito .when (mockUserScanResults .size ()).thenReturn (0 );
3667
+ Mockito .when (mockUserScanResults .isEmpty ()).thenReturn (true );
3668
+ Mockito .when (mockDynamoDBOperations .scan (classCaptor .capture (), scanCaptor .capture ())).thenReturn (
3669
+ mockUserScanResults );
3670
+
3671
+ // Execute the query
3672
+ Object [] parameters = new Object [] { "someName" };
3673
+ Object o = partTreeDynamoDBQuery .execute (parameters );
3674
+
3675
+ // Assert that we obtain the expected single result
3676
+ assertEquals (false , o );
3677
+
3678
+ // Assert that we scanned DynamoDB for the correct class
3679
+ assertEquals (User .class , classCaptor .getValue ());
3680
+
3681
+ // Assert that we have only one filter condition, for the name of the
3682
+ // property
3683
+ Map <String , Condition > filterConditions = scanCaptor .getValue ().getScanFilter ();
3684
+ assertEquals (1 , filterConditions .size ());
3685
+ Condition filterCondition = filterConditions .get ("Name" );
3686
+ assertNotNull (filterCondition );
3687
+
3688
+ assertEquals (ComparisonOperator .EQ .name (), filterCondition .getComparisonOperator ());
3689
+
3690
+ // Assert we only have one attribute value for this filter condition
3691
+ assertEquals (1 , filterCondition .getAttributeValueList ().size ());
3692
+
3693
+ // Assert that there the attribute value type for this attribute value
3694
+ // is String,
3695
+ // and its value is the parameter expected
3696
+ assertEquals ("someName" , filterCondition .getAttributeValueList ().get (0 ).getS ());
3697
+
3698
+ // Assert that all other attribute value types other than String type
3699
+ // are null
3700
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getSS ());
3701
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getN ());
3702
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getNS ());
3703
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getB ());
3704
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getBS ());
3705
+
3706
+ // Verify that the expected DynamoDBOperations method was called
3707
+ Mockito .verify (mockDynamoDBOperations ).scan (classCaptor .getValue (), scanCaptor .getValue ());
3708
+ }
3709
+
3710
+ @ SuppressWarnings ({ "unchecked" , "rawtypes" })
3711
+ @ Test
3712
+ public void testExecute_WhenExistsQueryFindsOneEntity () {
3713
+ setupCommonMocksForThisRepositoryMethod (mockUserEntityMetadata , mockDynamoDBUserQueryMethod , User .class ,
3714
+ "existsByName" , 1 , "id" , null );
3715
+ Mockito .when (mockUserEntityMetadata .getOverriddenAttributeName ("name" )).thenReturn ("Name" );
3716
+
3717
+ // Mock out specific DynamoDBOperations behavior expected by this method
3718
+ ArgumentCaptor <DynamoDBScanExpression > scanCaptor = ArgumentCaptor .forClass (DynamoDBScanExpression .class );
3719
+ ArgumentCaptor <Class > classCaptor = ArgumentCaptor .forClass (Class .class );
3720
+ Mockito .when (mockUserScanResults .get (0 )).thenReturn (mockUser );
3721
+ Mockito .when (mockUserScanResults .size ()).thenReturn (1 );
3722
+ Mockito .when (mockUserScanResults .isEmpty ()).thenReturn (false );
3723
+ Mockito .when (mockDynamoDBOperations .scan (classCaptor .capture (), scanCaptor .capture ())).thenReturn (
3724
+ mockUserScanResults );
3725
+
3726
+ // Execute the query
3727
+ Object [] parameters = new Object [] { "someName" };
3728
+ Object o = partTreeDynamoDBQuery .execute (parameters );
3729
+
3730
+ // Assert that we obtain the expected single result
3731
+ assertEquals (true , o );
3732
+
3733
+ // Assert that we scanned DynamoDB for the correct class
3734
+ assertEquals (classCaptor .getValue (), User .class );
3735
+
3736
+ // Assert that we have only one filter condition, for the name of the
3737
+ // property
3738
+ Map <String , Condition > filterConditions = scanCaptor .getValue ().getScanFilter ();
3739
+ assertEquals (1 , filterConditions .size ());
3740
+ Condition filterCondition = filterConditions .get ("Name" );
3741
+ assertNotNull (filterCondition );
3742
+
3743
+ assertEquals (ComparisonOperator .EQ .name (), filterCondition .getComparisonOperator ());
3744
+
3745
+ // Assert we only have one attribute value for this filter condition
3746
+ assertEquals (1 , filterCondition .getAttributeValueList ().size ());
3747
+
3748
+ // Assert that there the attribute value type for this attribute value
3749
+ // is String,
3750
+ // and its value is the parameter expected
3751
+ assertEquals ("someName" , filterCondition .getAttributeValueList ().get (0 ).getS ());
3752
+
3753
+ // Assert that all other attribute value types other than String type
3754
+ // are null
3755
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getSS ());
3756
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getN ());
3757
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getNS ());
3758
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getB ());
3759
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getBS ());
3760
+
3761
+ // Verify that the expected DynamoDBOperations method was called
3762
+ Mockito .verify (mockDynamoDBOperations ).scan (classCaptor .getValue (), scanCaptor .getValue ());
3763
+ }
3764
+
3765
+
3766
+ @ SuppressWarnings ({ "unchecked" , "rawtypes" })
3767
+ @ Test
3768
+ public void testExecute_WhenExistsQueryFindsMultipleEntities () {
3769
+ setupCommonMocksForThisRepositoryMethod (mockUserEntityMetadata , mockDynamoDBUserQueryMethod , User .class ,
3770
+ "existsByName" , 1 , "id" , null );
3771
+ Mockito .when (mockUserEntityMetadata .getOverriddenAttributeName ("name" )).thenReturn ("Name" );
3772
+
3773
+ // Mock out specific DynamoDBOperations behavior expected by this method
3774
+ ArgumentCaptor <DynamoDBScanExpression > scanCaptor = ArgumentCaptor .forClass (DynamoDBScanExpression .class );
3775
+ ArgumentCaptor <Class > classCaptor = ArgumentCaptor .forClass (Class .class );
3776
+ Mockito .when (mockUserScanResults .get (0 )).thenReturn (mockUser );
3777
+ Mockito .when (mockUserScanResults .get (1 )).thenReturn (mockUser );
3778
+ Mockito .when (mockUserScanResults .size ()).thenReturn (2 );
3779
+ Mockito .when (mockUserScanResults .isEmpty ()).thenReturn (false );
3780
+ Mockito .when (mockDynamoDBOperations .scan (classCaptor .capture (), scanCaptor .capture ())).thenReturn (
3781
+ mockUserScanResults );
3782
+
3783
+ // Execute the query
3784
+ Object [] parameters = new Object [] { "someName" };
3785
+ Object o = partTreeDynamoDBQuery .execute (parameters );
3786
+
3787
+ // Assert that we obtain the expected single result
3788
+ assertEquals (true , o );
3789
+
3790
+ // Assert that we scanned DynamoDB for the correct class
3791
+ assertEquals (classCaptor .getValue (), User .class );
3792
+
3793
+ // Assert that we have only one filter condition, for the name of the
3794
+ // property
3795
+ Map <String , Condition > filterConditions = scanCaptor .getValue ().getScanFilter ();
3796
+ assertEquals (1 , filterConditions .size ());
3797
+ Condition filterCondition = filterConditions .get ("Name" );
3798
+ assertNotNull (filterCondition );
3799
+
3800
+ assertEquals (ComparisonOperator .EQ .name (), filterCondition .getComparisonOperator ());
3801
+
3802
+ // Assert we only have one attribute value for this filter condition
3803
+ assertEquals (1 , filterCondition .getAttributeValueList ().size ());
3804
+
3805
+ // Assert that there the attribute value type for this attribute value
3806
+ // is String,
3807
+ // and its value is the parameter expected
3808
+ assertEquals ("someName" , filterCondition .getAttributeValueList ().get (0 ).getS ());
3809
+
3810
+ // Assert that all other attribute value types other than String type
3811
+ // are null
3812
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getSS ());
3813
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getN ());
3814
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getNS ());
3815
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getB ());
3816
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getBS ());
3817
+
3818
+ // Verify that the expected DynamoDBOperations method was called
3819
+ Mockito .verify (mockDynamoDBOperations ).scan (classCaptor .getValue (), scanCaptor .getValue ());
3820
+ }
3821
+
3822
+ @ SuppressWarnings ({ "unchecked" , "rawtypes" })
3823
+ @ Test
3824
+ public void testExecute_WhenExistsWithLimitQueryFindsNoEntity () {
3825
+ setupCommonMocksForThisRepositoryMethod (mockUserEntityMetadata , mockDynamoDBUserQueryMethod , User .class ,
3826
+ "existsTop1ByName" , 1 , "id" , null );
3827
+ Mockito .when (mockUserEntityMetadata .getOverriddenAttributeName ("name" )).thenReturn ("Name" );
3828
+
3829
+ // Mock out specific DynamoDBOperations behavior expected by this method
3830
+ ArgumentCaptor <DynamoDBScanExpression > scanCaptor = ArgumentCaptor .forClass (DynamoDBScanExpression .class );
3831
+ ArgumentCaptor <Class > classCaptor = ArgumentCaptor .forClass (Class .class );
3832
+ Mockito .when (mockUserScanResults .size ()).thenReturn (0 );
3833
+ Mockito .when (mockUserScanResults .isEmpty ()).thenReturn (true );
3834
+ Mockito .when (mockDynamoDBOperations .scan (classCaptor .capture (), scanCaptor .capture ())).thenReturn (
3835
+ mockUserScanResults );
3836
+
3837
+ // Execute the query
3838
+ Object [] parameters = new Object [] { "someName" };
3839
+ Object o = partTreeDynamoDBQuery .execute (parameters );
3840
+
3841
+ // Assert that we obtain the expected single result
3842
+ assertEquals (false , o );
3843
+
3844
+ // Assert that we scanned DynamoDB for the correct class
3845
+ assertEquals (User .class , classCaptor .getValue ());
3846
+
3847
+ // Assert that we have only one filter condition, for the name of the
3848
+ // property
3849
+ Map <String , Condition > filterConditions = scanCaptor .getValue ().getScanFilter ();
3850
+ assertEquals (1 , filterConditions .size ());
3851
+ Condition filterCondition = filterConditions .get ("Name" );
3852
+ assertNotNull (filterCondition );
3853
+
3854
+ assertEquals (ComparisonOperator .EQ .name (), filterCondition .getComparisonOperator ());
3855
+
3856
+ // Assert we only have one attribute value for this filter condition
3857
+ assertEquals (1 , filterCondition .getAttributeValueList ().size ());
3858
+
3859
+ // Assert that there the attribute value type for this attribute value
3860
+ // is String,
3861
+ // and its value is the parameter expected
3862
+ assertEquals ("someName" , filterCondition .getAttributeValueList ().get (0 ).getS ());
3863
+
3864
+ // Assert that all other attribute value types other than String type
3865
+ // are null
3866
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getSS ());
3867
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getN ());
3868
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getNS ());
3869
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getB ());
3870
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getBS ());
3871
+
3872
+ // Verify that the expected DynamoDBOperations method was called
3873
+ Mockito .verify (mockDynamoDBOperations ).scan (classCaptor .getValue (), scanCaptor .getValue ());
3874
+ }
3875
+
3876
+ @ SuppressWarnings ({ "unchecked" , "rawtypes" })
3877
+ @ Test
3878
+ public void testExecute_WhenExistsWithLimitQueryFindsOneEntity () {
3879
+ setupCommonMocksForThisRepositoryMethod (mockUserEntityMetadata , mockDynamoDBUserQueryMethod , User .class ,
3880
+ "existsTop1ByName" , 1 , "id" , null );
3881
+ Mockito .when (mockUserEntityMetadata .getOverriddenAttributeName ("name" )).thenReturn ("Name" );
3882
+
3883
+ // Mock out specific DynamoDBOperations behavior expected by this method
3884
+ ArgumentCaptor <DynamoDBScanExpression > scanCaptor = ArgumentCaptor .forClass (DynamoDBScanExpression .class );
3885
+ ArgumentCaptor <Class > classCaptor = ArgumentCaptor .forClass (Class .class );
3886
+ Mockito .when (mockUserScanResults .get (0 )).thenReturn (mockUser );
3887
+ Mockito .when (mockUserScanResults .size ()).thenReturn (1 );
3888
+ Mockito .when (mockUserScanResults .isEmpty ()).thenReturn (false );
3889
+ Mockito .when (mockDynamoDBOperations .scan (classCaptor .capture (), scanCaptor .capture ())).thenReturn (
3890
+ mockUserScanResults );
3891
+
3892
+ // Execute the query
3893
+ Object [] parameters = new Object [] { "someName" };
3894
+ Object o = partTreeDynamoDBQuery .execute (parameters );
3895
+
3896
+ // Assert that we obtain the expected single result
3897
+ assertEquals (true , o );
3898
+
3899
+ // Assert that we scanned DynamoDB for the correct class
3900
+ assertEquals (classCaptor .getValue (), User .class );
3901
+
3902
+ // Assert that we have only one filter condition, for the name of the
3903
+ // property
3904
+ Map <String , Condition > filterConditions = scanCaptor .getValue ().getScanFilter ();
3905
+ assertEquals (1 , filterConditions .size ());
3906
+ Condition filterCondition = filterConditions .get ("Name" );
3907
+ assertNotNull (filterCondition );
3908
+
3909
+ assertEquals (ComparisonOperator .EQ .name (), filterCondition .getComparisonOperator ());
3910
+
3911
+ // Assert we only have one attribute value for this filter condition
3912
+ assertEquals (1 , filterCondition .getAttributeValueList ().size ());
3913
+
3914
+ // Assert that there the attribute value type for this attribute value
3915
+ // is String,
3916
+ // and its value is the parameter expected
3917
+ assertEquals ("someName" , filterCondition .getAttributeValueList ().get (0 ).getS ());
3918
+
3919
+ // Assert that all other attribute value types other than String type
3920
+ // are null
3921
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getSS ());
3922
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getN ());
3923
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getNS ());
3924
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getB ());
3925
+ assertNull (filterCondition .getAttributeValueList ().get (0 ).getBS ());
3926
+
3927
+ // Verify that the expected DynamoDBOperations method was called
3928
+ Mockito .verify (mockDynamoDBOperations ).scan (classCaptor .getValue (), scanCaptor .getValue ());
3929
+ }
3656
3930
}
0 commit comments